PIX on Windows
Performance tuning and debugging for DirectX 12 games on Windows
Latest posts
PIX 2010.26 – Updated Command List Execution View & Descriptor Heap Viewer
Today we released PIX 2010.26This release contains better visualizations of Command List executions in timing captures, a brand new Descriptor Heap viewer, and fixes for several user-reported issues.
Analyzing Memory usage and performance in Timing Captures
PIX Timing Captures include options to record information on the memory allocations and frees made while the capture is running. This memory data is used to compute a set of memory-related counters that can be graphed in the Metrics View and to build an allocation stack tree and virtual memory allocations list in the Range Details view. The combination of the memory counters and the allocation tree can help you analyze your title’s memory usage and to find memory leaks. A typical usage pattern is to use the counters in the Metrics View to find periods of time where something unexpected is occurring, then use t...
Capturing GPU Work
One of the most significant changes we’ve made in PIX-2008.26 has been to make the GPU capture process focus on capturing GPU work rather than API calls. This blog post will explain how PIX used to work, describe some of the drawbacks with this approach, how it works now, and the benefits we get from it. Hopefully, you’ll find this discussion of PIX’s implementation interesting and be able to use this information to better interpret the data provided by PIX. Capture Layer PIX on Windows supports GPU Captures by inserting a capture layer in-between the application and D3D. For example, PIX intercepts calls to D3...
Debugging D3D11 apps using D3D11On12
PIX is designed for use with Direct3D12 applications. That said, PIX can take advantage of Windows’ ability to convert Direct3D11 API calls into Direct3D12 calls, and thereby allow you to view your Direct3D11 application as if it were Direct3D12. It’s easy to use: just click this check box here before launching your game under GPU capture: PIX will also work if you’ve used the d3dconfig (available as of Windows May 2020 Update) tool to turn on D3D11On12 yourself via a command like d3dconfig apps ‑‑add MyGame.exe d3dconfig device force-d3d11on12=true Either of these mechanisms turns on the D3D11On12 laye...
GPU Captures: Support for D3D video
PIX on Windows version 2008.26 added support for taking GPU Captures of applications that use D3D video APIs. This means that you can now use PIX to capture regions of GPU work that involve videos, such as title screens in games or videos playing in web browsers. In this blog post, we’ll talk about how PIX captures video workloads and what is and isn’t supported. Summary In-Depth Walkthrough Here is a screenshot from a multi-frame GPU Capture of Microsoft Edge playing a video. This was captured using D3D11On12, but the workflow in PIX would be the same if we captured an ap...
Changes to the capture experience
Summary As some of you have likely noticed by now, PIX.2008-26 comes with some improvements to the overall capture and Start-Analysis experience, made possible by the rewrite of the capture layer within PIX on Windows. This is a list of the major changes – read on for a detailed explanation! API selection change - no more "ignore D3D11" Background In previous versions of PIX, there were three different options when launching your application: Default, D3D12 (force 11on12), and D3D12 (ignore D3D11). However, PIX only captures D3D12 work, so you might be wondering: what’s with the “ig...
GPU Captures: How we support placed and reserved resources
Quick Links Summary Recap: placed and reserved resources in D3D12 In D3D12, there are three types of resources: A committed resource has its own dedicated backing memory that isn’t shared with any other resource. This makes them relatively easy for PIX to capture, so we won’t discuss them here. Placed and reserved resources don’t have their own dedicated backing memory. Instead, applications must create ID3D12Heap objects that own the backing memory, and applications must define “mappings” between placed/reserved resources and the ...
PIX 2008.26: Performance Improvements
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...
PIX Release 2008.26 – Our biggest update to GPU captures since 2017
PIX 2008.26 is released today. Our biggest update to GPU captures since 2017, this release contains significantly increased framerate improvements at capture time, capture-replay performance improvements, and broader application compatibility.