Skip to content

Upstream PR 2965 Surface Memory Reuse Flush

OpenAI Codex edited this page Nov 1, 2026 · 2 revisions

Upstream PR #2965 — Flush when reusing Vulkan surface memory

Upstream work · Actionable research · Research and retired work

Current disposition — November 1, 2026

Reviewed: November 1, 2026. Fork source: b7140848 (full SHA b71408480a3a979a9c584663e1d1f400904c8bb7). Latest stable checked: v0.8.136-0-g458730bf5373, September 30, source 458730bf5373f1f0d027450fef7443e3af7a3ae1. 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 #2965
GitHub state / draft Open / No
Current head f0db53c49360c30bfc69a0a0b8817da5f8699434
Originally reviewed head af087658e2960f0032436144b9c0d9087db33320
Last metadata update (UTC) 2026-10-26T06:25:52Z
Head versus original review Changed head and verified proposal-source changes; historical review needs the update described below.
Current action Review current timestamp order and retained hardware gap.
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 head changed from af087658e2960f0032436144b9c0d9087db33320 to f0db53c49360c30bfc69a0a0b8817da5f8699434. The October 17 change moves texture timestamp publication into pre-draw after submit_count advances. Recheck this ordering before reusing the September review. The PR still records that the texture-update test agrees with hardware when an NV semaphore precedes CPU mutation, but xemu still fails the no-semaphore case that passes on hardware. This protects queued GPU consumers; fork #119/#158 protect newer guest writes against stale readback and are not duplicates.

Source-change record: original-to-current comparison. The branch diverged/rebased; comparison-wide unrelated upstream changes are not all proposal changes.

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.

Historical review — September 21, 2026

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.

← Upstream Work

Field Value
Upstream PR xemu-project/xemu#2965
State at 2026-09-21 audit Open
Reviewed upstream head af087658e2960f0032436144b9c0d9087db33320
Last upstream update seen 2026-08-12
Reviewed upstream base f9b14039e5bb56ae2d8f028e31e7cc19f13f7e12
Fork baseline 82d04d84bdb3de956f20c3537e1da2cece0e8da2
Relationship Adjacent coherence hazard, not duplicate
Related fork work Mainkill1/xemu#119, Mainkill1/xemu#158
Contribution priority High
Upstream contact status No comment posted by this audit.

Summary

Upstream protects queued GPU consumers when surface memory is reused. Fork #119/#158 protect newer guest writes from stale GPU readback. These are opposite ownership directions.

Upstream scope

The hazard is an earlier queued GPU operation that still needs old resource contents when memory/resource state is reused or updated.

Corresponding fork work

Fork #119 preserves guest writes over cached surfaces. Fork #158 propagates dirty state and maintains a persistent readback veto so stale GPU surfaces cannot overwrite newer guest texture memory.

Difference that must remain explicit

A queue flush does not decide which copy of contents is authoritative. A guest-write veto does not guarantee safety for an earlier queued GPU consumer.

Transferable regression and review cases

  • Queued consumer of old surface contents survives resource reuse/update.
  • Newer guest write survives a later stale-surface download.
  • Run both hazards independently and in sequence.
  • Track queue waits/finishes separately from dirty propagation and readback suppression.

Suggested upstream handoff

Offer separate regression cases for both directions. Avoid the label “surface corruption fixed” without identifying the authoritative owner and pending consumers.

Claims this page does not support

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

Before sending anything 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.

Tracking log

Date Upstream head Action Result
2026-09-21 af087658e296 Fork/upstream source comparison recorded Handoff prepared; nothing posted

References

Clone this wiki locally