Repository navigation
PR 0058 Vulkan test a larger graphics descriptor batch
- GitHub state: Closed unmerged
- Disposition at review: Negative result
-
Current head at review:
3a56adfac81a804e974078024cb31bd132315cb6(research/vk-descriptor-capacity) -
Reviewed head:
3a56adfac81a804e974078024cb31bd132315cb6 - Last reviewed: 2026-09-14 UTC
-
Base:
mainatbd1fecb93353272dda2a810991e28945de35b665 - Subsystem: Vulkan memory / synchronization
Review freshness: this page records the final/known PR head at review time. If the PR is reopened or rewritten, re-review before relying on implementation details.
- What it changes: Vulkan: test a larger graphics descriptor batch
- Why it was attempted: Observed problem: Vulkan can exhaust its graphics descriptor-set batch and force the existing command-buffer finish/fence wait before the next draw. Profiling evidence: Diagnostic 57 recorded 665 descriptor-only capacity drains, zero uniform-only or simultaneous drains, zero unresolved other capacity producers, and 6.529970 seconds of capacity-labelled wait in a 27.007765-second setup-inclusive QPC span. Suspected cause: The 1,024-entry graphics descripto…
- Current/final result: Closed negative experiment: no repeatable benefit was established from the larger graphics descriptor batch.
- Lesson: A larger descriptor batch/capacity is not a performance win by itself; single-pair movements were insufficient and capacity changes can simply move the eventual wait.
| Implementation file | Δ | Why it matters |
|---|---|---|
hw/xbox/nv2a/pgraph/vk/renderer.h |
+1/-1 | Renderer-owned state needed by the implementation. |
flowchart LR
subgraph Before
A[Vulkan memory / synchronization input] --> B[Existing path] --> C[Observed limitation/cost] --> D[Guest-visible result]
end
subgraph PR_58[PR #58]
E[Vulkan memory / synchronization input] --> F[PR #58 change/measurement] --> G[Qualified behavior] --> H[Guest-visible result]
end
Change one bound in hw/xbox/nv2a/pgraph/vk/renderer.h : graphics descriptor-set array 1,024 → 2,048. - Retain ARRAY SIZE -derived graphics pool sizing and indexing. - Retain the existing capacity predicate, command-buffer finish, fence wait, reset, and teardown. - Leave the compute pool, OpenGL path, and diagnostic instrumentation unchanged/absent. Main code path: Vulkan graphics descriptor pool capacity and fence-based retirement. Commits: candidate 3a56adfac81a804e974078024cb31bd132315cb6 ; tree 463f23c13c42a2d5284152ae5879766dfa92f4d8 .
Closed negative experiment: no repeatable benefit was established from the larger graphics descriptor batch.
A larger descriptor batch/capacity is not a performance win by itself; single-pair movements were insufficient and capacity changes can simply move the eventual wait.
Do not increase descriptor limits and cite fewer rotations/finishes without repeated end-to-end guest-progress evidence.
Pointers only; the detailed evidence remains in its original location.
- https://github.com/Mainkill1/xemu-perf-tests/blob/393b299dc5db323c5026baa5cda4d04c76b914a0/docs/evidence/vk-capacity-20260909/REPORT.md
- https://github.com/Mainkill1/xemu-perf-tests/blob/393b299dc5db323c5026baa5cda4d04c76b914a0/docs/evidence/main-apu-load-20260909/REPORT.md
- https://github.com/Mainkill1/xemu-perf-tests/blob/bdd9effed6dc4cc30677c3d88d09b27e7b5b597c/docs/evidence/vk-descriptor-capacity-20260909/REPORT.md
- https://github.com/Mainkill1/xemu-perf-tests/blob/393b299dc5db323c5026baa5cda4d04c76b914a0/docs/performance-investigation-index.md
- https://github.com/Mainkill1/xemu-perf-tests/blob/bdd9effed6dc4cc30677c3d88d09b27e7b5b597c/docs/pr-metrics-20260909/data/xemu-58.json
docs/evidence/vk-capacity-20260909/REPORT.mddocs/evidence/main-apu-load-20260909/REPORT.mddocs/evidence/vk-descriptor-capacity-20260909/REPORT.md
Related PRs referenced by this PR:
DSP tooling guide and navigation updated November 2, 2026 for experimental PR #384, source 8f51d237. Capture/replay usage and limits.
The earlier wiki-wide review was published November 1, 2026. Emulator source: b7140848. Reviewed wiki content: 1d2b671. Current status · Release availability · Publication process.
- Home
- Current status
- Stable versus main
- Implemented mechanisms
- Controls and defaults
- Measured results and limits
- Complete change register
- System
- CPU and vCPU
- Memory and DMA
- Graphics / NV2A
- APU and audio
- Timing and timers
- Platform and I/O
- Hardware observations
- Fidelity boundaries
- Methodology
- PGR2 routes
- Debugging lag / hot paths
- Tools and commands
- DSP capture, replay and fuzzing
- HLE readiness and public XISO proof
- Concurrent DSP shadow and OpenAL proof
- DSP HLE operation inventory
- DSP HLE fix examples and testing
- Development
- Upstream shortlist
- Wiki maintenance
- Research / retired work
- Optimization catalog
- Hot-path shortcuts
- Researched experiments
- Unproven proposal directory
- PR lessons
- September26 snapshot
Repository · PRs · Issues