fix(vk): the presenter thread is off by default again #2544
No reviewers
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!2544
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/present-thread-off"
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?
A review of the presenter thread merged in #2325 found two problems that make it unsafe as a default, so this turns it off again until they are fixed.
vkAcquireNextImageKHRruns while the presenter thread callsvkQueuePresentKHRandvkWaitForPresentKHRon the same swapchain. All three need the swapchain externally synchronized. The overlap happens every frame, by design.present_outlets two presents go out of order.What changes
RX_VK_PRESENT_THREADis off unless set to1. Off, the device makes no queue for the presenter, so the device and the presents are as they were before #2325.tests/test_present_thread.pysay it is off by default. The test also checks that no queue is made for it while it is off.The fixes (one lock or an idle wait around the swapchain's acquire and present, a drain that never gives up and leaves the swapchain alone, and the smaller findings) follow in their own PR. That PR turns the default back on only if every fix holds and is tested.
Tested:
tests/test_present_thread.py,tests/test_fps_stats.pyandtests/test_present_semaphores.pypass, and the Vulkan back end builds.github-sync referenced this pull request2026-11-12 06:22:54 +00:00