Microsoft PIX is designed to be used as a performance tuning and debugging tool for game developers.
Microsoft PIX can be used for analyzing DirectX 12 games on Windows as well. It utilizes the GPU capture process to render single frames. The GPU capture process gives developers the ability to delve deep into the specific process details.
Developers will find the ability to tune their DirectX 12 games, keeping them relevant in the ever-competitive pc game development arena.
You can also install and use multiple versions of Microsoft PIX side-by-side. To retain a previous version while installing a newer one, uncheck any previously installed versions box in the installer.
Microsoft PIX on Windows provides five primary modes of operation:
GPU captures for debugging and analyzing the performance of Direct3D 12 graphics rendering.
Timing captures for understanding the performance and threading of all CPU and GPU work carried out by your game.
Function Summary captures accumulate information about how long each function runs and how often each is called.
Callgraph captures trace the execution of a single function.
Memory Allocation captures provide insight into the memory allocations made by your game.
Microsoft PIX only supports capturing D3D12 content, not D3D11 or 11on12.
Microsoft PIX only supports 64-bit apps (both UWP and Win32). PIX does not support x86 apps.
Microsoft PIX only captures data from the specific process that it launched or was attached. It does not support child processes. If your title uses multiple processes, you will need to bypass any client/launcher processes and have PIX launch/attach the main game executable.
Counter values other than timing in the event list are not currently rolled up to their parent bundle or marker region.
GPU captures are not generally portable between different GPUs or even different drivers on the same GPU. PIX will warn if you attempt to run analysis on a capture whose capture differs from the current playback device. You can continue past this warning, but be aware there may be compatibility issues that cause it to fail.
GPU captures do not currently overlap GPU work on different queues. If your app uses asynchronous compute to execute rendering and compute work simultaneously, it will show up in the PIX timeline as being executed in a non-parallel fashion.
Microsoft PIX does not support multi-GPU-enabled apps. You can use PIX on multiple GPU machines, but PIX will always capture/playback on the primary adapter.
If you are an Xbox developer, use the version of PIX that is included with the XDK instead.