diff --git a/src/d3d11/d3d11_swapchain.cpp b/src/d3d11/d3d11_swapchain.cpp index e32c31332..a0320d1e4 100644 --- a/src/d3d11/d3d11_swapchain.cpp +++ b/src/d3d11/d3d11_swapchain.cpp @@ -227,7 +227,7 @@ namespace dxvk { uint32_t imageIndex = 0; VkResult status = m_presenter->acquireNextImage( - sync.acquire, VK_NULL_HANDLE, imageIndex); + sync.acquire, sync.fence, imageIndex); while (status != VK_SUCCESS && status != VK_SUBOPTIMAL_KHR) { RecreateSwapChain(m_vsync); @@ -236,9 +236,12 @@ namespace dxvk { sync = m_presenter->getSyncSemaphores(); status = m_presenter->acquireNextImage( - sync.acquire, VK_NULL_HANDLE, imageIndex); + sync.acquire, sync.fence, imageIndex); } + // Wait for image to become actually available + m_presenter->waitForFence(sync.fence); + // Use an appropriate texture filter depending on whether // the back buffer size matches the swap image size bool fitSize = m_swapImage->info().extent.width == info.imageExtent.width