Skip to content

Hotfix: Vulkan descriptor lifetime + MSAA framebuffer wiring#269

Merged
MichaelFisher1997 merged 1 commit intomainfrom
hotfix/vulkan-validation
Feb 10, 2026
Merged

Hotfix: Vulkan descriptor lifetime + MSAA framebuffer wiring#269
MichaelFisher1997 merged 1 commit intomainfrom
hotfix/vulkan-validation

Conversation

@MichaelFisher1997
Copy link
Collaborator

Summary

  • Fix descriptor lifetime hazards that triggered VUID-vkUpdateDescriptorSets-None-03047 by updating/binding only the active frame's post-process descriptor set.
  • Harden TAA descriptor set usage to select per-frame/per-history descriptor sets instead of reusing a potentially in-flight set.
  • Fix main HDR/MSAA wiring so render pass, pipeline rebuild, and framebuffer creation all use configured msaa_samples.
  • Create HDR MSAA color resources when MSAA is enabled to satisfy attachment sample-count compatibility.

Validation

  • nix develop --command zig build
  • nix develop --command zig build test

Context

  • This branch is a surgical hotfix from main to avoid the large commit history carried by dev.
  • Addresses runtime validation failures seen on boot/resize:
    • VUID-vkUpdateDescriptorSets-None-03047
    • VUID-VkFramebufferCreateInfo-pAttachments-00881

@github-actions github-actions bot added documentation Improvements or additions to documentation engine labels Feb 10, 2026
@opencode-agent
Copy link
Contributor

📋 Summary

This PR addresses Vulkan validation failures related to descriptor lifetime hazards and MSAA framebuffer wiring. It implements per-frame descriptor set management for post-processing and TAA systems, ensures consistent MSAA sample count propagation through render pass/pipeline/framebuffer creation, and adds HDR MSAA color resource creation when MSAA is enabled.

🔴 Critical Issues (Must Fix - Blocks Merge)

None identified.

⚠️ High Priority Issues (Should Fix)

None identified.

💡 Medium Priority Issues (Nice to Fix)

None identified.

ℹ️ Low Priority Suggestions (Optional)

None identified.

📊 SOLID Principles Score

Principle Score Notes
Single Responsibility 8 Each module handles specific resource lifecycle concerns
Open/Closed 7 Extensible through configuration options
Liskov Substitution 8 Proper abstraction of Vulkan resources
Interface Segregation 7 Focused interfaces per subsystem
Dependency Inversion 7 Dependencies injected via context
Average 7.4

🎯 Final Assessment

Overall Confidence Score: 92%

How to interpret: 81-100%: High confidence, ready to merge or with trivial fixes

Confidence Breakdown:

  • Code Quality: 90% (Clean, follows existing patterns, proper error handling)
  • Completeness: 95% (Addresses all stated validation issues)
  • Risk Level: 85% (Low risk - surgical hotfix with targeted changes)
  • Test Coverage: 90% (Validation via zig build test)

Merge Readiness:

  • All critical issues resolved
  • SOLID average score >= 6.0
  • Overall confidence >= 60%
  • No security concerns
  • Tests present and passing (if applicable)

Verdict:

MERGE

The PR successfully addresses the Vulkan validation errors (VUID-vkUpdateDescriptorSets-None-03047 and VUID-VkFramebufferCreateInfo-pAttachments-00881) through proper per-frame descriptor set management and consistent MSAA sample count handling. Code follows existing patterns and validation steps confirm functionality.

New%20session%20-%202026-02-10T23%3A08%3A21.258Z
opencode session  |  github run

@MichaelFisher1997 MichaelFisher1997 merged commit f990c00 into main Feb 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation engine

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant