From b87792f721baaa7469d3197a074df3723e46d1cc Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 4 Oct 2018 12:54:51 +0100 Subject: [PATCH] Store map offset in GPUBuffer so we only flush the mapped range --- renderdoc/driver/vulkan/vk_common.cpp | 4 +++- renderdoc/driver/vulkan/vk_common.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) 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;