diff --git a/src/video_core/buffer_cache/buffer_cache_base.h b/src/video_core/buffer_cache/buffer_cache_base.h index a96ce04c35..ed50634683 100644 --- a/src/video_core/buffer_cache/buffer_cache_base.h +++ b/src/video_core/buffer_cache/buffer_cache_base.h @@ -318,7 +318,7 @@ public: } while (channel_state->has_deleted_buffers); } - std::mutex mutex; + std::recursive_mutex mutex; Runtime& runtime; private: diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h index d0435f045e..e1019f2285 100644 --- a/src/video_core/query_cache.h +++ b/src/video_core/query_cache.h @@ -300,7 +300,7 @@ private: } void AsyncFlushQuery(CachedQuery* query, std::optional timestamp, - std::unique_lock& lock) { + std::unique_lock& lock) { const AsyncJobId new_async_job_id = slot_async_jobs.insert(); { AsyncJob& async_job = slot_async_jobs[new_async_job_id]; @@ -346,7 +346,7 @@ private: VideoCore::RasterizerInterface& rasterizer; Tegra::MaxwellDeviceMemoryManager& device_memory; - mutable std::mutex mutex; + mutable std::recursive_mutex mutex; std::unordered_map> cached_queries; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 7976e04d3b..602509bfdb 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -713,7 +713,7 @@ void RasterizerOpenGL::AccelerateInlineToMemory(GPUVAddr address, size_t copy_si } gpu_memory->WriteBlockUnsafe(address, memory.data(), copy_size); { - std::unique_lock lock{buffer_cache.mutex}; + std::unique_lock lock{buffer_cache.mutex}; if (!buffer_cache.InlineMemory(*cpu_addr, copy_size, memory)) { buffer_cache.WriteMemory(*cpu_addr, copy_size); } diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 914ec04b25..4650e827b3 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -882,7 +882,7 @@ void RasterizerVulkan::AccelerateInlineToMemory(GPUVAddr address, size_t copy_si } gpu_memory->WriteBlockUnsafe(address, memory.data(), copy_size); { - std::unique_lock lock{buffer_cache.mutex}; + std::unique_lock lock{buffer_cache.mutex}; if (!buffer_cache.InlineMemory(*cpu_addr, copy_size, memory)) { buffer_cache.WriteMemory(*cpu_addr, copy_size); } diff --git a/src/video_core/texture_cache/texture_cache_base.h b/src/video_core/texture_cache/texture_cache_base.h index 99122ba952..42f1a158d9 100644 --- a/src/video_core/texture_cache/texture_cache_base.h +++ b/src/video_core/texture_cache/texture_cache_base.h @@ -269,7 +269,7 @@ public: /// Prepare an image to be used void PrepareImage(ImageId image_id, bool is_modification, bool invalidate); - std::mutex mutex; + std::recursive_mutex mutex; private: /// Iterate over all page indices in a range