diff --git a/src/freedreno/vulkan/tu_cmd_buffer.cc b/src/freedreno/vulkan/tu_cmd_buffer.cc index 6f7b40ce48e..f149b7bc5e9 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.cc +++ b/src/freedreno/vulkan/tu_cmd_buffer.cc @@ -4073,7 +4073,7 @@ tu_EndCommandBuffer(VkCommandBuffer commandBuffer) } if (cmd_buffer->vk.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) { - trace_end_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->cs); + trace_end_cmd_buffer(&cmd_buffer->trace, &cmd_buffer->cs, cmd_buffer); } else { trace_end_secondary_cmd_buffer( &cmd_buffer->trace, @@ -5075,6 +5075,9 @@ tu_CmdExecuteCommands(VkCommandBuffer commandBuffer, } } } + + cmd->state.total_renderpasses += secondary->state.total_renderpasses; + cmd->state.total_dispatches += secondary->state.total_dispatches; } cmd->state.index_size = secondary->state.index_size; /* for restart index update */ @@ -7631,6 +7634,8 @@ tu_dispatch(struct tu_cmd_buffer *cmd, if (emit_instrlen_workaround) { tu_emit_event_write(cmd, cs, FD_LABEL); } + + cmd->state.total_dispatches++; } template @@ -7738,6 +7743,8 @@ tu_CmdEndRenderPass2(VkCommandBuffer commandBuffer, vk_free(&cmd_buffer->vk.pool->alloc, cmd_buffer->state.attachments); tu_reset_render_pass(cmd_buffer); + + cmd_buffer->state.total_renderpasses++; } VKAPI_ATTR void VKAPI_CALL @@ -7810,6 +7817,10 @@ tu_CmdEndRendering2EXT(VkCommandBuffer commandBuffer, unreachable("suspending render pass not followed by resuming pass"); } } + + if (!cmd_buffer->state.suspending) { + cmd_buffer->state.total_renderpasses++; + } } void diff --git a/src/freedreno/vulkan/tu_cmd_buffer.h b/src/freedreno/vulkan/tu_cmd_buffer.h index 3e817cbcbb7..d010c8991f4 100644 --- a/src/freedreno/vulkan/tu_cmd_buffer.h +++ b/src/freedreno/vulkan/tu_cmd_buffer.h @@ -557,6 +557,9 @@ struct tu_cmd_state struct tu_tess_params tess_params; uint64_t descriptor_buffer_iova[MAX_SETS]; + + uint32_t total_renderpasses; + uint32_t total_dispatches; }; struct tu_cmd_buffer diff --git a/src/freedreno/vulkan/tu_tracepoints.py b/src/freedreno/vulkan/tu_tracepoints.py index cbe867e6f39..25a0c2fb2bc 100644 --- a/src/freedreno/vulkan/tu_tracepoints.py +++ b/src/freedreno/vulkan/tu_tracepoints.py @@ -73,7 +73,10 @@ 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='const char *', name='engineName', var='cmd->device->instance->vk.app_info.engine_name', c_format='%s')], + end_args=[ArgStruct(type='const struct tu_cmd_buffer *', var='cmd')], + end_tp_struct=[Arg(type='uint32_t', name='renderpasses', var='cmd->state.total_renderpasses', c_format='%u'), + Arg(type='uint32_t', name='dispatches', var='cmd->state.total_dispatches', c_format='%u')]) begin_end_tp('secondary_cmd_buffer', tp_default_enabled=False, args=[ArgStruct(type='const struct tu_cmd_buffer *', var='cmd')],