Repository navigation
Upstream PR 2998 Uniform Copy Dirtiness
Upstream work · Actionable research · Research and retired work
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.
| Current field | November 1, 2026 observation |
|---|---|
| GitHub source | Upstream #2998 |
| GitHub state / draft | Open / No |
| Current head | 651079ce4de102ba75e8ea768f47a440def9349b |
| Originally reviewed head | 651079ce4de102ba75e8ea768f47a440def9349b |
| Last metadata update (UTC) | 2026-10-18T20:59:11Z |
| Head versus original review | Same recorded head; metadata/state updates do not indicate a new proposal-code head. |
| Current action | Open proposal; refresh integration and focused tests before handoff. |
| Fork/release availability | This upstream proposal’s GitHub state does not establish full fork/release inclusion. The historical overlap below is scoped to its recorded fork baseline; use the current feature register for delivered fork behavior. |
The current head matches the recorded September review head. Later updated_at metadata does not establish changed proposal code. The original fork overlap remains a dated source comparison, not a fresh integration or native qualification result.
This refresh checked GitHub identity/state and the specific source boundaries named above. It did not rerun native games, XISO timings or integration qualification. Historical performance claims remain attached to their original heads.
The review below is preserved as written, including its original state, head, fork baseline and proposed handoff. Its present-tense statements apply to that dated review; the current disposition above governs today’s action.
| Field | Value |
|---|---|
| Upstream PR | xemu-project/xemu#2998 |
| State at 2026-09-21 audit | Open |
| Reviewed upstream head | 651079ce4de102ba75e8ea768f47a440def9349b |
| Last upstream update seen | 2026-09-06 |
| Reviewed upstream base | f9b14039e5bb56ae2d8f028e31e7cc19f13f7e12 |
| Fork baseline | 82d04d84bdb3de956f20c3537e1da2cece0e8da2 |
| Relationship | Core mechanism already present downstream; companion fixes available |
| Related fork work | Mainkill1/xemu#138, Mainkill1/xemu#148 |
| Contribution priority | Highest |
| Upstream contact status | No comment posted by this audit. |
The upstream PR replaces unconditional copies plus whole-block hashing with comparisons during reflected uniform copying. The fork already uses the same compare-and-copy shape and has two useful follow-ups.
The proposed uniform_copy() determines dirtiness while copying reflected elements. Upstream also preserves the important binding-switch rule: values matching a binding’s own previous allocation do not imply that the currently bound GPU allocation already contains them.
Fork #138 fixes deterministic construction of pixel-shader bump uniforms by initializing unused stage-zero entries that the renderer could still compare/copy. Fork #148 separately avoids repeated scans of clean vertex-uniform row flags and covers ordinary writes, transform/RDI paths, CPU vertex processing, and snapshot restoration.
The stage-zero initialization defect predates this upstream optimization; it should not be blamed on #2998. The dirty-row summary is a separate optimization and should not be presented as required for removal of the full-block hash.
- Construct identical fragment-uniform values into buffers prefilled with different sentinels; every compared byte must match.
- Run the producer under MemorySanitizer where supported.
- Switch between bindings with equal values and confirm the selected allocation is still reconciled.
- Verify reflected padded/strided arrays compare and copy only their defined elements.
- Measure actual UBO staging and descriptor writes separately from CPU reconciliation calls.
Offer #138’s deterministic producer regression first. Acknowledge upstream’s existing binding-switch handling. Mention #148 only as a separate follow-up for row-dirty scanning.
- It does not prove the upstream branch merges cleanly with current upstream.
- It does not prove a native correctness or performance result unless a linked exact-head run says so.
- It does not transfer favorable performance percentages between hardware, renderers, games, or source heads.
- It does not authorize posting a comment or review upstream.
- Refresh the PR state, head SHA, description, changed files, and newest review comments.
- Recheck the corresponding fork implementation on current
main. - Run or cite the narrow regression on an exact source state.
- Verify every public link and remove private paths, captures, game data, credentials, and internal logs.
- Phrase source concerns as source concerns and reproductions as reproductions.
- State the uncovered behavior and evidence limit.
- Add the posted URL and upstream response to this page.
| Date | Upstream head | Action | Result |
|---|---|---|---|
| 2026-09-21 | 651079ce4de1 |
Fork/upstream source comparison recorded | Handoff prepared; nothing posted |
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