From 4f73689d9ae04338cbf88cd32f7747c99e6cd626 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 6 Feb 2025 20:21:33 +0200 Subject: [PATCH] anv: add source hashes for BVH building shaders Signed-off-by: Lionel Landwerlin Reviewed-by: Michael Cheng Part-of: --- src/intel/ds/intel_tracepoints.py | 17 +++---- .../vulkan/genX_acceleration_structure.c | 45 ++++++++++++++----- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/intel/ds/intel_tracepoints.py b/src/intel/ds/intel_tracepoints.py index bbe8347d9fc..ed1800d21d2 100644 --- a/src/intel/ds/intel_tracepoints.py +++ b/src/intel/ds/intel_tracepoints.py @@ -229,14 +229,15 @@ def define_tracepoints(args): tp_args=[Arg(type='uint32_t', var='count', c_format='%u'),], need_cs_param=True) - begin_end_tp('as_build') - begin_end_tp('as_build_leaves', maybe_compute=True) - begin_end_tp('as_morton_generate', maybe_compute=True) - begin_end_tp('as_morton_sort', maybe_compute=True) - begin_end_tp('as_lbvh_build_internal', maybe_compute=True) - begin_end_tp('as_ploc_build_internal', maybe_compute=True) - begin_end_tp('as_encode', maybe_compute=True) - begin_end_tp('as_copy', maybe_compute=True) + rt_args = [Arg(type='uint32_t', var='cs_hash', c_format='%u')] + begin_end_tp('as_build', tp_args=rt_args) + begin_end_tp('as_build_leaves', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_morton_generate', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_morton_sort', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_lbvh_build_internal', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_ploc_build_internal', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_encode', tp_args=rt_args, maybe_compute=True) + begin_end_tp('as_copy', tp_args=rt_args, maybe_compute=True) begin_end_tp('rays', tp_args=[Arg(type='uint32_t', var='group_x', c_format='%u'), diff --git a/src/intel/vulkan/genX_acceleration_structure.c b/src/intel/vulkan/genX_acceleration_structure.c index 92dcb02d6b1..505919ec25a 100644 --- a/src/intel/vulkan/genX_acceleration_structure.c +++ b/src/intel/vulkan/genX_acceleration_structure.c @@ -72,29 +72,39 @@ static void end_debug_marker(VkCommandBuffer commandBuffer) { ANV_FROM_HANDLE(anv_cmd_buffer, cmd_buffer, commandBuffer); + struct anv_cmd_compute_state *comp_state = &cmd_buffer->state.compute; + struct anv_compute_pipeline *pipeline = + anv_pipeline_to_compute(comp_state->base.pipeline); cmd_buffer->state.rt.debug_marker_count--; switch (cmd_buffer->state.rt.debug_markers[cmd_buffer->state.rt.debug_marker_count]) { case VK_ACCELERATION_STRUCTURE_BUILD_STEP_TOP: - trace_intel_end_as_build(&cmd_buffer->trace); + trace_intel_end_as_build(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_BUILD_LEAVES: - trace_intel_end_as_build_leaves(&cmd_buffer->trace); + trace_intel_end_as_build_leaves(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_MORTON_GENERATE: - trace_intel_end_as_morton_generate(&cmd_buffer->trace); + trace_intel_end_as_morton_generate(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_MORTON_SORT: - trace_intel_end_as_morton_sort(&cmd_buffer->trace); + trace_intel_end_as_morton_sort(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_LBVH_BUILD_INTERNAL: - trace_intel_end_as_lbvh_build_internal(&cmd_buffer->trace); + trace_intel_end_as_lbvh_build_internal(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_PLOC_BUILD_INTERNAL: - trace_intel_end_as_ploc_build_internal(&cmd_buffer->trace); + trace_intel_end_as_ploc_build_internal(&cmd_buffer->trace, + pipeline->source_hash); break; case VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE: - trace_intel_end_as_encode(&cmd_buffer->trace); + trace_intel_end_as_encode(&cmd_buffer->trace, + pipeline->source_hash); break; default: unreachable("Invalid build step"); @@ -713,6 +723,10 @@ genX(CmdCopyAccelerationStructureKHR)( return; } + ANV_FROM_HANDLE(anv_pipeline, anv_pipeline, pipeline); + struct anv_compute_pipeline *compute_pipeline = + anv_pipeline_to_compute(anv_pipeline); + struct anv_cmd_saved_state saved; anv_cmd_buffer_save_state(cmd_buffer, ANV_CMD_SAVED_STATE_COMPUTE_PIPELINE | @@ -755,7 +769,8 @@ genX(CmdCopyAccelerationStructureKHR)( anv_cmd_buffer_restore_state(cmd_buffer, &saved); - trace_intel_end_as_copy(&cmd_buffer->trace); + trace_intel_end_as_copy(&cmd_buffer->trace, + compute_pipeline->source_hash); } void @@ -780,6 +795,10 @@ genX(CmdCopyAccelerationStructureToMemoryKHR)( return; } + ANV_FROM_HANDLE(anv_pipeline, anv_pipeline, pipeline); + struct anv_compute_pipeline *compute_pipeline = + anv_pipeline_to_compute(anv_pipeline); + struct anv_cmd_saved_state saved; anv_cmd_buffer_save_state(cmd_buffer, ANV_CMD_SAVED_STATE_COMPUTE_PIPELINE | @@ -826,7 +845,8 @@ genX(CmdCopyAccelerationStructureToMemoryKHR)( anv_cmd_buffer_restore_state(cmd_buffer, &saved); - trace_intel_end_as_copy(&cmd_buffer->trace); + trace_intel_end_as_copy(&cmd_buffer->trace, + compute_pipeline->source_hash); } void @@ -850,6 +870,10 @@ genX(CmdCopyMemoryToAccelerationStructureKHR)( return; } + ANV_FROM_HANDLE(anv_pipeline, anv_pipeline, pipeline); + struct anv_compute_pipeline *compute_pipeline = + anv_pipeline_to_compute(anv_pipeline); + struct anv_cmd_saved_state saved; anv_cmd_buffer_save_state(cmd_buffer, ANV_CMD_SAVED_STATE_COMPUTE_PIPELINE | @@ -879,7 +903,8 @@ genX(CmdCopyMemoryToAccelerationStructureKHR)( vk_common_CmdDispatch(commandBuffer, 512, 1, 1); anv_cmd_buffer_restore_state(cmd_buffer, &saved); - trace_intel_end_as_copy(&cmd_buffer->trace); + trace_intel_end_as_copy(&cmd_buffer->trace, + compute_pipeline->source_hash); } void