tu: Don't enable secondary command buffer tracepoint by default

Secondary command buffers don't add much information to the traces, but
add more noise and overhead. In order to disable their tracepoints by
default, a separate "secondary_cmd_buffer" tracepoint is created.

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34588>
This commit is contained in:
Danylo Piliaiev 2025-04-17 19:15:14 +02:00 committed by Marge Bot
parent 9dfd4a091c
commit 99b23235a6
3 changed files with 17 additions and 8 deletions

View file

@ -3173,11 +3173,10 @@ tu_BeginCommandBuffer(VkCommandBuffer commandBuffer,
pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT;
if (u_trace_enabled(&cmd_buffer->device->trace_context)) {
trace_start_cmd_buffer(
trace_start_secondary_cmd_buffer(
&cmd_buffer->trace,
pass_continue ? &cmd_buffer->draw_cs : &cmd_buffer->cs,
cmd_buffer, tu_env_debug_as_string(),
ir3_shader_debug_as_string());
cmd_buffer);
}
assert(pBeginInfo->pInheritanceInfo);
@ -4065,16 +4064,20 @@ tu_EndCommandBuffer(VkCommandBuffer commandBuffer)
if (cmd_buffer->state.pass) {
tu_clean_all_pending(&cmd_buffer->state.renderpass_cache);
tu_emit_cache_flush_renderpass<CHIP>(cmd_buffer);
trace_end_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->draw_cs);
} else {
tu_clean_all_pending(&cmd_buffer->state.cache);
cmd_buffer->state.cache.flush_bits |=
TU_CMD_FLAG_CCU_CLEAN_COLOR |
TU_CMD_FLAG_CCU_CLEAN_DEPTH;
tu_emit_cache_flush<CHIP>(cmd_buffer);
}
if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) {
trace_end_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->cs);
} else {
trace_end_secondary_cmd_buffer(
&cmd_buffer->trace,
cmd_buffer->state.pass ? &cmd_buffer->draw_cs : &cmd_buffer->cs);
}
tu_cs_end(&cmd_buffer->cs);

View file

@ -46,6 +46,7 @@ enum tu_stage_id {
CMD_BUFFER_STAGE_ID,
CMD_BUFFER_ANNOTATION_STAGE_ID,
RENDER_PASS_STAGE_ID,
SECONDARY_CMD_BUFFER_STAGE_ID,
CMD_BUFFER_ANNOTATION_RENDER_PASS_STAGE_ID,
BINNING_STAGE_ID,
GMEM_STAGE_ID,
@ -75,6 +76,7 @@ static const struct {
[CMD_BUFFER_STAGE_ID] = { "Command Buffer" },
[CMD_BUFFER_ANNOTATION_STAGE_ID] = { "Annotation", "Command Buffer Annotation" },
[RENDER_PASS_STAGE_ID] = { "Render Pass" },
[SECONDARY_CMD_BUFFER_STAGE_ID] = { "Secondary Command Buffer" },
[CMD_BUFFER_ANNOTATION_RENDER_PASS_STAGE_ID] = { "Annotation", "Render Pass Command Buffer Annotation" },
[BINNING_STAGE_ID] = { "Binning", "Perform Visibility pass and determine target bins" },
[GMEM_STAGE_ID] = { "GMEM", "Rendering to GMEM" },
@ -511,6 +513,7 @@ tu_perfetto_end_submit(struct tu_queue *queue,
}
CREATE_EVENT_CALLBACK(cmd_buffer, CMD_BUFFER_STAGE_ID)
CREATE_EVENT_CALLBACK(secondary_cmd_buffer, SECONDARY_CMD_BUFFER_STAGE_ID)
CREATE_EVENT_CALLBACK(render_pass, RENDER_PASS_STAGE_ID)
CREATE_EVENT_CALLBACK(binning_ib, BINNING_STAGE_ID)
CREATE_EVENT_CALLBACK(draw_ib_gmem, GMEM_STAGE_ID)

View file

@ -73,9 +73,12 @@ begin_end_tp('cmd_buffer',
Arg(type='str', var='TUdebugFlags', c_format='%s', length_arg='96', copy_func='strncpy'),
Arg(type='str', var='IR3debugFlags', c_format='%s', length_arg='96', copy_func='strncpy')],
tp_struct=[Arg(type='const char *', name='appName', var='cmd->device->instance->vk.app_info.app_name', c_format='%s'),
Arg(type='const char *', name='engineName', var='cmd->device->instance->vk.app_info.engine_name', c_format='%s'),
Arg(type='VkCommandBufferLevel', name='level', var='cmd->vk.level', c_format='%s', to_prim_type='vk_CommandBufferLevel_to_str({})'),
Arg(type='uint8_t', name='render_pass_continue', var='!!(cmd->usage_flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)', c_format='%u')])
Arg(type='const char *', name='engineName', var='cmd->device->instance->vk.app_info.engine_name', c_format='%s')])
begin_end_tp('secondary_cmd_buffer', tp_default_enabled=False,
args=[ArgStruct(type='const struct tu_cmd_buffer *', var='cmd')],
tp_struct=[Arg(type='uint8_t', name='render_pass_continue', var='!!(cmd->usage_flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT)', c_format='%u')])
begin_end_tp('render_pass',
args=[ArgStruct(type='const struct tu_framebuffer *', var='fb'),