PIX 1701.26 – GPU counter rollup, thread names, and high DPI UI
Most of these changes are in response to early feedback from customers. Your input is valuable to us, so please keep it coming!
New in this release:
- All GPU counter values are now rolled up from individual draw calls to their parent marker regions, so you can easily see eg. how many PS Invocations were carried out within a region. Previously we only rolled up time data, but not other types of counter. Note we do not yet roll up counters other than time to ExecuteBundle or ExecuteIndirect calls (that’s on our list for later).
- Timing captures now display thread names rather than just ID numbers. By default the thread name is taken from the root of the threadproc callstack. If you are running a recent Insiders build of Windows 10 Creators Update, aka RS2, you can also use the SetThreadDescription API to explicitly name your threads.
- GPU capture changes:
- Fixed a number of bugs in the Pipeline view.
- Fixed a crash that could occur when capturing tiled textures with dimensions that aren’t whole multiples of the tile size, or which use MSAA.
- Fixed issue due to stripping out the DENY_SHADER_RESOURCE flag during capture, but accidentally also returning this modified flag from ID3D12Resource::GetDesc, which could cause games to go down incorrect codepaths when running under GPU capture.
- Fixed bug in capture of ExecuteIndirect argument buffers (we weren’t capturing buffer resources if they were only used by an ExecuteIndirect call, but not otherwise bound to the pipeline in any way).
- Improved performance for games that use very large but not unbounded descriptor ranges. We now display descriptor ranges with more than 256 elements as a range rather than individual entries (an optimization that was previously only applied to unbounded descriptor ranges).
- We now include resources in the Resource Table even if they were not actually bound to the pipeline at any point during the frame that was captured.
- Fixed false positive warning where Run Debug Layer could erroneously complain about calls to Map, which actually came from PIX rather than the game itself.
- Increased the maximum BufferFormatComplexityLimit setting from 128 to 256 (in PIX Settings).
- The WinPixEventRuntime instrumentation DLL can now load on Windows 7. PIX itself does not support Win7, but this can be useful if you have a game that supports both D3D11 and D3D12 rendering backends, and want to instrument it for use with PIX on Win10 while still being able to run the same binaries on older operating systems. Note that to load on Win7, WinPixEventRuntime has two dependencies:
- Update for Universal C Runtime in Windows (this will be installed by default as long as the Win7 machine is current on Windows Updates)
- Visual Studio 2015 C++ redist (this is chained from the PIX installer, and of course will already be there if you installed VS 2015 and/or your game is built with that compiler)
- GPU capture crash resilience means that even if a game crashes during capture, we are still able to extract a .pix3 file containing all the events up to the point of the crash.
- Better high DPI support in the PIX UI. This now automatically adjusts to match your monitor DPI, and the scale can be adjusted in Settings or using Ctrl+Alt+Wheel: