anv: add source hashes for BVH building shaders

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Michael Cheng <michael.cheng@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33432>
This commit is contained in:
Lionel Landwerlin 2025-02-06 20:21:33 +02:00 committed by Marge Bot
parent 1aa21c27d4
commit 4f73689d9a
2 changed files with 44 additions and 18 deletions

View file

@ -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'),

View file

@ -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