Skip to content

Stop pipeline creation when Vulkan layout allocation fails - #846

Closed
monsterlag wants to merge 3 commits into
NotRexed:mainfrom
monsterlag:fix/layout-failure-propagation
Closed

monsterlag wants to merge 3 commits into
NotRexed:mainfrom
monsterlag:fix/layout-failure-propagation

Conversation

@monsterlag

@monsterlag monsterlag commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

The refreshed branch is published at 375bb4b. GitHub refused reopening this maintainer-closed PR with Could not open the pull request; it still shows the older 5502fab head. The current-main review and checks below refer to the published 375bb4b branch, with hosted CI pending reopening.

ensure_layout ignores both Vulkan creation results and can leave partially
updated descriptor metadata. Callers then continue into pipeline creation with a
missing layout. Create the handles and metadata transactionally, stop dependent
pipeline work on failure, destroy the newly owned descriptor-set layout when the
second creation fails, and allow a later retry. Log the actual VkResult up to
eight times per creation operation, followed by one suppression message.

Updated against main b2765ba6 through a normal merge. This preserves its expanded
mesh-fallback push range and fallback push requirement, cached-compute
guarded_compute path, parallel cache reading and current CI registrations. No
cache ownership or worker-handoff policy changes are included.

Validation on the merged source:

  • All eight actual-helper/caller API-spy checks passed on Windows with the
    MSVC-target Clang/VS2022 route and WSL Linux with GCC 13.3.
  • The untouched b2765ba6 helper fails the authored descriptor-allocation negative.
    Successful API arguments match the current upstream helper, including
    fallback/no-fallback push controls with no other push users.
  • The complete changed vk_draw.cpp translation unit compiled with the current
    production flag structure and audited GNU-target compiler. This was an object
    compile only; no renderer link, driver or game run.

The fixture executes cached workers serially and observes the actual early-return
blocks of draw/dispatch. It does not validate concurrent ownership, real memory
exhaustion or driver behavior. Refs #803 as diagnostic motivation; this does not
establish or claim to fix that report's cause. Hosted CI awaits publication.

monsterlag and others added 3 commits November 8, 2026 18:06
Keep descriptor metadata and handles transactional, stop dependent pipeline work after allocation failures, and retain retryable state. Add driver-free actual-helper and caller regression checks.

Assisted-by: Codex

Co-Authored-By: Codex <noreply@openai.com>
Record the descriptor enum explicitly as uint64_t and use the existing production Windows CRT definition. Keep strict warnings and all fault assertions unchanged.
@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