Intel® Graphics Performance Analyzers 2023.2 Release



Say hello to some of the latest improvements for the Intel® Graphics Performance Analyzers (Intel® GPA) tool suite and Intel® GPA Framework.

Graphics Monitor/Graphics Frame Analyzer

Frame [DX12]

We have added a new frame capture mode in Graphics Monitor. Several of our engineers who work on game research have lamented that we have not updated our frame capture mode to collect DXR and Mesh Shader data. You can still capture frames with normal Frame mode. However, if you want to capture a single frame that implements DirectX* 12 Ultimate features, use the new Frame [DX12] mode in Graphics Monitor. This mode is based on Intel® GPA Framework's latest capture/playback framework, which supports DirectX* 12 Ultimate features, including Mesh Shaders and DXR.

select new frame mode Frame[DX12]
Select new frame mode Frame[DX12]


We have added compression options for Stream and Frame[DX12] capture modes. This option can reduce the required storage space for captured streams and frames by up to 30%.

select stream compression or frame compression
Select stream compression in the Stream options or frame compression in the Frame options.

Graphics Frame Analyzer

Improved Error Messages

Intel® GPA now produces improved error messages, allowing for easier troubleshooting of stream and frame opening issues.

Have you encountered that ethereal ...

       An error has occurred. Contact the administrator.

 ... message when attempting to open a frame? That message was troublesome for everyone: you and us. Why? Well, because it gives no information about where the error occurred. We knew that was an issue and have taken time to address it.

Intel® GPA Framework 


Many times a game has multiple processes and you want to attach to a particular one of those processes.For times when you need to specify which process to attach to, we have added an auto hooking feature. Now you can specify which process to attach to at launch. Either using the process number or a regular expression.

./gpa-injector.exe --layer capture -a <game exe> -C “attach Nth 2”

In addition to selecting the process number, you can select a process using a regex expression.

./gpa-injector.exe --layer capture -a <game exe> -C “regex-cmd some-arg”
add flag to exe; use that flag when invoking auto hooking
Add flag to exe; Use that flag when invoking auto hooking.


Further, we have added 3 flavors. The most useful of those perhaps, is busy. When your game starts very quickly, it is possible that GPA will not have time to attach to the intended process. We have added the busy flavor to cause busy waits on the threads until the indicated process starts, thereby giving us time to attach. WARNING: Only use this for games that start quickly - filling the threads with busy waits for any length of time will severely limit your computer's progress.

./gpa-injector.exe --layer capture -a <game exe> -C “regex-cmd some-arg” --attach-flavor busy

Cross-GPU Capture/Playback (Tech Preview)

For times when you are opening frames on platforms different from the platforms they were captured on, we have done some memory re-allocation magic to account for varying texure and acceleration structure sizes that cause platform dependence. This new approach allows successful restoration of textures and acceleration structures in a platform agnostic way, thus enabling you to play frames back on varyious platforms.

./gpa-player.exe <stream> --post-layer d3d12-cross-gpu-suboptimal-layer
Demonstrating failure on a different GPU, then, with the new option, success (player.exe opens as expected - as shown below).
Demoing that the player works on a different GPU.
Demonstrating that gpa-player works on a different GPU.

Dump State Layer

We are always working on ways to get you the data you need for optimal profiling of your games. In this release we added a dump state layer to allow you to inspect the draw/dispatch calls by dumping state information into text files. For the following example, assume:

  • frame 5 has only 15 draw calls
  • frame 6 has 10 draw calls
  • frame 7 has 1200 draw calls
./gpa-injector –layer dump-state-layer:frames[5..7],draws[12..20] <stream or exe>

For each draw call the following txt files will be created: a state file, and potentially vertex-shader, pixel-shader, hull-shader, geometry-shader, and domain-shader files. So . . .

  • frame 5 - draw calls 12, 13, 14 and 15 will produce potentially 4 * 6 text files
  • frame 6 - there are no draw calls in the range 12..20
  • frame 7 - draw calls 12..20 will produce potentially 9 * 6 text files

Resulting in potentially 24 + 54 = 78 files. Thus, you may not want to choose very many frames and draw calls.

./gpa-injector –layer dump-state-layer:frames[5..7],draws[12..20] <stream or exe>

For draw calls: The ordering of the calls is either command list order, or GPU execution order.