Skip to content

PR 0037 Add performance toggles to Settings Advance

github-actions[bot] edited this page Sep 14, 2026 · 1 revision

PR #37 — Add performance toggles to Settings → Advance

PR #37

Status

  • 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: main at 7c6a1a51fe840121ed2ed0696d955b62ffe2a322
  • 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.

At a glance

  • 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.

Code impact

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.

Flow

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
Loading

What changed

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.

Result

Merged: advanced settings expose independent performance controls used for isolation and A/B testing.

Lesson learned

Independent advanced performance toggles are valuable diagnostic controls because one optimization can be disabled without removing unrelated correctness behavior.

Avoid repeating

Do not bundle several optimizations behind one switch or use a correctness-disable toggle as the definition of baseline behavior.

Docs / evidence

Pointers only; the detailed evidence remains in its original location.

  • docs/performance/

Related architecture

Related PRs referenced by this PR:

Clone this wiki locally