From 8af9ee634c5b87669136588fb9302b6c6b1101ca Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 26 Apr 2016 08:17:01 +0200 Subject: [PATCH] Handle VK_WHOLE_SIZE in vkFlushMappedMemoryRanges --- .../driver/vulkan/wrappers/vk_resource_funcs.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index b863a81bc..41c05e8d7 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -532,18 +532,25 @@ bool WrappedVulkan::Serialise_vkFlushMappedMemoryRanges( { SERIALISE_ELEMENT(ResourceId, devId, GetResID(device)); SERIALISE_ELEMENT(ResourceId, id, GetResID(pMemRanges->memory)); + + VkDeviceSize memRangeSize = 1; MemMapState *state = NULL; if(m_State >= WRITING) { - state = GetRecord(pMemRanges->memory)->memMapState; + VkResourceRecord *record = GetRecord(pMemRanges->memory); + state = record->memMapState; + + memRangeSize = pMemRanges->size; + if(memRangeSize == VK_WHOLE_SIZE) + memRangeSize = record->Length - pMemRanges->offset; // don't support any extensions on VkMappedMemoryRange RDCASSERT(pMemRanges->pNext == NULL); } SERIALISE_ELEMENT(uint64_t, memOffset, pMemRanges->offset); - SERIALISE_ELEMENT(uint64_t, memSize, pMemRanges->size); + SERIALISE_ELEMENT(uint64_t, memSize, memRangeSize); SERIALISE_ELEMENT_BUF(byte*, data, state->mappedPtr + (size_t)memOffset, (size_t)memSize); // if we need to save off this serialised buffer as reference for future comparison,