Home » Blogs » Announcing GFXReconstruct (v0.9.17) with DirectX®12 and DirectX® Raytracing support

Announcing GFXReconstruct (v0.9.17) with DirectX®12 and DirectX® Raytracing support

Rodrigo Urra
Rodrigo Urra

Rodrigo Urra is the GFXReconstruct technical lead for the Developer Tools Group at AMD. Links to third party sites are provided for convenience and unless explicitly stated, AMD is not responsible for the contents of such linked sites and no endorsement is implied.

link to Announcing GFXReconstruct (v0.9.17) with DirectX ®12 and DirectX ®Raytracing support

AMD (Advanced Micro Devices, Inc.) and LunarG are pleased to announce DirectX®12 (D3D12) and DirectX® Raytracing (DXR) support for the GFXReconstruct capture/replay tool.

LunarG initially developed GFXReconstruct to capture/replay Vulkan® applications. This free-use, open-source tool has seen broad adoption by Vulkan developers. Through a joint venture between AMD and LunarG, GFXReconstruct has been extended to also support capture/replay of applications using the DirectX ecosystem.

D3D12 is the de facto standard for gaming on the Windows platform and has been used in the development and deployment of hundreds of titles since its release. The addition of D3D12 support to GFXReconstruct provides developers with another valuable tool to help analyze and debug D3D12 applications. Plus, since this latest version of GFXReconstruct continues to be made available through an open-source license, developers can use this tool freely and can choose to contribute back to the community by providing enhancements, support, or bug fixes.

Main components

The GFXReconstruct package is a customizable Swiss army knife when it comes to capture/replay tools. On the capture side, GFXReconstruct provides proxy libraries that record graphics API calls to a capture file on disk. On the replay side, GFXReconstruct provides a series of command-line tools and scripts to read and process capture files.

The most frequently used capture file processing tools are gfxrecon-replay and gfxrecon-optimize. The gfxrecon-replay tool replays capture files, and the gfxrecon-optimize tool produces new capture files with improved replay performance. Please see the documentation for more information on all the tools available in GFXReconstruct.

The software architecture behind GFXReconstruct is also quite extensible. It is written in such a way that developers can implement support for capturing other graphics APIs and develop custom consumers/tools for processing the content of capture files.

How to use GFXReconstruct

Let’s capture and replay AMD’s Hybrid Shadows sample to illustrate how one might use GFXReconstruct. We recommend starting with applications like this to learn the tool before moving onto heavier workloads. For simplicity, this example will use GFXReconstruct provided in a release archive with default settings.

After decompressing a release archive we will find:

  1. Proxy libraries (in DLL form) inside a d3d12_capture folder
  2. Tools and consumers (in executable and script form) at the root

Capturing

First, we identify GFXReconstruct’s proxy libraries and copy them beside our application executable, highlighted below:

Second, we run the application as we normally would, and reach a scene of interest:

Third, we observe the creation of our GFXReconstruct .gfxr capture file, which will be ready for consumption once the application is closed. By default, the capture file will be created in the application’s working directory, highlighted below:

That’s it!

We have now obtained a “full” capture file which contains everything from application launch until its termination. GFXReconstruct can also obtain “trimmed” capture files which only contain a user-defined frame range. This is helpful when seeking specific frames that exclude loading screens. To do this, we would change some capture-time settings as explained in the documentation.

Replaying

Simply run: gfxrecon-replay.exe <capture-file.gfxr>

At this point we can analyze the captured workload via a means of our choosing. We can collect performance metrics, debug visual artifacts, or whatever needs to be done – all without needing to run the live application.

Replaying faster

Another important piece in this workflow is optimization of D3D12 capture files. This is done by running the gfxrecon-optimize tool on a capture file, which achieves two important things:

First, the optimizer will trim out creation of unreferenced pipeline state objects (PSOs). This action can dramatically reduce capture file load time for cases when the source application created thousands of PSOs that were not referenced in the captured frames.

Second, the optimizer will analyze a DXR workload and inject specialized commands that help gfxrecon-replay quickly fetch the GPU virtual addresses it needs. This action allows replay performance to match the original application more closely.

We highly encourage users to leverage the optimizer in their workflow for those interested in the best replay experience with GFXReconstruct. More details are available in the documentation.

Download!

This overview only scratches the surface.

Head over to GitHub to get the code, read docs, and dig deeper!

GPU Reshape

GPU Reshape

GPU Reshape is a powerful tool that leverages on-the-fly instrumentation of GPU operations with instruction level validation of potentially undefined behavior.

Radeon™ Memory Visualizer 1.7 is out now

Radeon™ Memory Visualizer v1.7 introduces one of the most anticipated new features: improved support for aliased resources in the Resource overview pane. Read on for details of this features and more.

AMD Radeon GPU Detective logo

Radeon™ GPU Detective

Radeon™ GPU Detective (RGD) is a tool for post-mortem analysis of GPU crashes. RGD can capture AMD GPU crash dumps from DirectX® 12 apps.

Radeon Raytracing Analyzer

Radeon™ Raytracing Analyzer

Radeon™ Raytracing Analyzer (RRA) is a tool which allows you to investigate the performance of your raytracing applications and highlight potential bottlenecks.

Rodrigo Urra
Rodrigo Urra

Rodrigo Urra is the GFXReconstruct technical lead for the Developer Tools Group at AMD. Links to third party sites are provided for convenience and unless explicitly stated, AMD is not responsible for the contents of such linked sites and no endorsement is implied.

Enjoy this blog post? If you found it useful, why not share it with other game developers?

You may also like...

Getting started: AMD GPUOpen software

New or fairly new to AMD’s tools, libraries, and effects? This is the best place to get started on GPUOpen!

AMD GPUOpen Getting Started Development and Performance

Looking for tips on getting started with developing and/or optimizing your game, whether on AMD hardware or generally? We’ve got you covered!

GPUOpen Manuals

Don’t miss our manual documentation! And if slide decks are what you’re after, you’ll find 100+ of our finest presentations here.

AMD GPUOpen Technical blogs

Browse our technical blogs, and find valuable advice on developing with AMD hardware, ray tracing, Vulkan®, DirectX®, Unreal Engine, and lots more.

AMD GPUOpen videos

Words not enough? How about pictures? How about moving pictures? We have some amazing videos to share with you!

AMD GPUOpen Performance Guides

The home of great performance and optimization advice for AMD RDNA™ 2 GPUs, AMD Ryzen™ CPUs, and so much more.

AMD GPUOpen software blogs

Our handy software release blogs will help you make good use of our tools, SDKs, and effects, as well as sharing the latest features with new releases.

AMD GPUOpen publications

Discover our published publications.