Repository navigation
PR 0037 Add performance toggles to Settings Advance
- GitHub state: Merged
- Disposition at review: Merged
-
Current head at review:
37cf6cbcc61392aaba14658df6ed8aa4cb566abd(feature/performance-tweak-sliders) -
Reviewed head:
37cf6cbcc61392aaba14658df6ed8aa4cb566abd - Last reviewed: 2026-09-14 UTC
-
Base:
mainat7c6a1a51fe840121ed2ed0696d955b62ffe2a322 - Subsystem: UI / performance controls
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: Add performance toggles to Settings → Advance
- Why it was attempted: Observed problem: Accepted performance paths were always active and could not be isolated from the UI during regression work. Profiling evidence: The original PR and its parent reports contain historical per-control measurements. Those reports do not qualify this rebuilt head. Suspected cause: The maintained fallback paths existed but had no common configuration and runtime publication contract. Why this is worth investigating: Independent controls let te…
- Current/final result: Merged: advanced settings expose independent performance controls used for isolation and A/B testing.
- Lesson: Independent advanced performance toggles are valuable diagnostic controls because one optimization can be disabled without removing unrelated correctness behavior.
| Implementation file | Δ | Why it matters |
|---|---|---|
config_spec.yml |
+23/-0 | User-facing configuration/toggle schema for the behavior. |
hw/xbox/nv2a/pgraph/gl/texture.c |
+3/-1 | Texture source identity, cache, upload, binding, or freshness path. |
hw/xbox/nv2a/pgraph/pgraph.c |
+4/-2 | Shared PGRAPH guest-state/method handling and renderer boundary. |
hw/xbox/nv2a/pgraph/vk/draw.c |
+11/-5 | Vulkan draw preparation/recording and the PR hot-path decision. |
hw/xbox/nv2a/pgraph/vk/surface.c |
+2/-0 | Surface ownership, overlap, readback, upload, or freshness path. |
include/qemu/timer.h |
+4/-0 | QEMU timer, deadline, or wakeup infrastructure. |
tests/unit/meson.build |
+21/-0 | Focused/regression validation for the implementation contract. |
tests/unit/test-xbox-qemu-poll-faults.py |
+130/-0 | Focused/regression validation for the implementation contract. |
tests/unit/test-xbox-qemu-poll-ready.py |
+81/-0 | Focused/regression validation for the implementation contract. |
tests/unit/test-xbox-qemu-poll.c |
+317/-0 | Focused/regression validation for the implementation contract. |
tests/unit/test-xemu-tweak-paths.py |
+183/-0 | Focused/regression validation for the implementation contract. |
tests/unit/test-xemu-tweaks-config.cc |
+83/-0 | Focused/regression validation for the implementation contract. |
ui/meson.build |
+1/-0 | Build registration for new/changed implementation or test units. |
ui/xemu-tweaks.c |
+38/-0 | User-facing control or presentation integration. |
ui/xemu-tweaks.h |
+43/-0 | User-facing control or presentation integration. |
ui/xemu.c |
+2/-0 | User-facing control or presentation integration. |
ui/xui/main-menu.cc |
+64/-1 | User-facing control or presentation integration. |
ui/xui/main-menu.hh |
+8/-0 | User-facing control or presentation integration. |
util/qemu-timer.c |
+212/-2 | QEMU timer, deadline, or wakeup infrastructure. |
flowchart LR
subgraph Before
A[UI / performance controls input] --> B[Existing path] --> C[Observed limitation/cost] --> D[Guest-visible result]
end
subgraph PR_37[PR #37]
E[UI / performance controls input] --> F[PR #37 change/measurement] --> G[Qualified behavior] --> H[Guest-visible result]
end
Add default-On generated configuration for seven controls. - Add an atomic runtime adapter and restart-only policy. - Add the Advance settings page. - Gate the current packet, fence, Vulkan submission/range/growth, and OpenGL S3TC paths. - Retain the optional Windows high-resolution short wait while preserving current main QPC conversion. - Add focused configuration, packet/buffer, and Windows polling tests. - Document exact On/Off behavior.
Merged: advanced settings expose independent performance controls used for isolation and A/B testing.
Independent advanced performance toggles are valuable diagnostic controls because one optimization can be disabled without removing unrelated correctness behavior.
Do not bundle several optimizations behind one switch or use a correctness-disable toggle as the definition of baseline behavior.
Pointers only; the detailed evidence remains in its original location.
docs/performance/
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