Skip to content

Conversation

@dgraves
Copy link
Contributor

@dgraves dgraves commented Dec 12, 2025

This is a draft for initial support of the new DX12 Recreate At feature for buffer and heap GPU virtual addresses. The implementation works like this:

  • During capture, retrieve the GPU VA range for each buffer or heap that is created and write these individual GPU VA ranges to the capture file using a new meta-data block.
  • At replay, GPU VA ranges must be reserved prior to device creation, so using the GPU VA data in the capture file requires either of the following options. If neither option is detected at replay, a message will be logged to warn that the file contains unused 'Recreate At' data, with instructions for using either of the following:
    • Specify the new --scan-recreate-at replay option to pre-process the file and collect all of the GPU VA ranges, which will be provided to the replay consumer to be reserved at device creation.
    • Use gfxrecon-optimize to process the file, collecting all of the GPU VA ranges and writing them to a single meta-data block at the start of the file.

Two new meta-data types were added for Recreate At support:

  • SetGpuVirtualAddressRangeCommand to be written at capture to record the individual GPU VA ranges associated with each buffer/heap.
  • ReserveGpuVirtualAddressRangesCommandHeader to be written by the optimizer as a single table of GPU VA ranges to be reserved at device creation.

The gfxrecon-optimize support has not been implemented yet.

Disable RVA mapping when RecreateAt data is present, same as what is
done for optimized files.
Add a replay option to pre-process the capture file to scan for
'Recreate At' GPU VA ranges that need to be reserved prior to device
creation.
@ci-tester-lunarg
Copy link
Collaborator

CI gfxreconstruct build queued with queue ID 599561.

@ci-tester-lunarg
Copy link
Collaborator

CI gfxreconstruct build # 8344 running.

@ci-tester-lunarg
Copy link
Collaborator

CI gfxreconstruct build # 8344 failed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants