diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 704a922e2..9cbd89214 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -1032,7 +1032,32 @@ VkResult WrappedVulkan::vkQueueSubmit(VkQueue queue, uint32_t submitCount, { VkResourceRecord *record = GetRecord(pSubmits[s].pCommandBuffers[i]); + for(auto it = record->bakedCommands->cmdInfo->boundDescSets.begin(); + it != record->bakedCommands->cmdInfo->boundDescSets.end(); ++it) + { + VkResourceRecord *setrecord = GetRecord(*it); + + SCOPED_LOCK(setrecord->descInfo->refLock); + + for(auto refit = setrecord->descInfo->bindFrameRefs.begin(); + refit != setrecord->descInfo->bindFrameRefs.end(); ++refit) + { + GetResourceManager()->MarkResourceFrameReferenced(refit->first, refit->second.second); + + if(refit->second.first & DescriptorSetData::SPARSE_REF_BIT) + { + VkResourceRecord *sparserecord = + GetResourceManager()->GetResourceRecord(refit->first); + + GetResourceManager()->MarkSparseMapReferenced(sparserecord->resInfo); + } + } + } + record->bakedCommands->AddResourceReferences(GetResourceManager()); + + for(VkResourceRecord *sub : record->bakedCommands->cmdInfo->subcmds) + sub->bakedCommands->AddResourceReferences(GetResourceManager()); } } }