From 97488c0a79f49063d802fb295c11934f2f59db82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 2 May 2023 22:04:14 +0200 Subject: [PATCH] Vulkan: Before cleaning the shader managers, drain the shader compile queue. Mainly paranoia, but might help with the mutex crash from #17364 --- Common/GPU/Vulkan/VulkanRenderManager.h | 2 +- GPU/Vulkan/GPU_Vulkan.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Common/GPU/Vulkan/VulkanRenderManager.h b/Common/GPU/Vulkan/VulkanRenderManager.h index 3cad859e8d..b0ca50d4bf 100644 --- a/Common/GPU/Vulkan/VulkanRenderManager.h +++ b/Common/GPU/Vulkan/VulkanRenderManager.h @@ -456,13 +456,13 @@ public: void Invalidate(InvalidationFlags flags); void ResetStats(); + void DrainCompileQueue(); private: void EndCurRenderStep(); void ThreadFunc(); void CompileThreadFunc(); - void DrainCompileQueue(); void Run(VKRRenderThreadTask &task); diff --git a/GPU/Vulkan/GPU_Vulkan.cpp b/GPU/Vulkan/GPU_Vulkan.cpp index 30fec133c4..ee68954fd3 100644 --- a/GPU/Vulkan/GPU_Vulkan.cpp +++ b/GPU/Vulkan/GPU_Vulkan.cpp @@ -182,6 +182,9 @@ void GPU_Vulkan::SaveCache(const Path &filename) { } GPU_Vulkan::~GPU_Vulkan() { + VulkanRenderManager *rm = (VulkanRenderManager *)draw_->GetNativeObject(Draw::NativeObject::RENDER_MANAGER); + rm->DrainCompileQueue(); + SaveCache(shaderCachePath_); // Note: We save the cache in DeviceLost DestroyDeviceObjects();