Add missing references not being tracked in background on vulkan

This commit is contained in:
baldurk
2020-06-16 15:27:40 +01:00
parent 6915f07184
commit 36f5c90757
@@ -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());
}
}
}