PIX on Windows

Performance tuning and debugging for DirectX 12 games on Windows

PIX CPU Tools Reboot!

A few weeks ago we released a version of PIX that includes a Preview release of a new implementation of Timing Captures.  This release represents a significant reboot of our CPU performance tools in PIX.
We’ve gotten a lot of feedback over the last few years about how our CPU tools in PIX compare with other AAA game-focused profiling tools. 

PIX 1904.23 – New Timing Capture preview and improved DXIL shader debugging

Today we released PIX 1904.23, available for download here.  This release contains a preview of the new Timing Capture implementation and improvements to DXIL shader debugging and pixtool as well as various other improvements and bug fixes.

Preview of a new implementation of Timing Captures (see below)
HLSL variables are now available during DXIL shader debugging
New pixtool features:

Use “take-capture –winml”

PIX 1903.26 – Occupancy for Turing GPUs and Variable Rate Shading

Today we released PIX-1903.26, available for download here. This release includes support for Variable Rate Shading in GPU Captures, and it adds support for Occupancy on NVIDIA Turing GPUs such as an RTX 2080.
Variable Rate Shading
Variable Rate Shading (VRS) is a powerful new DirectX 12 feature that allows applications to significantly reduce their pixel shading work in exchange for minimal loss of visual fidelity.

PIX 1903.12 – High Frequency Counters

Today we released PIX-1903.12, available for download here. This release includes an exciting new feature in GPU Captures: High Frequency Counters.
With High Frequency Counters, developers can plot graphs of GPU hardware counter values over time and correlate ranges of the graphs back to specific events within their GPU Capture.

PIX 1901.28 – Timing Data Improvements and support for new GPUs

Today we released PIX-1901.28, which can be downloaded here. In this release we’ve made improvements to Timing Data in GPU Captures, added support for new GPUs from NVIDIA and AMD, and fixed miscellaneous other issues described below.
Timing Data Improvements for GPU Captures
We have significantly reworked how PIX collects Timing Data in GPU Captures.

PIX 1812.14 – Playback Adapter Selection

Today we released PIX-1812.14, which adds support for selecting the playback adapter, displaying unbound resources and improvements to the occupancy lane.  This release also includes various miscellaneous fixes detailed below.
Playback Adapter Selection
PIX now allows you to select the GPU on which to play back a recording.

PIX 1810.24 – Support for final DirectX Raytracing API

Today we released PIX-1810.24, which adds support for the final DirectX Raytracing (DXR) API that’s part of the Windows 10 October 2018 Update (a.k.a. “RS5”). This release also fixes miscellaneous other bugs, including an incompatibility between PIX and the latest AMD 18.40+ drivers.

PIX-1810.02 – Direct3D11 and WinML

Release Notes
Today we released PIX-1810.02. This version includes:

Support for capturing Direct3D 11 apps on RS5
Support for capturing WinML workloads on RS5
Default file extension is now .wpix
Various bug fixes

Direct3D 11 on 12 Support
On RS5 PIX can now be instructed to use a Direct3D11-to-Direct3D12 translation layer to make GPU captures of Direct3D11 applications.

PIX 1807.19 – Shader Table Viewer

Today we released PIX 1807.19 which includes a new Shader Table Viewer.

The Shader Table Viewer has been added to the Pipeline View, which provides deep insight into a raytracing shader table’s contents.

The viewer visualizes how the shader table’s bytes will be interpreted by GPU.

PIX 1806.20 – GPU Occupancy for AMD GPUs

Today we released PIX 1806.20 which provides GPU Occupancy for AMD GPUs.

GPU Occupancy for AMD GPUs provides detailed insight into how shader workloads execute on the GPU. Many thanks to our partners at AMD for helping us enable this great feature in PIX on Windows.


PIX 1908.16 – Shader debugging fixes

Today we released PIX 1908.16 which can be downloaded here. This is a servicing release that fixes a couple of issues that causes PIX to crash when inspecting or debugging shaders, otherwise it is identical to PIX 1908.02.

PIX CPU Tools: Introduction to New Timing Captures Videos

We’ve recently posted a series of 4 new videos to the PIX for Windows YouTube channel.  These videos provide an overview of the features in New Timing Captures.

Part 1 describes the improvements we’ve made to capture duration, capture open times and to the timeline itself.

Windows 10 Servicing Release KB4505903 required for instrumented CPU captures

If you’re running the 1903 build of Windows 10 (the Spring 2019) update, you must have KB4505903 installed to take Function Summary, Callgraph, and Tracked Functions captures.  Without this update, your title will hang when taking one of these captures.
To check whether you have this update,

PIX 1908.02 – Fixes for customer issues, plus DXR and New Timing Capture improvements

Today we released PIX 1908.02, which can be downloaded here. This release fixes miscellaneous bugs that were reported to us by customers. It also adds new CPU features to New Timing Captures, and adds some final touches to the new DirectX Raytracing (DXR) Pipeline View in GPU Captures.

GPU timing data in New Timing Captures

GPU timing data was added to the New Timing Captures preview feature in the PIX 1906.14 release.  This allows developers to view GPU work submission and execution, including async compute.
Getting Started
The application should be launched with the following GPU timings checkbox checked in the options to enable timing data collection.

PIX 1906.26 – Minor update fixes PIX on Insider Preview builds of Windows

Today we released PIX 1906.26, available for download here. This release makes PIX compatible with the latest Insider Preview builds of Windows.

PIX now works on latest Inside Preview builds of Windows.
PIX no longer pops up an error message when trying to use a plugin with an unsupported GPU configuration (eg SLI).

PIX 1906.14 – GPU Timing in New Timing Captures

Today we released PIX 1906.14, available for download here.  This release adds GPU timings to the New Timing Capture preview and further improvements to DXIL shader debugging.

New Timing Capture Improvements

Support for GPU timing data (see below)
Many other usability improvements,

PIX CPU Tools: Finding and Analyzing Context Switches

A context switch occurs when a CPU core switches from executing code on one thread, to executing code on a different thread, or going to idle.  When the OS switches the thread that is running on a CPU, it must save and restore state both for the thread that is being switched out,

PIX CPU Tools: Populating the Range Details view

The most common way to populate the Range Details view in the new implementation of PIX Timing Captures is to drag select a range of time in the Timeline using the mouse.  When you complete your selection, Range Details is populated with the data from all Thread and Core lanes for the range of time you selected. 

PIX CPU Tools: Graphing PIXReportCounter values in the Metrics View

The Metrics view in New Timing Captures allows you to graph the duration of PIX CPU events and any counter values that are reported using the PIXReportCounter API.  Graphing event durations is fairly discoverable in the UI, but I think it’s less well-known that counter values can be graphed as well.