Repository navigation
perf(agc): write draw descriptors from retained CPU metadata - #1334
Conversation
b081d5f to
cc32a55
Compare
|
Rebased on Measured upstream The same fixture calls production
Snapshot checksums match. Both benchmark variants pass separate core and sync validation runs on RADV. The PR's mixed buffer/sampler-array, repeated snapshot override, and descriptor update-count tests pass with validation on RADV and llvmpipe. Graphics and contribution checks pass. This measures draw-binding preparation only; no title frame time or Windows result is claimed. AI-assisted. |
|
Title-level data for this change, from a retail title (Astro Bot, PPSA21567 v01.019.000), in case it helps the review. Setup: RX 9070 XT (GFX1201), RADV / Mesa 26.2.4, Linux 7.2.9. Base is the Profile before the change: Presents per second (
AI-assisted: the profiling, the measurements and this write-up were done by Claude (Claude Code) on my machine. |
|
This conflicts with |
Replace per-draw Vulkan descriptor copies with a single write from retained buffer and image metadata. Keep per-draw guest snapshots, sets and resource ownership unchanged. Baseline RX 6600 profiling attributed 28% of graphics-worker cycles to descriptor copies. Validation: mixed descriptor and snapshot regression passes on RADV RX 6600 and llvmpipe with Vulkan validation; graphics and guest-memory tests pass. Written with AI assistance.
Update descriptorSnapshotTests for the single-update path of this PR.
|
Rebased on current Added on top of your commit:
Checked: |
cc32a55 to
1dbf976
Compare
What
Keep buffer and image descriptor metadata with each resource. Build each draw's descriptor set from that metadata in one update, with the draw's snapshot buffers substituted. This removes Vulkan descriptor copies from the draw path.
Guest snapshots, resource ownership, and descriptor-set lifetimes stay the same. #639/#1219 change resource ABI handling; #1202 changes snapshot allocation. Neither replaces these descriptor copies.
Tested
Fedora 44, Release: graphics tests. RX 6600 with Vulkan validation: mixed buffer and sampler-array bindings, repeated snapshot overrides, unchanged descriptors, and one update with no descriptor copies. Windows was not tested.
Isolated comparison: upstream
e9846679versus the same revision plus this PR. For eight storage-buffer descriptors, preparing a draw with one changed snapshot took 28.689 → 3.333 µs; with eight snapshots it took 37.294 → 4.935 µs. Six pinned processes per variant in ABBA order, using host RADV. These are draw-binding preparation timings, not title frame time.Checklist
main; no duplicate open PR.