Skip to content

Preserve shader precompile backoff across starts - #800

Closed
monsterlag wants to merge 4 commits into
NotRexed:mainfrom
monsterlag:fix/precompile-failure-backoff
Closed

monsterlag wants to merge 4 commits into
NotRexed:mainfrom
monsterlag:fix/precompile-failure-backoff

Conversation

@monsterlag

@monsterlag monsterlag commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

The refreshed branch is published at eda9dd9. This PR remains closed; the review and checks below refer to that current-main branch. Hosted CI for the refreshed head awaits reopening.

Two interrupted startup precompiles currently drop the notes and delete their failure marker. Later starts try cached compute programs again even with no notes, so the same startup failure can repeat. Keep a versioned interruption count scoped to the shader-program stamp, GPU, driver, pipeline-cache UUID and the presence of RX_VK_NOOPT. After two interruptions, preserve the notes and use ordinary lazy builds until that identity changes. A completed attempt clears its own marker; legacy markers get one scoped retry.

The refreshed branch is based on main b2765ba6 through a normal merge. Upstream background preparation, parallel program-cache reading and guarded compute creation remain intact. The fixture supplies the current cache-reader dependencies; all eleven original behavior checks are unchanged.

Validation:

  • All eleven native actual-helper/control-prefix/cache-selection checks pass on Windows Clang and WSL GCC with strict warnings.
  • The untouched current-main source compiles, then fails the preserved exhausted-state and repeated-interruption behavior assertions.
  • No game, driver, memory-exhaustion or GPU test was run. This does not establish any reported startup crash's cause. Hosted CI for the refreshed head awaits reopening.

Keep exhausted startup protection instead of deleting notes and retrying every cached compute program on later starts. Scope the marker to existing program and driver identity, and migrate legacy exhausted counts through one controlled attempt.

Assisted-by: OpenAI Codex
Keep the released prediction, compute variant preparation and handoff code. The fixture extracts only through the actual preparation entry call so it remains independent of the released notes-reader shape.

Assisted-by: OpenAI Codex
Give native subprocesses the same verified temporary base as Python. Keep the C++ ownership guard and every policy assertion intact when Python cached paths differ from the CRT environment lookup.

Assisted-by: OpenAI Codex
@NotRexed

NotRexed commented Nov 9, 2026

Copy link
Copy Markdown
Owner

Closing to keep the queue clear — please rebase on current main and reopen; thanks!

@NotRexed NotRexed closed this Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants