diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 1b7e5f6f6..a25601793 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -214,6 +214,8 @@ void *GPUBuffer::Map(uint32_t *bindoffset, VkDeviceSize usedsize) if(bindoffset) *bindoffset = (uint32_t)offset; + mapoffset = offset; + void *ptr = NULL; VkResult vkr = m_pDriver->vkMapMemory(device, mem, offset, size, 0, (void **)&ptr); RDCASSERTEQUAL(vkr, VK_SUCCESS); @@ -247,7 +249,7 @@ void GPUBuffer::Unmap() if(!(createFlags & eGPUBufferReadback) && !(createFlags & eGPUBufferGPULocal)) { VkMappedMemoryRange range = { - VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, NULL, mem, 0, VK_WHOLE_SIZE, + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, NULL, mem, mapoffset, VK_WHOLE_SIZE, }; VkResult vkr = m_pDriver->vkFlushMappedMemoryRanges(device, 1, &range); diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index d5b5be068..b6cbbe384 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -167,6 +167,7 @@ struct GPUBuffer // for handling ring allocations VkDeviceSize totalsize = 0; VkDeviceSize curoffset = 0; + VkDeviceSize mapoffset = 0; uint32_t ringCount = 0;