Vulkan presentation stalls after the window surface is lost #1977
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot#1977
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Vulkan presentation stalls after the window surface is lost
Summary
When acquire or present returns
VK_ERROR_SURFACE_LOST_KHR, Vulkan presentation has no path to replace the lost surface. The current paths return from acquire or log the failed present, leaving later frames on the same surface.Reproduction
On main
fc375e96, I compiled the acquire and present result handling against Vulkan stubs and injectedVK_ERROR_SURFACE_LOST_KHR. Neither call reached a rebuild. As controls, a successful acquire reached rendering and out-of-date acquire and suboptimal present each triggered a swapchain rebuild. This reproduces the result routing on Windows LLVM. Incidence on physical compositors is unknown.Proposed behavior
Retire the old swapchain and its pending presentations before replacing the surface. Revalidate presentation queue support and rebuild once the window has a drawable size. Cover a lost surface during swapchain capability, format and mode queries, and preserve the existing resize behavior.
Severity S1 when triggered, since video output stops. Confidence 0.4 for observed player impact. Reach is unknown. I can test Windows/NVIDIA and inject lifecycle failures. Linux compositor testing remains open.
I'm taking the recovery work described here as Arkex-ai.
Coordination in #dev-work