vkDeviceWaitIdle workaround because presentation is broken

This commit is contained in:
baldurk
2026-09-13 12:57:43 +01:00
parent 1fbec8ee48
commit 527f34614b
2 changed files with 6 additions and 2 deletions
+2
View File
@@ -148,6 +148,8 @@ RD_TEST(VK_Multi_Present, VulkanGraphicsTest)
win->Submit(0, 1, {cmd}, {}, queue);
}
vkDeviceWaitIdle(device);
VulkanWindow::MultiPresent(queue, presentWindows);
for(size_t i = 0; i < windows.size(); i++)
+4 -2
View File
@@ -1758,8 +1758,8 @@ void VulkanWindow::Acquire()
semIdx = (semIdx + 1) % renderStartSemaphore.size();
// acquire next image stupidly does not properly block, do a manual block
vkWaitForFences(m_Test->device, 1, &imageFences[semIdx], VK_FALSE, UINT64_MAX);
vkResetFences(m_Test->device, 1, &imageFences[semIdx]);
CHECK_VKR(vkWaitForFences(m_Test->device, 1, &imageFences[semIdx], VK_FALSE, UINT64_MAX));
CHECK_VKR(vkResetFences(m_Test->device, 1, &imageFences[semIdx]));
VkResult vkr = vkAcquireNextImageKHR(m_Test->device, swap, UINT64_MAX,
renderStartSemaphore[semIdx], imageFences[semIdx], &imgIndex);
@@ -1833,6 +1833,8 @@ void VulkanWindow::Present(VkQueue queue)
if(swap == VK_NULL_HANDLE)
return;
vkDeviceWaitIdle(device);
VkResult vkr =
vkQueuePresentKHR(queue, vkh::PresentInfoKHR(swap, imgIndex, &renderEndSemaphore[semIdx]));