Microsoft has introduced PIX on PC and is hoping that the software could allow developers to better optimize gaming titles for the DirectX 12 code path.
If you don’t know, PIX is already available for the Xbox One and it allows developers to optimize memory and GPU resources on the platform. In fact, many developers did confirm that it helped a lot as Xbox memory architecture is quite complex.
PIX on PC to help Devs with DirectX 12 Optimization
With DirectX 12, Microsoft promised to bring “console-like” efficiency to PC, or in other words, low-level optimization for the GPU. Meaning, you don’t have a high-level of abstraction which reduces CPU utilization, as well as allows developers to do things like really pushing compute on the GPU.
What’s more significant is the fact that CPUs could now talk to the GPU on a multi-core basis. With the introduction of PIX on PC, you should at least in theory start seeing the developers optimizing the software they’re running. According to Microsoft, PIX on Windows offers five main 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 for 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.
A beta release of PIX is now available for download here. The recommended requirements to run PIX include a Direct3D 12 GPU with the latest drivers, 32GB of system RAM and Windows 10 build 14393 (Anniversary Update, aka RS1) with latest updates.
There are a few limitations to using PIX on PC however. These are:
- PIX only supports capturing D3D12 content, not D3D11 or 11on12.
- PIX only supports 64-bit apps (both UWP and Win32). PIX does not support x86 apps.
- PIX only captures data from the specific process that it launched or attached to. 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 device 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 timeline as being executed in a non-parallel fashion.
- PIX does not support multi-GPU enabled apps. You can use it on a machine with multiple GPUs, but PIX will always capture/playback on the primary adapter.
Even with those limitations, this just goes to show that Microsoft is trying hard to convince developers to move to Windows 10 and DirectX 12. This is a good news for gamers indeed because once developers learn how to optimize games for DirectX 12, we’ll get better running games on PC and consoles in DX12 mode.
This applies to both PC and Microsoft’s upcoming Xbox Scorpio console. Remember that the more developers make use of the Universal Windows Platform, more games will make their way to Xbox One and Scorpio.
Once a developer creates a game for Windows 10 PC in UWP environment, it will require almost no extra work to make it run on Xbox platform. In other words, using the very same resources a developer creates one game or application and it runs all across Windows 10 devices – as long as the device is powerful enough to run it.