vulkan: add leaves and ir_leaves sizes to encode for utrace.
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Expose number of leaves and ir_leaves to the debug marker for encode.

Signed-off-by: Michael Cheng <michael.cheng@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34200>
This commit is contained in:
Michael Cheng 2025-03-12 13:02:04 -07:00 committed by Marge Bot
parent 36aa0bd964
commit 169e7acee1
4 changed files with 24 additions and 5 deletions

View file

@ -237,7 +237,9 @@ def define_tracepoints(args):
begin_end_tp('as_morton_sort', repeat_last=True)
begin_end_tp('as_lbvh_build_internal', repeat_last=True)
begin_end_tp('as_ploc_build_internal', repeat_last=True)
begin_end_tp('as_encode', repeat_last=True)
begin_end_tp('as_encode', repeat_last=True,
tp_args=[Arg(type='uint32_t', var='n_leaves', c_format='%u'),
Arg(type='uint32_t', var='n_ir_leaves', c_format='%u')])
begin_end_tp('as_copy', repeat_last=True)
begin_end_tp('rays',

View file

@ -4090,6 +4090,8 @@ struct anv_cmd_ray_tracing_state {
uint32_t debug_marker_count;
uint32_t num_tlas;
uint32_t num_blas;
uint32_t num_leaves;
uint32_t num_ir_nodes;
enum vk_acceleration_structure_build_step debug_markers[5];
struct anv_address build_priv_mem_addr;

View file

@ -68,8 +68,15 @@ begin_debug_marker(VkCommandBuffer commandBuffer,
trace_intel_begin_as_ploc_build_internal(&cmd_buffer->trace);
break;
case VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE:
{
va_list args;
va_start(args, format);
cmd_buffer->state.rt.num_leaves = va_arg(args, uint32_t);
cmd_buffer->state.rt.num_ir_nodes = va_arg(args, uint32_t);
va_end(args);
trace_intel_begin_as_encode(&cmd_buffer->trace);
break;
}
default:
unreachable("Invalid build step");
}
@ -103,7 +110,7 @@ end_debug_marker(VkCommandBuffer commandBuffer)
trace_intel_end_as_ploc_build_internal(&cmd_buffer->trace);
break;
case VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE:
trace_intel_end_as_encode(&cmd_buffer->trace);
trace_intel_end_as_encode(&cmd_buffer->trace, cmd_buffer->state.rt.num_leaves, cmd_buffer->state.rt.num_ir_nodes);
break;
default:
unreachable("Invalid build step");

View file

@ -1168,11 +1168,19 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
vk_barrier_compute_w_to_indirect_compute_r(commandBuffer);
}
if (args->emit_markers) {
/* Calculate number of leaves and internal nodes to encode */
uint32_t num_leaves = 0;
uint32_t num_internal_node = 0;
for ( uint32_t i = 0; i < infoCount; i++) {
num_leaves += bvh_states[i].leaf_node_count;
num_internal_node += bvh_states[i].internal_node_count;
}
if (args->emit_markers)
device->as_build_ops->begin_debug_marker(commandBuffer,
VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE,
"encode");
}
"encode_leaves=%u encode_ir_node=%u",
num_leaves, num_internal_node);
for (unsigned pass = 0; pass < ARRAY_SIZE(ops->encode_as); pass++) {
if (!ops->encode_as[pass] && !ops->update_as[pass])