From 55d788f43416c482cff950be560d6ce6e680daa3 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Wed, 12 Apr 2023 16:31:38 -0700 Subject: [PATCH] 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: --- src/intel/ds/intel_tracepoints.py | 9 ++++++--- src/intel/vulkan/anv_utrace.c | 1 + src/intel/vulkan/genX_cmd_buffer.c | 9 +++++++-- src/intel/vulkan_hasvk/genX_cmd_buffer.c | 4 +++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/intel/ds/intel_tracepoints.py b/src/intel/ds/intel_tracepoints.py index e2c303bf5a1..e9fe49b96e5 100644 --- a/src/intel/ds/intel_tracepoints.py +++ b/src/intel/ds/intel_tracepoints.py @@ -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'),]) diff --git a/src/intel/vulkan/anv_utrace.c b/src/intel/vulkan/anv_utrace.c index 54c1ec6f10f..da4f9a870e3 100644 --- a/src/intel/vulkan/anv_utrace.c +++ b/src/intel/vulkan/anv_utrace.c @@ -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); } diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 402b6127160..5bdec9cf6d0 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -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, diff --git a/src/intel/vulkan_hasvk/genX_cmd_buffer.c b/src/intel/vulkan_hasvk/genX_cmd_buffer.c index 04701da9169..41499a4a782 100644 --- a/src/intel/vulkan_hasvk/genX_cmd_buffer.c +++ b/src/intel/vulkan_hasvk/genX_cmd_buffer.c @@ -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);