From a98a5fe92343646814dc84eb0b4d7c55fdc09912 Mon Sep 17 00:00:00 2001 From: baldurk Date: Sun, 17 Jan 2016 10:53:57 +0100 Subject: [PATCH] Make sure to unwrap parameters to vkInvalidateMappedMemoryRanges --- .../driver/vulkan/wrappers/vk_resource_funcs.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index dba3969f4..e22fbb7d8 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -555,7 +555,7 @@ VkResult WrappedVulkan::vkFlushMappedMemoryRanges( } } - VkMappedMemoryRange *unwrapped = new VkMappedMemoryRange[memRangeCount]; + VkMappedMemoryRange *unwrapped = GetTempArray(memRangeCount); for(uint32_t i=0; i < memRangeCount; i++) { unwrapped[i] = pMemRanges[i]; @@ -564,8 +564,6 @@ VkResult WrappedVulkan::vkFlushMappedMemoryRanges( VkResult ret = ObjDisp(device)->FlushMappedMemoryRanges(Unwrap(device), memRangeCount, unwrapped); - SAFE_DELETE_ARRAY(unwrapped); - return ret; } @@ -574,9 +572,16 @@ VkResult WrappedVulkan::vkInvalidateMappedMemoryRanges( uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) { + VkMappedMemoryRange *unwrapped = GetTempArray(memRangeCount); + for(uint32_t i=0; i < memRangeCount; i++) + { + unwrapped[i] = pMemRanges[i]; + unwrapped[i].memory = Unwrap(unwrapped[i].memory); + } + // don't need to serialise this, readback from mapped memory is not captured // and is only relevant for the application. - return ObjDisp(device)->InvalidateMappedMemoryRanges(Unwrap(device), memRangeCount, pMemRanges); + return ObjDisp(device)->InvalidateMappedMemoryRanges(Unwrap(device), memRangeCount, unwrapped); } // Generic API object functions