feat: degrade-don't-panic render path (tech-debt #17b) #117
No reviewers
Labels
No labels
atmosphere
clouds
debug
enhancement
foundation
high-priority
integration
low-priority
medium-priority
optimization
pbr
weather
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
akadmin/NemesisEngine!117
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/render-degrade"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The per-frame GPU path no longer aborts the process on a vulkano error:
render_offscreen (incl. mesh upload), wait_for_slot, signal_frame_boundary,
resize, upload_ibl, and texture upload return Result<_, String> via a small
VkErr extension trait; the descriptor-set/upload builders in gpu_types.rs
propagate instead of unwrapping. Both binaries' render layers log once per
distinct message (renderer::LogOnce, cleared on a successful frame) and skip
the frame: swapchain-acquire failures recreate the swapchain and retry
(replacing both panic! sites), a failed render presents the slot's previous
contents (Scene::idle_future), broken texture files cache a magenta 1x1
fallback, and a failed resize/upload_ibl keeps the previous images intact.
Init-time paths keep unwrap/expect deliberately (fail-fast at startup);
Scene::new call sites use .expect with context. Swapchain failure modes are
not unit-testable without a GPU harness — verified by cargo test (492 green)
plus the LogOnce state tests; manual resize/minimize spam still recommended
before merge.
Roadmap item 35 (Tier 1), second half of debt #17.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Pull request closed