From fdb09ca4019e2af16a743828d02295c0159a188d Mon Sep 17 00:00:00 2001 From: Martijn Courteaux Date: Tue, 8 Oct 2024 16:00:02 +0200 Subject: [PATCH] Insert vkDeviceWaitIdle to prevent VK_DEVICE_LOST. (#3363) --- src/renderer_vk.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index a7b8e3f41..82d7f14e7 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -7100,6 +7100,12 @@ VK_DESTROY const VkDevice device = s_renderVK->m_device; const VkAllocationCallbacks* allocatorCb = s_renderVK->m_allocatorCb; + // Waiting for the device to be idle seems to get rid of VK_DEVICE_LOST + // upon resizing the window quickly. (See https://github.com/mpv-player/mpv/issues/8360 + // and https://github.com/bkaradzic/bgfx/issues/3227). + result = vkDeviceWaitIdle(device); + BX_WARN(VK_SUCCESS == result, "Create swapchain error: vkDeviceWaitIdle() failed: %d: %s", result, getName(result)); + VkSurfaceCapabilitiesKHR surfaceCapabilities; result = vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, m_surface, &surfaceCapabilities);