From a4d733b2e6bb22dc3798e849ad29de50620352a2 Mon Sep 17 00:00:00 2001 From: Alix Bott Date: Tue, 3 Oct 2023 22:24:54 +0200 Subject: [PATCH] Fix x11 hang when resizing on vulkan (#4184) Co-authored-by: Connor Fitzgerald --- wgpu-hal/src/vulkan/instance.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wgpu-hal/src/vulkan/instance.rs b/wgpu-hal/src/vulkan/instance.rs index 18269fff77..2dda7a2c3a 100644 --- a/wgpu-hal/src/vulkan/instance.rs +++ b/wgpu-hal/src/vulkan/instance.rs @@ -157,6 +157,12 @@ impl super::Swapchain { /// - The device must have been made idle before calling this function. unsafe fn release_resources(self, device: &ash::Device) -> Self { profiling::scope!("Swapchain::release_resources"); + { + profiling::scope!("vkDeviceWaitIdle"); + // We need to also wait until all presentation work is done. Because there is no way to portably wait until + // the presentation work is done, we are forced to wait until the device is idle. + let _ = unsafe { device.device_wait_idle() }; + }; unsafe { device.destroy_fence(self.fence, None) }; self }