diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index b05d68e08..8e728d398 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -288,6 +288,18 @@ void WrappedVulkan::vkFreeMemory( VkDeviceMemory unwrappedMem = wrapped->real.As(); + // there is an implicit unmap on free, so make sure to tidy up + if(wrapped->record->memMapState && wrapped->record->memMapState->refData) + Serialiser::FreeAlignedBuffer(wrapped->record->memMapState->refData); + + { + SCOPED_LOCK(m_CoherentMapsLock); + + auto it = std::find(m_CoherentMaps.begin(), m_CoherentMaps.end(), wrapped->record); + if(it != m_CoherentMaps.end()) + m_CoherentMaps.erase(it); + } + GetResourceManager()->ReleaseWrappedResource(memory); ObjDisp(device)->FreeMemory(Unwrap(device), unwrappedMem, pAllocator);