Skip to content

Upstream PR 2993 Persistent Caches

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

Upstream PR #2993 — Persist pipeline and SPIR-V caches to disk

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 #2993
GitHub state / draft Open / No
Current head 98ab977bb75b9c54ceabda870bfc78232731574a
Originally reviewed head 98ab977bb75b9c54ceabda870bfc78232731574a
Last metadata update (UTC) 2026-10-18T20:59:12Z
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.

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#2993
State at 2026-09-21 audit Open
Reviewed upstream head 98ab977bb75b9c54ceabda870bfc78232731574a
Last upstream update seen 2026-09-06
Reviewed upstream base f9b14039e5bb56ae2d8f028e31e7cc19f13f7e12
Fork baseline 82d04d84bdb3de956f20c3537e1da2cece0e8da2
Relationship Substantial downstream implementation overlap
Related fork work Mainkill1/xemu#70, Mainkill1/xemu#139, Mainkill1/xemu#147
Contribution priority Highest
Upstream contact status No comment posted by this audit.

Summary

Upstream persists Vulkan pipeline-cache data and SPIR-V artifacts. The fork already has exact-source SPIR-V persistence, fallback-path reuse, and application-managed driver pipeline-cache persistence with bounded loading and coordinated writeback.

Upstream scope

The upstream proposal recognizes that renderer finalization alone does not cover ordinary process exit and adds an exit-time save path. It also looks up compiled SPIR-V from persistent storage.

Corresponding fork work

Fork #70 persists validated SPIR-V with an identity that includes stage, exact source, target environment, cache ABI, and effective compiler policy. Fork #139 reuses those artifacts during fallback-family preparation without unnecessary compiler fallback. Fork #147 restores and saves driver pipeline-cache data, validates a version-one Vulkan cache header, caps input at 64 MiB, and joins the pipeline worker before serialization.

Difference that must remain explicit

The mechanisms are similar, but ownership differs. The reviewed upstream branch uses process-global pipeline_cache_saved and pipeline_cache_loaded flags. The audit did not find a reset when Vulkan is recreated, so later renderer instances may be prevented from contributing new cache data. This is a source-review concern, not a reproduced failure.

Transferable regression and review cases

  • Normal quit persists data even when renderer finalization is not the process-exit path.
  • Vulkan → OpenGL → Vulkan recreation adds new pipelines and the second Vulkan instance persists them on exit.
  • Truncated, oversized, wrong-version, wrong-vendor/device, and wrong-pipeline-cache-UUID input falls back to an empty cache.
  • The pipeline worker is quiesced before cache serialization.
  • Failed Windows replacement preserves the last valid published file.
  • A target-environment/compiler-policy change cannot reuse a source-only SPIR-V entry.

Suggested upstream handoff

Offer fork #70 and #147 as lifecycle and identity references. Lead with the renderer-recreation regression and cache-header tests. Describe native evidence only as persistence/lifecycle validation; do not attach a broad FPS claim.

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 98ab977bb75b Fork/upstream source comparison recorded Handoff prepared; nothing posted

References

Clone this wiki locally