August 27th, 2020

PIX 2008.26: Performance Improvements

Austin Kinross
Dev Lead

Earlier today we released PIX on Windows version 2008.26, featuring a 100,000+ line rewrite of our component that takes GPU Captures. Morgan has described this release’s functional improvements in her blog post, but here we’ll take a closer look at the new performance improvements. 

 

Recap: GPU Captures in PIX on Windows 

As a reminder, developers can use GPU Captures in PIX to record the D3D12 GPU work performed by a region of their game or application, and then later play back the work in a controlled environment. This controlled environment allows developers to debug their GPU work or to analyze its performance.  

To take a GPU Capture in PIX on Windows, you must first launch your game or application under GPU Capture through the PIX UI. You can then interact with your game/application (for example: by playing the game) until you reach a region that you would like to capture. When ready, you can trigger a PIX capture, and PIX will start to serialize the D3D12 GPU work into a capture file. 

 

Capture-Time Framerate Improvements 

We’re proud to share that we have dramatically increased the framerates of games launched under GPU Capture in PIX on Windows. In all cases that we’ve seen, DirectX 12 games that used to run at low framerates under GPU Capture now run at much higher framerates. They will typically run fast enough that you won’t even notice that PIX is present, which will make it a lot easier to play the game and get to the region that you’d like to capture. 

Here is a selection of games and the improvements they’ve seen:

(Each game’s numbers were taken with the default settings for each GPU, except that VSYNCs were turned off and any dynamic settings were changed to a fixed value.)

We have seen similar improvements in many other AAA games, including games from third-party studios who have tried out preview builds over the past few months.  

As you’d expect, PIX on Windows continues to support all D3D12 functionality that we’ve seen DirectX 12 applications use, including: 

  • Tiled/reserved resources 
  • DirectX Raytracing 
  • DirectX 12 Ultimate (Mesh Shaders, VRS, Sampler Feedback) 
  • DXIL (including shader debugging) 

All modern DirectX 12 hardware from AMD, Intel, NVIDIA and Qualcomm continues to be supported too. 

Some games/applications ran at high framerates with older versions of PIX, and they continue to run well with the latest version. These games typically either are GPU bound, run at very high framerates outside PIX, or make fewer calls into the D3D runtime per frame than other games. 

 

Replay-Time Performance Improvements 

In addition to capture-time performance improvements, this rewrite also unblocks replay-time performance improvements that were not feasible in previous versions of PIX. We have already implemented some of these improvements in this release, and we will continue to implement more of them over the coming months. We anticipate that, when implemented, the combination of these improvements will significantly improve replay speed for all captures in future versions of PIX. 

In the meantime, the improvements in this release should make performance analysis features (such as Collect Timing Data or High Frequency Counters) much faster for some games/applications. Games that use tiled/reserved resources are particularly likely to see improvements.  

 

Feedback 

We hope that you’ll like these improvements. Please get in touch with us if you experience problems with this new version of PIX, or if you have any feedback or suggestions!

 

Special Thanks

  • Various game studiosincluding Microsoft Game Studios teams and third-party studiosfor their help testing preview PIX builds over the past few months. 
  • GPU IHVs for their help testing preview builds on their hardware. 
  • Nixxes, for permission to use Shadow of the Tomb Raider in these charts. 
Category
PIX

Author

Developer on the PIX on Windows team at Microsoft.

0 comments

Discussion are closed.