From: José Roberto de Souza Date: Wed, 12 Jul 2023 20:26:27 +0000 (-0700) Subject: vulkan: Wait for device to be idle before create/recreating swapchain X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~64^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=526c0404c28aafa2e5632c26657c1a9dbd713a96;p=gtk4.git vulkan: Wait for device to be idle before create/recreating swapchain Wait for device to be idle because this function is also called in window resizes. And if we destroy old swapchain it also destroy the old VkImages, those images could be in use by a vulkan render. This fixes a issue reported in Mesa repository when running GTK with Xe KMD. Fixes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9044 Signed-off-by: José Roberto de Souza --- diff --git a/gdk/gdkvulkancontext.c b/gdk/gdkvulkancontext.c index 541104928c..4b7efecddc 100644 --- a/gdk/gdkvulkancontext.c +++ b/gdk/gdkvulkancontext.c @@ -383,6 +383,13 @@ gdk_vulkan_context_check_swapchain (GdkVulkanContext *context, device = gdk_vulkan_context_get_device (context); + /* + * Wait for device to be idle because this function is also called in window resizes. + * And if we destroy old swapchain it also destroy the old VkImages, those images could + * be in use by a vulkan render. + */ + vkDeviceWaitIdle (device); + res = GDK_VK_CHECK (vkGetPhysicalDeviceSurfaceCapabilitiesKHR, gdk_vulkan_context_get_physical_device (context), priv->surface, &capabilities);