Repository navigation
Vulkan Throughput Candidates
Reviewed: November 1, 2026. Fork source:
b7140848(full SHAb71408480a3a979a9c584663e1d1f400904c8bb7). Latest stable checked: v0.8.136-0-g458730bf5373, September 30, source458730bf5373f1f0d027450fef7443e3af7a3ae1. GitHub state, branch recommendation, source presence and release availability are separate facts. See current status and release versus main.
The six architectural proposals remain separate work items. Their original source-backed candidate map is preserved below, but a blanket “never implemented or measured” label no longer describes their foundations or branch experiments.
| Candidate area | Current source / branch state | Availability and evidence boundary |
|---|---|---|
| Submission and retirement | Existing color-download folding and transient-buffer growth are delivered mechanisms; a general asynchronous retirement redesign remains research. | Existing mechanisms do not establish the broader design or its game benefit. |
| Native Vulkan presentation | A native-presenter replacement remains a proposal; GPU identity/cross-adapter handling and Windows DXGI are distinct existing mechanisms. | No complete native Vulkan presenter is promised in main or stable. |
| Dynamic uniform descriptors | Uniform update plans and dirty-row work are distinct from dynamic descriptors. | No complete dynamic-descriptor conversion is claimed. |
| PVIDEO lifetime | Resource lifetime and GPU conversion remain distinct proposed changes. | Existing display reuse does not establish this conversion. |
| GPU-resident consumers | Depth foundations/ownership tests landed; runtime consumer #290 and small-color child #291 remain open/HOLD. | Consumer code absent from main/stable. Historical Conker findings do not resolve reset/load, restored-progress and surface-oracle gaps; the six-arm campaign is stopped. |
| Adaptive buffer placement | Placement policy remains distinct from capacity/growth and allocation recovery. | Smaller allocations alone establish no throughput improvement. |
The later depth foundations are main only at this review; their merged helpers do not activate #290/#291. Both consumer branches retain historical useful measurements, but current integration/lifecycle and applicable per-test timing qualification remain required. See research and retired work and the current feature register for exact implemented boundaries.
Related occlusion-query fork #318 is closed unmerged/SKIPPED for the current Deck effort. One fresh pair’s +2.305% guest cadence and mixed tails preserve an opportunity; they establish neither zero benefit nor a broad gain. Upstream #2995 remains open. Persistent SPIR-V, learned-family history and driver pipeline caches are delivered mechanisms distinct from the six proposals; their component savings must not be presented as general FPS gains.
No new native or XISO measurements were made by this page refresh. Read source presence, release availability, activation and evidence as separate fields rather than one Unproven/Implemented switch.
The original analysis follows unchanged at 322986f4c5502b3fa887a9605ac8cd88e9b2c579. Its present-tense source and unmeasured labels apply to that snapshot; the current lifecycle above supersedes them.
Lifecycle: Performance - Unproven
Reviewed source:322986f4c5502b3fa887a9605ac8cd88e9b2c579
State: The code paths exist. Their workload impact has not been measured in xemu.
These candidates target synchronization, descriptor churn, object lifetime, representation changes, and memory placement. They are broader than micro-optimizations and remain Unproven until release-build evidence exists.
Vulkan throughput pages: Overview · Submission & retirement · Native presentation · Dynamic uniforms · PVIDEO lifetime · GPU-resident consumers · Buffer placement
| Candidate | Type | Work that may disappear | Existing overlap |
|---|---|---|---|
| Submission and Resource Retirement | Submission architecture | Fence waits caused only by immediate object reuse | Extends Color-Download Folding and Transient-Buffer Growth |
| Native Vulkan Presentation | Presentation architecture | Vulkan-to-OpenGL synchronization and fallback readback/upload | Distinct from Unchanged Scanout |
| Dynamic Uniform Descriptors | Descriptor design | Texture-descriptor rewrites caused only by new uniform offsets | Distinct from Uniform Update Plans |
| PVIDEO Resource Lifetime | Resource reuse / GPU conversion | Per-upload image objects, CPU YUY2 conversion, separate upload wait | New |
| GPU-Resident Surface Consumers | Coherency architecture | Surface readback followed by GPU re-upload | Extends Direct Surface Sampling |
| Adaptive Buffer Placement | Memory policy | Transfers or poor fetch placement that do not fit the host memory architecture | Distinct from buffer capacity/growth policy |
flowchart LR
A[Source-backed candidate] --> B[Cheap route counters]
B --> C[Focused correctness test]
C --> D[Release A/B with fixed guest progress]
D -->|Useful evidence| E[Performance - Researched]
D -->|No useful effect| F[Stop and record result]
E -->|Lands in main| G[Performance - Implemented]
- Combining the existing upload and draw command buffers into one submit batch is a probe inside the submission page, not a separate candidate.
- Suppressing host presentation is a diagnostic mode for measuring presentation cost, not a playable optimization.
- ARM64 build availability is a platform topic, not a performance mechanism. Any host-specific optimization still needs its own backend implementation and validation.
- Lower allocation size alone is not evidence of better performance. Capacity, placement, lifetime, and synchronization are separate questions.
Collect the same base signals for all six candidates:
finish and queue-idle time by reason
command batches submitted and in flight
descriptor writes and descriptor-pressure finishes
upload and readback bytes by purpose
object creation/destruction counts
CPU preparation time
GPU idle gaps
fixed guest progress and p95/p99 frame time
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