Repository navigation
Current Change Register
Reviewed: 2026-11-01 · Source: b7140848 · Availability: current main; release differences are explicit below.
This register covers all 43 merged PRs after the September 26 snapshot through reviewed main. It includes tests, documentation, diagnostics, removals and runtime work:43 merges do not mean43 features or speedups.
Current source is139 commits beyond the September snapshot; the latest stable is103 commits and35 of these merges behind. Those are version-distance counts, not performance measurements. Full comparison.
Included in latest stable means its source contains the merge; the first earlier stable release was not independently determined. Main only means no latest-stable availability claim. Release guide. Earlier delivered mechanisms are in Implemented. The machine-readable owner record is .wiki/current-changes.json in the wiki Git repository.
| PR / change | Availability | Mechanism and user problem | Default / apply / platform | Evidence / limits | Read next |
|---|---|---|---|---|---|
| #182 — apu: Resample mono voices as one channel | included in latest stable | Mono processing duplicated input and resampler work. One resampling channel for mono, duplicate output afterwards; sinc retained. | Automatic; no new toggle Apply: Automatic at the next applicable operation; existing guards remain Platform: Audio platforms |
Historical workload evidence only; no November game speedup attributed. Limits: No new November-main native performance measurement. |
Technical page |
| #183 — audio: Enable the DSP JIT by default | included in latest stable | Users otherwise selected the existing JIT manually. DSP JIT is the fresh selection default; saved false remains false. | audio.use_dsp_jit=true; saved false preserved Apply: Engine preference applied at an audio frame boundary Platform: Audio platforms |
Default selection is delivered; all-title PCM/hardware parity remains bounded. Limits: Default selection does not establish all-title PCM or hardware parity. |
Technical page |
| #268 — xui: Remove experimental Shader Browser stages from main | included in latest stable | Experimental Shader Browser stages were unsuitable for current product. Remove menu, product files and SQLite/override integration. | Feature absent Apply: Removal already present in reviewed stable and main Platform: All |
Removal; historical prereleases are not current availability. Limits: Old user databases/prereleases do not restore current-main UI. |
Technical page |
| #269 — ci: Use tracked xemu version for untagged release builds | included in latest stable | Tagless builds lacked a reliable product identity. Use tracked xemu version in release builds. | Tracked version used by eligible builds Apply: At build/package generation Platform: All supported builds |
Build traceability; no runtime speedup. Limits: Build identity does not improve emulator runtime. |
Technical page |
| #267 — nv2a: reconcile PTIMER semantics and queue scheduling | included in latest stable | PTIMER semantics and scheduling needed reconciliation. Reconcile clock/deadline/queue behavior without claiming a faster guest clock. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: NV2A, both renderers |
Timer correctness, not a clock-speed optimization. Limits: Timer semantics are not guest-clock speedup evidence. |
Technical page |
| #265 — nv2a: Remove the prior issue #149 suppression workaround | included in latest stable | Old Ghoulies suppression workaround masked rendering. Remove the earlier issue149 suppression workaround. | Automatic removal Apply: Automatic at the next applicable operation; existing guards remain Platform: Both renderers |
Paired with semantic DOT_ZW correction; not independent speedup. Limits: Workaround removal is separate from frame-exact transient validation. |
Technical page |
| #271 — nv2a: decouple PGRAPH interrupt controls from renderer work | included in latest stable | PGRAPH control accesses could wait behind renderer work under BQL. Decouple interrupt/control work and preserve timely PTIMER responsiveness. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: Shared NV2A interrupt/control implementation, both backends |
Active Def Jam match; about13.8min, exit0; planned1h/OpenGL/save-load not completed. Limits: Only the recorded Windows Vulkan path; planned hour, GL and save/load incomplete. |
Technical page |
| #264 — nv2a: Implement DOT_ZW depth replacement for issue #149 | included in latest stable | Ghoulies DOT_ZW depth output was incorrect. Validate stages and implement depth replacement with normalized fragment modules. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: Both renderers |
Owner observed correction; issue149 closure does not supply missing frame-exact transient proof. Limits: Owner correction observed; frame-exact transient comparison remains unproved by issue closure. |
Technical page |
| #279 — xui: avoid Input-tab crash without a bound controller | main only at this review | Input tab could dereference an absent physical provider. Keep configuration usable without a bound controller. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: Input UI |
Null-provider crash repair; no snapshot topology guarantee. Limits: Does not reconstruct all controller topology on snapshot restore. |
Technical page |
| #295 — docs: update benchmark README with external evidence links | main only at this review | Product benchmark summary and evidence were hard to find. Publish October cumulative comparison in README with evidence links. | Documentation only Apply: Read the current record; no process setting Platform: Windows and Deck recorded cohorts |
48 attempts; includes Deck PGR2 regression; not November-main attribution. Limits: October tested builds differ from November main; Deck regressions retained. |
Technical page |
| #256 — nv2a: Crop bordered OpenGL cubemap mips by level | main only at this review | Bordered OpenGL cubemap mips used the wrong crop dimensions. Crop applicable levels by their actual border and mip size. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: OpenGL |
Applicable cubemap correction, not every compressed-border case. Limits: Does not cover every compressed-border format. |
Technical page |
| #298 — nv2a: revalidate OpenGL texture DMA sources | main only at this review | Unchanged handles hid texture/palette DMA source changes. Revalidate source identity before OpenGL binding reuse. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: OpenGL |
Correctness under remapping; no standalone game gain inferred. Limits: No standalone game throughput attribution. |
Technical page |
| #187 — apu: Reuse unchanged decoded ADPCM blocks | main only at this review | Identical ADPCM blocks were repeatedly decoded across callbacks. Owned per-voice decoded-block cache compares fresh encoded bytes/configuration. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: APU voices |
No repeatable final native game gain; retained PGR2 tail costs. Limits: No repeatable final native gain; PGR2 tail costs remain. |
Technical page |
| #190 — apu: Cache live SGE descriptor RAM mappings | main only at this review | Descriptor reads repeated RAM mapping work. Retain bounded live SGE descriptor mappings; read current values. | Callback-local guarded reuse Apply: Automatic at the next applicable operation; existing guards remain Platform: APU RAM; fallback for other mappings |
Component savings; accepted stack has adverse Morrowind evidence in issue310. Limits: Issue310 retains Morrowind cadence/tail losses for the mapping stack. |
Technical page |
| #275 — apu: bound ADPCM sample-memory reads to RAM cache spans | main only at this review | ADPCM payload reads repeated translations. Reuse bounded payload RAM spans while reading current bytes. | Callback-local guarded reuse Apply: Automatic at the next applicable operation; existing guards remain Platform: APU RAM; non-RAM fallback |
Partial span work only; issue310 native regression retained. Limits: Full span engine/SIMD conversion is not implemented; issue310 remains. |
Technical page |
| #303 — tests/apu: qualify production resampler state fixtures | main only at this review | Resampler-state coverage did not exercise production paths sufficiently. Production state/throughput fixtures characterize completion and source behavior. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Host fixtures |
Test coverage; known finite-source behavior is not repaired by a passing fixture. Limits: Fixtures characterize inherited finite-source behavior rather than repairing all of it. |
Technical page |
| #305 — apu: Recheck voice worker completion after condition wakes | main only at this review | Condition wakes could be mistaken for completed voice jobs. Recheck worker completion predicates after wakes. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: APU worker threads |
Reliability repair; no invented FPS percentage. Limits: No independent FPS percentage inferred. |
Technical page |
| #302 — nv2a: validate offline Vulkan finish attribution | main only at this review | Vulkan finish reasons lacked qualified offline attribution. Validate read-only finish analysis and its measurement contract. | Off unless explicitly invoked Apply: Offline or paused-process workflow with declared inputs Platform: Retained trace inputs |
Attribution tooling; not a runtime speedup. Limits: Offline trace attribution does not measure exclusive GPU/frame time. |
Technical page |
| #274 — tests/nv2a: retain deterministic PGRAPH/PTIMER contention coverage | main only at this review | PGRAPH/PTIMER lock interaction lacked deterministic coverage. Production contention controls exercise completion/locking boundaries. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Xbox test workload |
Detects regressions; not game performance evidence. Limits: Test coverage is not evidence of game acceleration. |
Technical page |
| #292 — audio: qualify read-only ownership inspector | main only at this review | Audio ownership diagnosis lacked bounded source-matched tooling. Read-only Linux GDB inspector for attached paused processes and matching DWARF. | Off unless explicitly invoked Apply: Offline or paused-process workflow with declared inputs Platform: Linux GDB |
Ownership snapshot; no PCM/audibility proof. Limits: Requires already-attached paused process/matching DWARF; no audibility proof. |
Technical page |
| #257 — ui: Add typed Advanced tweak policy resolver | main only at this review | Requested/effective settings and restart state could diverge silently. Typed policy resolver and owned status publication; existing toggles stay Boolean. | Preserves saved Boolean requests Apply: Live profile publication for live controls; process-start choices remain latched until restart Platform: Applicable controls/backends |
Infrastructure landed; #258/#314 CLI/evidence consumers remain unmerged. Limits: Boolean UI remains Boolean; branch-only#314/#258 consumers absent. |
Technical page |
| #200 — audio: Default Auto voice workers to four | main only at this review | Auto could create too many voice workers. Resolve Auto from logical CPUs with minimum1, cap4; explicit1–16 remains. | Auto(0) resolves1–4; explicit1–16 Apply: Quit and restart xemu Platform: Host voice workers; normal sinc |
Independent of held linear converter#189; not multiple Xbox CPUs. Limits: Restart required; not guest multi-CPU emulation or linear-resampler delivery. |
Technical page |
| #282 — nv2a/vk: preserve read-only depth and stencil ownership | main only at this review | Read-only depth/stencil access could lose authoritative GPU ownership. Preserve read-only ownership before consumer work. | Automatic foundation Apply: Automatic at the next applicable operation; existing guards remain Platform: Vulkan |
Foundation delivered; runtime consumer#290 held. Limits: Does not activate held end-to-end consumer#290. |
Technical page |
| #283 — nv2a/vk: upload unscaled surfaces directly on Linux | main only at this review | Applicable Linux unscaled uploads used avoidable blits. Upload eligible unscaled surfaces directly. | Automatic eligible route Apply: Automatic at the next applicable operation; existing guards remain Platform: Linux Vulkan |
Bounded path, not general zero-copy or Windows qualification. Limits: Linux unscaled eligibility only; not general zero-copy. |
Technical page |
| #284 — nv2a/vk: retain byte-identical depth images across alias views | main only at this review | Byte-identical depth aliases could discard reusable storage. Retain compatible images with ownership/version checks. | Automatic foundation Apply: Automatic at the next applicable operation; existing guards remain Platform: Vulkan |
Retention foundation; no claim that full#290 consumer shipped. Limits: Retention foundation does not ship the entire alias proposal. |
Technical page |
| #286 — nv2a/vk: map packed depth aliases using guest Morton layout | main only at this review | Packed depth aliases require guest addressing, not host linear assumptions. Map guest Morton layout. | Foundation present; held consumer not active Apply: No consumer activation by a user switch Platform: Vulkan |
No runtime caller for held conversion consumer. Limits: Mapping helper lacks runtime activation for held consumer. |
Technical page |
| #287 — nv2a/vk: bound packed depth alias compute dispatch | main only at this review | Packed depth work needs bounded dispatch. Bound depth-alias compute dispatch. | Foundation present; held consumer not active Apply: No consumer activation by a user switch Platform: Vulkan |
Dispatch bounds do not prove game benefit. Limits: Bounded dispatch is not a game speedup measurement. |
Technical page |
| #288 — nv2a/vk: qualify read-only depth aliases and buffer extents | main only at this review | Depth alias buffers and extents need independent qualification. Add read-only alias/extent correctness coverage. | Tests and foundation checks Apply: Automatic at the next applicable operation; existing guards remain Platform: Vulkan |
Qualified boundaries; consumer#290 remains held. Limits: Qualification is limited to declared extents/oracles. |
Technical page |
| #289 — nv2a/vk: record bounded GPU depth alias conversion | main only at this review | Depth conversion needs an ordered recorder. Record bounded GPU depth-alias conversion. | Foundation present; held consumer not active Apply: No consumer activation by a user switch Platform: Vulkan |
Recorder present; end-to-end GPU-resident aliases not activated. Limits: No runtime caller for the held conversion consumer path. |
Technical page |
| #335 — nv2a/vk: stop polling pending pipeline jobs | main only at this review | Pending shader jobs caused zero-deadline polling. Wake on compiler completion; retain retries where required. | Automatic Apply: Automatic at the next applicable operation; existing guards remain Platform: Vulkan compiler |
Accepted2.40% texture-tail tradeoff in recorded cohort. Limits: Accepted2.40% texture-tail tradeoff; recorded comparison/oracle limits retained. |
Technical page |
| #337 — docs: judge performance PRs by overall game outcomes | main only at this review | Leaf thresholds obscured overall useful game outcomes. Document cadence/tail/CPU/correctness acceptance policy. | Documentation only Apply: Read the current record; no process setting Platform: All evaluations |
>1% disclosure, not arbitrary per-leaf veto; runtime performance N/A. Limits: Policy is documentation, not new runtime evidence. |
Technical page |
| #336 — nv2a/vk: defer live fallback-family compilation | main only at this review | Speculative live family work could compete with active play. Learn demand for future launches; optional admission uses launch-loaded history. | Current hybrid policy Apply: Automatic at the next applicable operation; existing guards remain Platform: Vulkan |
Seeded-history candidate black image/stopped flips retained; later pass does not erase it. Limits: Seeded candidate black image/stopped flips remains unresolved; later pass does not erase it. |
Technical page |
| #338 — tests: wait for async compiler result publication | main only at this review | Async compiler test checked results before publication. Wait for actual compiler-result publication. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Host shader tests |
Synchronization coverage, no runtime speedup. Limits: Test synchronization repair only. |
Technical page |
| #360 — tests/nv2a: keep GL lifecycle fixtures within stack limits | main only at this review | Large GL fixture objects exceeded stack limits. Move bounded fixture state to owned heap storage. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: GL lifecycle fixtures |
Fixture robustness; no product behavior change. Limits: Fixture heap allocation has no product runtime delta. |
Technical page |
| #361 — tests/nv2a: scope Xbox build flags to production fixtures | main only at this review | Production Vulkan fixtures lacked scoped Xbox build flags. Apply Xbox flags only to intended fixture dependencies. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Host build |
Build coverage; no new emulation functionality. Limits: Scoped fixture flags do not alter product defaults. |
Technical page |
| #364 — tests/apu: link KVM stubs into memory fixtures | main only at this review | APU memory fixtures lacked KVM stub linkage. Link required KVM stubs into relevant fixtures. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Host build |
Build coverage only. Limits: Linkage repair does not validate native KVM emulation. |
Technical page |
| #369 — tests: Observe APU worker wakeups across LTO | main only at this review | LTO bypassed an ineffective worker-wake observation hook. Observe actual pthread wake boundaries. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: APU host fixture |
Measurement integrity; no scheduler change. Limits: Observation integrity does not change the scheduler. |
Technical page |
| #368 — tests: isolate Vulkan ownership GPU hooks under LTO | main only at this review | LTO made GPU-boundary fixture hooks unreliable. Isolate production ownership hooks under LTO. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Vulkan host fixture |
Retains real ownership assertions; not native GPU qualification. Limits: Host LTO fixture repair is not native GPU qualification. |
Technical page |
| #371 — tests: iterate the attached AIO source context | main only at this review | AIO tests iterated the wrong GLib context. Iterate the context attached to the AIO source. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Xbox host test driver |
Repairs a fixture hang; generic suite limits remain explicit. Limits: Does not repair all generic character/WebSocket coverage. |
Technical page |
| #374 — tests: give file-monitor worker its Xbox loop context | main only at this review | File-monitor worker lacked the Xbox context/lock it polled. Transfer context ownership and loop-lock lifecycle to the worker. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: Xbox host test driver |
Normal handoff covered; abnormal-stop/join limitations remain. Limits: Existing abnormal-stop/join limitations remain. |
Technical page |
| #375 — tests: drain retired views before SGE reference baseline | main only at this review | Deferred RCU retirements changed owner reference baseline. Drain earlier retired views before exact leak-check baseline. | No runtime setting; fixture only Apply: When the test is invoked; no product behavior change Platform: APU SGE fixture |
Deterministic false-failure repair; leak negative control retained. Limits: Repairs a test baseline race, not emulated APU behavior. |
Technical page |
| #191 — apu: Snapshot callback-local voice sample format | main only at this review | CFG_FMT fields repeated the same read within one callback. Decode an immutable callback-local voice format once. | Automatic callback-local preparation Apply: Fresh object at every voice_get_samples callback Platform: APU voice callback |
Narrow landing; no persistent envelope/control cache or universal game gain. Limits: No persistent cache of envelopes, routing or guest control writes. |
Technical page |
| #296 — tcg: Generate hard-FPU FNSTSW AX with preserved checkpoints | main only at this review | Hard-FPU FNSTSW AX used avoidable helper work and needed correct checkpoints. Generate status extraction within existing hard-FPU mode, retaining IP/checkpoint/rounding behavior. | perf.hard_fpu=true on supported x86_64 Apply: Select existing hard-FPU policy, then restart xemu Platform: Supported x86_64; ARM branch not landed |
Focused77.837–79.144% status-time reductions; PGR2 whole-window cadence−0.748%; context failures retained. Limits: 20 retained context FAIL/ineligible records; direct pre-resume state missing; modest game cost retained. |
Technical page |
Presence, release availability, default/apply behavior, validation and measured benefit are separate fields. Unknown gains remain unknown. The record retains source/PR, owner, reviewed date, source paths and limitations; publication checks compare this table with the records. Use Measured results, Controls and Maintenance for interpretation.
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