From 5ebc85a6bd92b39c47f21de3ee8f39621b84ed2c Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Tue, 10 Nov 2026 10:43:37 +0000 Subject: [PATCH] Add Action and Callbacks to vkCmdBuildAccelerationStructuresIndirectKHR --- .../driver/vulkan/wrappers/vk_cmd_funcs.cpp | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index b14f8bb7b..d37b068e2 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -8615,15 +8615,37 @@ bool WrappedVulkan::Serialise_vkCmdBuildAccelerationStructuresIndirectKHR( if(IsActiveReplaying(m_State)) { if(InRerecordRange(m_LastCmdBufferID)) + { commandBuffer = RerecordCmdBuf(m_LastCmdBufferID); - else - return true; - } + uint32_t eventId = HandlePreCallback(commandBuffer, ActionFlags::BuildAccStruct); - ObjDisp(commandBuffer) - ->CmdBuildAccelerationStructuresIndirectKHR(Unwrap(commandBuffer), infoCount, - unwrappedInfos, pIndirectDeviceAddresses, - pIndirectStrides, tmpMaxPrimitiveCounts.data()); + ObjDisp(commandBuffer) + ->CmdBuildAccelerationStructuresIndirectKHR( + Unwrap(commandBuffer), infoCount, unwrappedInfos, pIndirectDeviceAddresses, + pIndirectStrides, tmpMaxPrimitiveCounts.data()); + + if(eventId && m_ActionCallback->PostMisc(eventId, ActionFlags::BuildAccStruct, commandBuffer)) + { + ObjDisp(commandBuffer) + ->CmdBuildAccelerationStructuresIndirectKHR( + Unwrap(commandBuffer), infoCount, unwrappedInfos, pIndirectDeviceAddresses, + pIndirectStrides, tmpMaxPrimitiveCounts.data()); + m_ActionCallback->PostRemisc(eventId, ActionFlags::BuildAccStruct, commandBuffer); + } + } + } + else + { + ObjDisp(commandBuffer) + ->CmdBuildAccelerationStructuresIndirectKHR( + Unwrap(commandBuffer), infoCount, unwrappedInfos, pIndirectDeviceAddresses, + pIndirectStrides, tmpMaxPrimitiveCounts.data()); + + AddEvent(); + ActionDescription action; + action.flags = ActionFlags::BuildAccStruct; + AddAction(action); + } } return true;