From 105d6f57a6289c3404943d0c917e2bfe141bee9e Mon Sep 17 00:00:00 2001 From: Martijn Courteaux Date: Tue, 8 Oct 2024 10:57:39 +0200 Subject: [PATCH] Insert vkDeviceWaitIdle to prevent VK_DEVICE_LOST. --- src/renderer_vk.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index a7b8e3f412..82d7f14e7a 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);