vulkan: Add more detail to encode debug markers

Useful for radv because radv has quite a few different configurations.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36982>
This commit is contained in:
Konstantin Seurer
2025-08-25 14:38:25 +02:00
committed by Marge Bot
parent 5c94e20abe
commit 850f339b89
4 changed files with 46 additions and 17 deletions
+3 -1
View File
@@ -241,7 +241,9 @@ def define_tracepoints(args):
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,
tp_args=[Arg(type='uint32_t', var='n_leaves', c_format='%u'),
tp_args=[Arg(type='uint32_t', var='pass', c_format='%u'),
Arg(type='uint32_t', var='key', c_format='%x'),
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)
@@ -92,6 +92,8 @@ end_debug_marker(VkCommandBuffer commandBuffer,
break;
case VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE:
trace_intel_end_as_encode(&cmd_buffer->trace,
marker->encode.pass,
marker->encode.key,
marker->encode.leaf_node_count,
marker->encode.internal_node_count);
break;
+36 -14
View File
@@ -472,9 +472,13 @@ vk_accel_struct_cmd_begin_debug_marker(VkCommandBuffer commandBuffer,
snprintf(name, sizeof(name), "ploc_build_internal");
break;
case VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE:
snprintf(name, sizeof(name), "encode(leaf_node_count=%u, internal_node_count=%u)",
marker->encode.leaf_node_count, marker->encode.internal_node_count);
case VK_ACCELERATION_STRUCTURE_BUILD_STEP_UPDATE: {
const char *type = marker->step == VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE ? "encode" : "update";
snprintf(name, sizeof(name), "%s(pass=%u, key=0x%x, leaf_node_count=%u, internal_node_count=%u)",
type, marker->encode.pass, marker->encode.key, marker->encode.leaf_node_count,
marker->encode.internal_node_count);
break;
}
default:
UNREACHABLE("Invalid build step");
}
@@ -1234,17 +1238,8 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
vk_barrier_compute_w_to_indirect_compute_r(commandBuffer);
}
struct vk_acceleration_structure_build_marker encode_marker = {
.step = VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE,
};
if (args->emit_markers) {
for ( uint32_t i = 0; i < infoCount; i++) {
encode_marker.encode.leaf_node_count += bvh_states[i].vk.leaf_node_count;
encode_marker.encode.internal_node_count += bvh_states[i].internal_node_count;
}
device->as_build_ops->begin_debug_marker(commandBuffer, &encode_marker);
}
struct vk_acceleration_structure_build_marker encode_marker;
bool inside_encode_marker = false;
for (unsigned pass = 0; pass < ARRAY_SIZE(ops->encode_as); pass++) {
if (!ops->encode_as[pass] && !ops->update_as[pass])
@@ -1271,6 +1266,33 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
encode_key = bvh_states[i].vk.config.encode_key[pass];
update_key = bvh_states[i].vk.config.update_key[pass];
progress = true;
if (args->emit_markers) {
if (inside_encode_marker)
device->as_build_ops->end_debug_marker(commandBuffer, &encode_marker);
memset(&encode_marker, 0, sizeof(encode_marker));
encode_marker.step = update ? VK_ACCELERATION_STRUCTURE_BUILD_STEP_UPDATE
: VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE;
encode_marker.encode.pass = pass;
encode_marker.encode.key = update ? update_key : encode_key;
for (uint32_t j = 0; j < infoCount; j++) {
if (update != (bvh_states[j].vk.config.internal_type ==
VK_INTERNAL_BUILD_TYPE_UPDATE) ||
encode_key != bvh_states[j].vk.config.encode_key[pass] ||
update_key != bvh_states[j].vk.config.update_key[pass])
continue;
encode_marker.encode.leaf_node_count += bvh_states[j].vk.leaf_node_count;
encode_marker.encode.internal_node_count += bvh_states[j].internal_node_count;
}
device->as_build_ops->begin_debug_marker(commandBuffer, &encode_marker);
inside_encode_marker = true;
}
if (update)
ops->update_bind_pipeline[pass](commandBuffer, &bvh_states[i].vk);
else
@@ -1293,7 +1315,7 @@ vk_cmd_build_acceleration_structures(VkCommandBuffer commandBuffer,
} while (progress);
}
if (args->emit_markers)
if (inside_encode_marker)
device->as_build_ops->end_debug_marker(commandBuffer, &encode_marker);
if (args->emit_markers)
@@ -44,6 +44,7 @@ enum vk_acceleration_structure_build_step {
VK_ACCELERATION_STRUCTURE_BUILD_STEP_LBVH_BUILD_INTERNAL,
VK_ACCELERATION_STRUCTURE_BUILD_STEP_PLOC_BUILD_INTERNAL,
VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE,
VK_ACCELERATION_STRUCTURE_BUILD_STEP_UPDATE,
};
struct vk_acceleration_structure_build_marker {
@@ -52,11 +53,13 @@ struct vk_acceleration_structure_build_marker {
struct {
uint32_t blas_count;
uint32_t tlas_count;
} top;
} top; /* Used for VK_ACCELERATION_STRUCTURE_BUILD_STEP_TOP */
struct {
uint32_t pass;
uint32_t key;
uint32_t leaf_node_count;
uint32_t internal_node_count;
} encode;
} encode; /* Used for VK_ACCELERATION_STRUCTURE_BUILD_STEP_ENCODE, VK_ACCELERATION_STRUCTURE_BUILD_STEP_UPDATE */
};
};