Skip to content

fix(vk): recover from failed masked-clear pipeline creation - #115

Merged
soltros merged 3 commits into
mainfrom
fix/masked-clear-retry
Nov 11, 2026
Merged

soltros merged 3 commits into
mainfrom
fix/masked-clear-retry

Conversation

@soltros

@soltros soltros commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Masked-clear pipeline construction ignored Vulkan creation results and cached a null pipeline after failure, preventing recovery. This admits only successful nonnull layouts/modules/pipelines, cleans up temporary resources and retries failed keys with bounded backoff.

Fixes #67 (imported NotRexed/Hookshot#1787). The report concerns a source-derived failure path; no player crash or physical-device OOM was reproduced here.

Fragment failure destroys the already-created vertex module. Pipeline failure destroys temporary modules and any partial pipeline, leaving the cache unmodified. A key gets three initial attempts, then one retry every 600 uses of that key. Success clears its failure record; other keys remain independent.

Provenance: NotRexed/Hookshot#1880, commits f002c9048991003b7f4e5253a6a55403f9d83141 and fa04b6fcab179eb51062fe57d0e3fd8a861f1b21 by oscarlosu-lab. Local cherry-picks preserve authorship; the published reconstruction credits that author and adds our behavioral fixtures. Original licensing is retained.

Validation: all 12 actual-function fault-injection cases pass with real Vulkan headers and an authored fake driver/placeholder words, normally and with GCC UBSan. Unchanged base passes the healthy-cache control and fails the other 11 cases. Coverage includes creation errors/null handles, partial-pipeline cleanup, cache reuse, independent keys and exact retry/recovery timing. The fixture explicitly selects its logger overload to compile against the Windows CRT math declarations, and captures compiler diagnostics.

Final Actions at 836f22f: Windows 319 passed, 0 failed, 21 skipped; Linux 331 passed, 0 failed, 9 skipped. Windows Builder, Linux AppImage, actionlint and both focused shader jobs passed. Local full suite: 273 passed, 12 baseline environment failures, 52 skipped; the Vulkan-header fixture was also run explicitly because that local runner did not discover its headers.

No real GPU, Vulkan loader, gameplay session or game-derived assets were used. These results verify failure handling and recovery, not performance or real-world device-loss behavior.

soltros and others added 3 commits November 10, 2026 22:25
…dles

Adapted from NotRexed/Hookshot#1880 commits
f002c9048991003b7f4e5253a6a55403f9d83141 and
fa04b6fcab179eb51062fe57d0e3fd8a861f1b21.
Add production-function fault-injection regression coverage.

Co-authored-by: oscarlosu-lab <251827664+oscarlosu-lab@users.noreply.github.com>
@soltros
soltros marked this pull request as ready for review November 11, 2026 04:10
@soltros
soltros merged commit e20b202 into main Nov 11, 2026
10 checks passed
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.

[Upstream #1787] Masked-clear pipeline creation admits failed resources and caches null results

1 participant