anv/ds: Associate the VkCommandBuffer some anv-only renderstage events.

This means the perfetto UI will have a non-zero/NULL handle/name in the UI
on these renderstages.  Unfortunately, intel/ds is outside of vulkan so
unless we pull in anv headers, we can't just pass in the anv_cmd_buffer.
This also means it would be much more painful to pass the cmd buffer to
the rest of the events, so they'll still have unset command buffers.
Still, being able to see the name of the command buffer in at least one of
the events should be useful once that's glued together.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22350>
This commit is contained in:
Emma Anholt 2023-04-12 16:31:38 -07:00 committed by Marge Bot
parent f873b15a48
commit 55d788f434
4 changed files with 17 additions and 6 deletions

View file

@ -103,12 +103,14 @@ def define_tracepoints(args):
# Command buffer tracepoints, only for Anv
begin_end_tp('cmd_buffer',
tp_args=[Arg(type='uint8_t', var='level', c_format='%hhu'),],
tp_args=[Arg(type='uint64_t', var='command_buffer_handle', c_format='%" PRIu64 "', perfetto_field=True),
Arg(type='uint8_t', var='level', c_format='%hhu'),],
end_pipelined=False)
# Annotations for Cmd(Begin|End)DebugUtilsLabelEXT
begin_end_tp('cmd_buffer_annotation',
tp_args=[Arg(type='unsigned', var='len'),
tp_args=[Arg(type='uint64_t', var='command_buffer_handle', c_format='%" PRIu64 "', perfetto_field=True),
Arg(type='unsigned', var='len'),
Arg(type='str', var='str', c_format='%s', length_arg='len + 1', copy_func='strncpy'),],
tp_struct=[Arg(type='uint8_t', name='dummy', var='0'),],
end_pipelined=True)
@ -119,7 +121,8 @@ def define_tracepoints(args):
# Dynamic rendering tracepoints, only for Anv
begin_end_tp('render_pass',
tp_args=[Arg(type='uint16_t', var='width', c_format='%hu'),
tp_args=[Arg(type='uint64_t', var='command_buffer_handle', c_format='%" PRIu64 "', perfetto_field=True),
Arg(type='uint16_t', var='width', c_format='%hu'),
Arg(type='uint16_t', var='height', c_format='%hu'),
Arg(type='uint8_t', var='att_count', c_format='%hhu'),
Arg(type='uint8_t', var='msaa', c_format='%hhu'),])

View file

@ -580,6 +580,7 @@ void anv_CmdEndDebugUtilsLabelEXT(VkCommandBuffer _commandBuffer)
util_dynarray_top_ptr(&cmd_buffer->vk.labels, VkDebugUtilsLabelEXT);
trace_intel_end_cmd_buffer_annotation(&cmd_buffer->trace,
(uintptr_t)(vk_command_buffer_to_handle(&cmd_buffer->vk)),
strlen(label->pLabelName),
label->pLabelName);
}

View file

@ -3436,7 +3436,9 @@ end_command_buffer(struct anv_cmd_buffer *cmd_buffer)
if (anv_cmd_buffer_is_video_queue(cmd_buffer) ||
anv_cmd_buffer_is_blitter_queue(cmd_buffer)) {
trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer->vk.level);
trace_intel_end_cmd_buffer(&cmd_buffer->trace,
(uintptr_t)(vk_command_buffer_to_handle(&cmd_buffer->vk)),
cmd_buffer->vk.level);
genX(cmd_buffer_apply_pipe_flushes)(cmd_buffer);
anv_cmd_buffer_end_batch_buffer(cmd_buffer);
return VK_SUCCESS;
@ -3483,7 +3485,9 @@ end_command_buffer(struct anv_cmd_buffer *cmd_buffer)
genX(cmd_buffer_set_protected_memory)(cmd_buffer, false);
#endif
trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer->vk.level);
trace_intel_end_cmd_buffer(&cmd_buffer->trace,
(uintptr_t)(vk_command_buffer_to_handle(&cmd_buffer->vk)),
cmd_buffer->vk.level);
anv_cmd_buffer_end_batch_buffer(cmd_buffer);
@ -6044,6 +6048,7 @@ void genX(CmdEndRendering)(
}
trace_intel_end_render_pass(&cmd_buffer->trace,
(uintptr_t)(vk_command_buffer_to_handle(&cmd_buffer->vk)),
gfx->render_area.extent.width,
gfx->render_area.extent.height,
gfx->color_att_count,

View file

@ -1512,7 +1512,9 @@ genX(EndCommandBuffer)(
emit_isp_disable(cmd_buffer);
trace_intel_end_cmd_buffer(&cmd_buffer->trace, cmd_buffer->vk.level);
trace_intel_end_cmd_buffer(&cmd_buffer->trace,
(uintptr_t)(vk_command_buffer_to_handle(&cmd_buffer->vk)),
cmd_buffer->vk.level);
anv_cmd_buffer_end_batch_buffer(cmd_buffer);