From 34dca01cb267fbd78bf9fb74dde2abc4de1b869b Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 26 Jan 2021 15:21:47 +0000 Subject: [PATCH] Don't rely on creation info during capture, it isn't populated * On capture when we need the buffer size we can get it from the resource record. --- .../vulkan/wrappers/vk_resource_funcs.cpp | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp index a49087619..81c0d203d 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_resource_funcs.cpp @@ -517,26 +517,10 @@ VkResult WrappedVulkan::vkAllocateMemory(VkDevice device, const VkMemoryAllocate { // either set the buffer that's dedicated, or if this is dedicated image memory set NULL wholeMemBuf = dedicated->buffer; - - VkDeviceSize bufSize = m_CreationInfo.m_Buffer[GetResID(dedicated->buffer)].size; - if(memSize > bufSize) - { - RDCDEBUG("Truncating memory size %llu to dedicated buffer size %llu for %s", memSize, - bufSize, ToStr(id).c_str()); - memSize = bufSize; - } } else if(dedicatedNV) { wholeMemBuf = dedicatedNV->buffer; - - VkDeviceSize bufSize = m_CreationInfo.m_Buffer[GetResID(dedicatedNV->buffer)].size; - if(memSize > bufSize) - { - RDCDEBUG("Truncating memory size %llu to dedicated buffer size %llu for %s", memSize, - bufSize, ToStr(id).c_str()); - memSize = bufSize; - } } else { @@ -556,6 +540,19 @@ VkResult WrappedVulkan::vkAllocateMemory(VkDevice device, const VkMemoryAllocate ObjDisp(device)->BindBufferMemory(Unwrap(device), Unwrap(wholeMemBuf), Unwrap(*pMemory), 0); } + if((dedicated != NULL || dedicatedNV != NULL) && wholeMemBuf != VK_NULL_HANDLE) + { + VkDeviceSize bufSize = IsCaptureMode(m_State) + ? GetRecord(wholeMemBuf)->memSize + : m_CreationInfo.m_Buffer[GetResID(wholeMemBuf)].size; + if(memSize > bufSize) + { + RDCDEBUG("Truncating memory size %llu to dedicated buffer size %llu for %s", memSize, + bufSize, ToStr(id).c_str()); + memSize = bufSize; + } + } + if(IsCaptureMode(m_State)) { Chunk *chunk = NULL;