From 4ed48c9bf4cf5d8f4b8d9fb81f304dd344083930 Mon Sep 17 00:00:00 2001 From: Benson Joeris Date: Fri, 8 Mar 2019 16:52:03 -0500 Subject: [PATCH] Fix race in memory reference tracking --- renderdoc/driver/vulkan/vk_manager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/vulkan/vk_manager.cpp b/renderdoc/driver/vulkan/vk_manager.cpp index a639d5089..f0cec2f95 100644 --- a/renderdoc/driver/vulkan/vk_manager.cpp +++ b/renderdoc/driver/vulkan/vk_manager.cpp @@ -680,6 +680,8 @@ ResourceId VulkanResourceManager::GetFirstIDForHandle(uint64_t handle) void VulkanResourceManager::MarkMemoryFrameReferenced(ResourceId mem, VkDeviceSize offset, VkDeviceSize size, FrameRefType refType) { + SCOPED_LOCK(m_Lock); + FrameRefType maxRef = MarkMemoryReferenced(m_MemFrameRefs, mem, offset, size, refType); MarkResourceFrameReferenced( mem, maxRef, [](FrameRefType x, FrameRefType y) -> FrameRefType { return std::max(x, y); }); @@ -687,6 +689,8 @@ void VulkanResourceManager::MarkMemoryFrameReferenced(ResourceId mem, VkDeviceSi void VulkanResourceManager::MergeReferencedMemory(std::map &memRefs) { + SCOPED_LOCK(m_Lock); + for(auto j = memRefs.begin(); j != memRefs.end(); j++) { auto i = m_MemFrameRefs.find(j->first); @@ -699,6 +703,8 @@ void VulkanResourceManager::MergeReferencedMemory(std::map void VulkanResourceManager::ClearReferencedMemory() { + SCOPED_LOCK(m_Lock); + m_MemFrameRefs.clear(); }