From 442a7ee509e9187b852408caf9f7d72b3362d368 Mon Sep 17 00:00:00 2001 From: Lander Gallastegi Date: Tue, 22 Apr 2025 20:49:38 +0200 Subject: [PATCH] Copy to avoid deadlock --- src/video_core/renderer_vulkan/vk_rasterizer.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 0938f3236..a8e6d92ac 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -469,11 +469,13 @@ bool Rasterizer::BindResources(const Pipeline* pipeline) { // First, import any queued host memory, then sync every mapped // region that is cached on GPU memory. buffer_cache.CoverQueuedRegions(); - { + // I feel bad for doing this copy + auto mapped_ranges_copy = ([this]() { std::shared_lock lock(mapped_ranges_mutex); - for (const auto& range : mapped_ranges) { - buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower()); - } + return mapped_ranges; + })(); + for (const auto& range : mapped_ranges_copy) { + buffer_cache.SynchronizeRange(range.lower(), range.upper() - range.lower()); } buffer_cache.ResetFaultReadbackBuffer(); }