diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index aaeaf5255..046ce0903 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -1011,6 +1011,12 @@ struct ImageState; struct CmdBufferRecordingInfo { + ~CmdBufferRecordingInfo() + { + if(alloc) + alloc->ResetPageSet(pageSet); + } + VkDevice device; VkCommandBufferAllocateInfo allocInfo; diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 4aec92f93..700f8bc78 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1020,8 +1020,6 @@ VkResult WrappedVulkan::vkBeginCommandBuffer(VkCommandBuffer commandBuffer, if(record->bakedCommands) record->bakedCommands->Delete(GetResourceManager()); - record->cmdInfo->alloc->ResetPageSet(record->cmdInfo->pageSet); - record->bakedCommands = GetResourceManager()->AddResourceRecord(ResourceIDGen::GetNewUniqueID()); record->bakedCommands->DisableChunkLocking(); record->bakedCommands->InternalResource = true; @@ -1242,7 +1240,7 @@ VkResult WrappedVulkan::vkEndCommandBuffer(VkCommandBuffer commandBuffer) // if we can't reset command buffers there's no need to claim a set of pages if(record->pool->cmdPoolInfo->allowCmdBufReset) - record->cmdInfo->pageSet = record->cmdInfo->alloc->GetPageSet(); + record->bakedCommands->cmdInfo->pageSet = record->cmdInfo->alloc->GetPageSet(); record->Bake(); } @@ -1272,8 +1270,6 @@ VkResult WrappedVulkan::vkResetCommandBuffer(VkCommandBuffer commandBuffer, if(record->bakedCommands) record->bakedCommands->Delete(GetResourceManager()); - record->cmdInfo->alloc->ResetPageSet(record->cmdInfo->pageSet); - record->bakedCommands = NULL; }