PIX 2003.26 – DirectX 12 Ultimate and DXIL debugging

Damyan Pepper

Today we released PIX 2003.26 which can be downloaded here. This release contains support for DirectX 12 Ultimate, source-level debugging of DXIL shaders, a new GPU capture timeline, CPU/GPU event correlation in new timing captures and many more bug fixes and performance improvements.

DirectX 12 Ultimate Support

PIX on Windows now has initial support for all the DirectX 12 Ultimate features:

  • DirectX Raytracing Tier 1.1
  • Mesh shaders
  • Sampler Feedback

Variable Rate Shading support in PIX was first added in PIX 1903.26 and continues to be supported now!

Mesh shader output viewer in action:

DXIL Source Level Debugging

We’ve updated PIX’s shader debugging engine to fully support source-level debugging of DXIL shaders, including values and types for local variables and stack navigation.

New GPU Capture Timeline

The GPU capture timeline has been updated; text now shows up in event blocks and general performance has been improved.

New Timing Captures CPU/GPU Correlation

New timing captures now indicate the relationship between a GPU command’s recording and its execution on the GPU.

Known issues

Timing Capture file format change

The Timing Capture file format has changed in this release of PIX. Timing Captures taken with previous versions of PIX cannot be opened in this new version of PIX. Attempting to open an old capture will present the following error:

To open an old capture, install the version of PIX that was used to take the capture. Version information was not recorded in captures prior to this release of PIX, so unfortunately PIX cannot currently identify which version was used to take a capture. Going forward, the error message PIX presents when you attempt to load a capture with an old format will includes the version number of PIX used when the capture was taken.

Multiple versions of PIX can be installed side-by-side on the same PC, should you need to install older versions to view older Timing Captures. Remember to uncheck the “Replace any previously installed versions” checkbox when running the installer:

Change List


  • Fix crash when there’s an empty PIXOptions node in the settings XML file
  • Output View: put the category combobox and the clear button in the top tool bar
  • Fix crash with old timing captures when the process exits before the capture starts

New Timing Captures

  • Optimize handling of GPU API markers
  • Ensure capture directory created when starting capture
  • Improved error reporting when user does not have permission to start ETW logging
  • Improve UI performance when selecting a PIX event with a large number of stalls
  • Fix memory leak
  • Add support for capturing more than 255 cores
  • Fix stacks for fastlink pdb files
  • Add prompt to cancel symbols for save
  • Thread names now properly appear when a capture is taken for a title that was launched suspended.

GPU Captures

  • Add support for ID3D12Device1::SetEventOnMultipleFenceCompletion
  • Fix crash due to invalid/missing timing data being reported
  • Updated formatter table with new DXGI formats added in Vibranium
  • Correctly handle D3D12_HIT_GROUP_DESCs whose constituent shaders are all NULL
  • Detect underflowed timing values and clamp to 0 This prevents the timeline from getting blown out to ulong.MaxValue visible time, which is less than useful.
  • Wait until document load is complete before setting enabling edit & continue
  • Texture Viewer: Reword multisample to sample count
  • Fix include path issues for shader edit & continue
  • High Frequency Counters: fix issue dropping samples when first EoP time equals BeginSubmission time
  • Fix various issues with VRS
  • Fix race conditions with Mesh Viewer
  • DXIL Shader debugging: various fixes involving inf/nans
  • Shader intellisense updates (highlighting, tooltips)
  • DXIL register formats: display integer (decimal) and hex when requested.
  • DXIL shader debugging: NRE possible if user passes a macro with embedded spaces but no surrounding quotes
  • Fix shader edit & continue: older compilers can use /D, and need to strip -Qstrip_debug
  • Fix open command list tracking when command lists are destroyed
  • Update to latest AMD plugin:
    • fix start analysis failure when using remote desktop
    • fix Invalid Counter Generation Error on Unsupported R9 290
    • fix collecting occupancy when there are PIX events around Present()
  • Update to latest NVIDIA plugin
  • Fix crash in shader access tracking in a trace containing a TDR
  • Skip capture of ID3D12CompatibilityQueue’s methods rather than fail capture
  • Add support for new D3D12_RESOURCE_STATEs
  • Wave Tracing: allow plugin to return waves associated with EventID = -1
  • Fix capture/replay support for apps using Shader Model 6_4+
  • Fix capture/replay of reserved non-power-of-two BC textures
  • DXR: Show BLAS build buffers (vertices, indices etc) in the Pipeline View
  • Added notification to PIX that the GPU disassembly may have changed after collecting counters for a GPU capture.
  • Switch to new GPU timeline
  • High Frequency Counters: enable perf optimization in NVIDIA plugin when possible
  • Minimal support for out-of-proc shared heaps+resources
  • Tiled Resources: Fix capture/replay of a tiled texture that’s mapped into a heap after another texture’s weirdly-sized packed mips
  • Mesh Viewer + PC Acceleration Structure Viewer: add checkbox to flip horizontally
  • Expression filtering fixes; nicknaming
  • Better column expression type defaults, and fix nicknaming when counter set (provider) changes
  • Resource Tracking: correctly handle SetRootSignature() call with root sig that’s already set on the command list
  • Show missing PDB names
  • Make missing PDB path copyable
  • Replace non-identifier characters in shader type names with underscores
  • Make “unsupported API” dialog say sensible things
  • Add new Object Name column for GPU Resource View
  • Fix crash when <del> is pressed in empty buffer formatter box
  • Fix capture of apps explicitly setting null global root signature in their DXR state objects
  • DXR Tier 1.1: Finish AddToStateObject support, + add basic inline raytracing support
  • Fix support for ResizeBuffers1


Discussion is closed.

Feedback usabilla icon