mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-11-07 14:35:48 +00:00
Protect against un-recorded command buffers being executed
This commit is contained in:
1 parent
4c609ab714
commit
d671a9c2cc
1 file changed
+15
-6
@@ -807,11 +807,17 @@ bool WrappedVulkan::Serialise_vkCmdExecuteCommands(
|
||||
{
|
||||
ResourceId id;
|
||||
if(m_State >= WRITING)
|
||||
id = GetRecord(pCmdBuffers[i])->bakedCommands->GetResourceID();
|
||||
{
|
||||
VkResourceRecord *bakedCommands = GetRecord(pCmdBuffers[i])->bakedCommands;
|
||||
if(bakedCommands)
|
||||
id = bakedCommands->GetResourceID();
|
||||
else
|
||||
RDCERR("Command Buffer %p was not recorded", pCmdBuffers[i]);
|
||||
}
|
||||
|
||||
localSerialiser->Serialise("pCmdBuffers[]", id);
|
||||
|
||||
if(m_State < WRITING)
|
||||
if(m_State < WRITING && id != ResourceId())
|
||||
{
|
||||
cmdids.push_back(id);
|
||||
cmds.push_back(Unwrap(GetResourceManager()->GetLiveHandle<VkCommandBuffer>(id)));
|
||||
@@ -869,11 +875,14 @@ void WrappedVulkan::vkCmdExecuteCommands(
|
||||
for(uint32_t i=0; i < commandBufferCount; i++)
|
||||
{
|
||||
VkResourceRecord *execRecord = GetRecord(pCmdBuffers[i]);
|
||||
record->cmdInfo->dirtied.insert(execRecord->bakedCommands->cmdInfo->dirtied.begin(), execRecord->bakedCommands->cmdInfo->dirtied.end());
|
||||
record->cmdInfo->boundDescSets.insert(execRecord->bakedCommands->cmdInfo->boundDescSets.begin(), execRecord->bakedCommands->cmdInfo->boundDescSets.end());
|
||||
record->cmdInfo->subcmds.push_back(execRecord);
|
||||
if(execRecord->bakedCommands)
|
||||
{
|
||||
record->cmdInfo->dirtied.insert(execRecord->bakedCommands->cmdInfo->dirtied.begin(), execRecord->bakedCommands->cmdInfo->dirtied.end());
|
||||
record->cmdInfo->boundDescSets.insert(execRecord->bakedCommands->cmdInfo->boundDescSets.begin(), execRecord->bakedCommands->cmdInfo->boundDescSets.end());
|
||||
record->cmdInfo->subcmds.push_back(execRecord);
|
||||
|
||||
GetResourceManager()->MergeBarriers(record->cmdInfo->imgbarriers, execRecord->bakedCommands->cmdInfo->imgbarriers);
|
||||
GetResourceManager()->MergeBarriers(record->cmdInfo->imgbarriers, execRecord->bakedCommands->cmdInfo->imgbarriers);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user