Incorrect command buffer used on Vulkan AS copy replay

This commit is contained in:
Cam Mannett
2024-11-15 10:48:24 +00:00
committed by Baldur Karlsson
parent 83ac6d3697
commit 59cc12ff3f
@@ -7878,19 +7878,24 @@ bool WrappedVulkan::Serialise_vkCmdBuildAccelerationStructuresKHR(
if(IsActiveReplaying(m_State))
{
if(InRerecordRange(m_LastCmdBufferID))
{
commandBuffer = RerecordCmdBuf(m_LastCmdBufferID);
else
return true;
ObjDisp(commandBuffer)
->CmdBuildAccelerationStructuresKHR(Unwrap(commandBuffer), infoCount, unwrappedInfos,
tmpBuildRangeInfos.data());
}
}
else
{
ObjDisp(commandBuffer)
->CmdBuildAccelerationStructuresKHR(Unwrap(commandBuffer), infoCount, unwrappedInfos,
tmpBuildRangeInfos.data());
ObjDisp(commandBuffer)
->CmdBuildAccelerationStructuresKHR(Unwrap(commandBuffer), infoCount, unwrappedInfos,
tmpBuildRangeInfos.data());
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
}
}
return true;
@@ -7971,12 +7976,25 @@ bool WrappedVulkan::Serialise_vkCmdCopyAccelerationStructureKHR(
unwrappedInfo.src = Unwrap(unwrappedInfo.src);
unwrappedInfo.dst = Unwrap(unwrappedInfo.dst);
ObjDisp(commandBuffer)->CmdCopyAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
m_LastCmdBufferID = GetResourceManager()->GetOriginalID(GetResID(commandBuffer));
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
if(IsActiveReplaying(m_State))
{
if(InRerecordRange(m_LastCmdBufferID))
{
commandBuffer = RerecordCmdBuf(m_LastCmdBufferID);
ObjDisp(commandBuffer)->CmdCopyAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
}
}
else
{
ObjDisp(commandBuffer)->CmdCopyAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
}
}
return true;
@@ -8054,12 +8072,27 @@ bool WrappedVulkan::Serialise_vkCmdCopyMemoryToAccelerationStructureKHR(
VkCopyMemoryToAccelerationStructureInfoKHR unwrappedInfo = Info;
unwrappedInfo.dst = Unwrap(unwrappedInfo.dst);
ObjDisp(commandBuffer)->CmdCopyMemoryToAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
m_LastCmdBufferID = GetResourceManager()->GetOriginalID(GetResID(commandBuffer));
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
if(IsActiveReplaying(m_State))
{
if(InRerecordRange(m_LastCmdBufferID))
{
commandBuffer = RerecordCmdBuf(m_LastCmdBufferID);
ObjDisp(commandBuffer)
->CmdCopyMemoryToAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
}
}
else
{
ObjDisp(commandBuffer)
->CmdCopyMemoryToAccelerationStructureKHR(Unwrap(commandBuffer), &unwrappedInfo);
AddEvent();
ActionDescription action;
action.flags = ActionFlags::BuildAccStruct;
AddAction(action);
}
}
return true;