PIX on Windows
Performance tuning and debugging for DirectX 12 games on Windows
Latest posts

PIX Timing Captures require full PDBs

PIX Timing Captures require a title’s PDBs to be generated using the /DEBUG:FULL linker switch. PDBs generated with the /DEBUG:FASTLINK linker switch are not sufficient. Note that, depending on the version of Visual Studio you are using, the linker switch /DEBUG specified without the FULL or FASTLINK option, may default to FASTLINK. I realized the other day that PIX isn't displaying a warning message if it finds a FASTLINK PDB. We'll add a warning to PIX in an upcoming release, but in the meantime I thought I'd make a note of it here as a few customers have contacted us recently about this issue. More deta...

Finding memory leaks using Timing Captures

PIX Timing Captures include several analysis features aimed at making it easy to find memory leaks in your title. These features, coupled with the ability to take captures for extended periods of time, are a compelling combination for finding leaks, even those that can take a considerable amount of time to manifest themselves. To enable the leak tracking features, select one or both of the memory tracking options when starting a Timing Capture. The easiest way to visualize the amount of memory in use over the duration of the capture is to use the Metrics View. The Memory Usage counters under the Deriv...

WinPixEventRuntime 2102.09: Minor fixes and optimizations

It’s hard to believe it’s been over a year since our last update to WinPixEventRuntime! This update brings a couple of minor fixes and optimizations, which should hopefully lead to a slightly better quality of life when using the runtime 😊 You can download the new runtime here. Release notes: Known Issue: As always, feel free to reach out to us with any questions or feedback on our Discord Server, or simply use the little feedback button in the top right corner of your PIX window.

Filtering CPU Samples by one or more PIX Events

The Sampling Profiler included in the 2101.27 release of PIX on Windows includes a novel new feature that allows you to filter the analysis of CPU samples down to just those samples that were collected during the time when one or more PIX events was running. This capability is particularly useful for seeing which functions ran the most frequently, or took the most time, in places where your title is only sparsely instrumented with PIX events. For example, the following picture shows several CPU frames in the Timeline view of a Timing Capture. The top-most frame event is called MainLoop. It's clear that the ...

Function Summary and Callgraph captures are now deprecated

Function Summary and Callgraph captures are deprecated starting with the 2102.27 release of PIX on Windows. The workflows supported by these legacy capture types have been replaced with enhancements we're recently made to the Sampling Profiler that is part of Timing Captures. These enhancements include the ability to group the tree of aggregated CPU samples by thread or core, and the ability to designate a function as a focus function. In addition, the integration of function data into Timing Captures enables some profiling scenarios that weren't possible before, such as the ability to restrict the set of C...

PIX 2101.27: AMD raytracing counters, DXIL improvements, and more

Today we released PIX version 2101.27, which can be downloaded here. This release adds support for new GPUs and counters to AMD’s PIX plugin, improves the DXIL debugging experience, contains several enhancements to the CPU sampling profiler, and adds many other smaller improvements. AMD plugin improvements This release includes a new AMD plugin. This plugin adds support for AMD RDNA™ 2 Radeon™ RX 6000 series GPUs, which means that PIX features such as Event List Counters and High Frequency Counters are now available on these GPUs.  The plugin also adds support for new raytracing counters on RX 6...

New documentation page: Analyzing CPU samples in Timing Captures

Hi PIX users, I've added a new page to our PIX for Windows documentation set. The new page describes how to use Timing Captures to analyze CPU samples. Collecting CPU samples allows you to analyze how functions within your title are impacting performance. We've been steadily adding new features to PIX's sampling profiler and will continue to do so in the new few releases. Steven Pratschner - PIX Team

Analyzing CPU samples in Timing Captures

PIX includes a CPU sampling profiler that can optionally be run when taking a Timing Capture. Collecting CPU samples allows you to analyze how functions within your title are impacting performance. Viewing CPU samples is useful in several scenarios. For example, CPU samples can help you determine what code is running on a thread or core for portions of your title that either have sparse or no instrumentation with PIX events. Diagnosing performance issues using CPU samples in this scenario is more efficient than having to add additional instrumentation to your title, rebuild and redeploy. In addition, lookin...

New documentation page: Analyzing Win32 File IO performance using Timing Captures

Hi all, I've added another page to our PIX for Windows documentation set. The new page describes how to use Timing Captures to analyze file io performance. The addition of file io data to Timing Captures replaces the separate file io capture type that we removed from PIX a few releases ago. Steven Pratschner - PIX Team