anv: track generated commands work with perfetto

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Acked-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31384>
This commit is contained in:
Lionel Landwerlin 2024-08-12 20:49:49 +03:00 committed by Marge Bot
parent badcfc164d
commit e69062f8c9
3 changed files with 22 additions and 2 deletions

View file

@ -485,7 +485,8 @@ CREATE_DUAL_EVENT_CALLBACK(xfb, INTEL_DS_QUEUE_STAGE_CMD_BUFFER)
CREATE_DUAL_EVENT_CALLBACK(compute, INTEL_DS_QUEUE_STAGE_COMPUTE)
CREATE_DUAL_EVENT_CALLBACK(compute_indirect, INTEL_DS_QUEUE_STAGE_COMPUTE)
CREATE_DUAL_EVENT_CALLBACK(generate_draws, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(generate_commands, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(generate_cmds_pre, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(generate_cmds_post, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(trace_copy, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(trace_copy_cb, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)
CREATE_DUAL_EVENT_CALLBACK(query_clear_blorp, INTEL_DS_QUEUE_STAGE_INTERNAL_OPS)

View file

@ -163,7 +163,10 @@ def define_tracepoints(args):
# Indirect draw generation, only for Anv
begin_end_tp('generate_draws')
begin_end_tp('generate_commands')
# Generated commands, only for Anv
begin_end_tp('generate_cmds_pre')
begin_end_tp('generate_cmds_post')
# vkCmdResetQuery, only for Anv
begin_end_tp('query_clear_blorp',

View file

@ -50,6 +50,8 @@ preprocess_gfx_sequences(struct anv_cmd_buffer *cmd_buffer,
const VkGeneratedCommandsInfoEXT *info,
enum anv_internal_kernel_name kernel_name)
{
trace_intel_begin_generate_cmds_pre(&cmd_buffer->trace);
struct anv_device *device = cmd_buffer->device;
struct anv_cmd_graphics_state *gfx = &cmd_buffer_state->state.gfx;
@ -158,6 +160,8 @@ preprocess_gfx_sequences(struct anv_cmd_buffer *cmd_buffer,
genX(emit_simple_shader_dispatch)(&simple_state, info->maxSequenceCount,
push_data_state);
trace_intel_end_generate_cmds_pre(&cmd_buffer->trace);
return params;
}
@ -217,6 +221,8 @@ preprocess_cs_sequences(struct anv_cmd_buffer *cmd_buffer,
enum anv_internal_kernel_name kernel_name,
bool emit_driver_values)
{
trace_intel_begin_generate_cmds_pre(&cmd_buffer->trace);
struct anv_device *device = cmd_buffer->device;
struct anv_cmd_compute_state *comp_state = &cmd_buffer_state->state.compute;
struct anv_cmd_pipeline_state *pipe_state = &comp_state->base;
@ -353,6 +359,8 @@ preprocess_cs_sequences(struct anv_cmd_buffer *cmd_buffer,
info->maxSequenceCount,
push_data_state);
trace_intel_end_generate_cmds_pre(&cmd_buffer->trace);
return params;
}
@ -362,6 +370,8 @@ postprocess_cs_sequences(struct anv_cmd_buffer *cmd_buffer,
struct anv_indirect_execution_set *indirect_set,
const VkGeneratedCommandsInfoEXT *info)
{
trace_intel_begin_generate_cmds_post(&cmd_buffer->trace);
struct anv_device *device = cmd_buffer->device;
/**/
@ -446,6 +456,8 @@ postprocess_cs_sequences(struct anv_cmd_buffer *cmd_buffer,
info->maxSequenceCount,
push_data_state);
trace_intel_end_generate_cmds_post(&cmd_buffer->trace);
return params;
}
@ -458,6 +470,8 @@ preprocess_rt_sequences(struct anv_cmd_buffer *cmd_buffer,
const VkGeneratedCommandsInfoEXT *info,
enum anv_internal_kernel_name kernel_name)
{
trace_intel_begin_generate_cmds_pre(&cmd_buffer->trace);
struct anv_device *device = cmd_buffer->device;
struct anv_cmd_ray_tracing_state *rt_state = &cmd_buffer_state->state.rt;
struct anv_cmd_pipeline_state *pipe_state = &rt_state->base;
@ -611,6 +625,8 @@ preprocess_rt_sequences(struct anv_cmd_buffer *cmd_buffer,
info->maxSequenceCount,
push_data_state);
trace_intel_end_generate_cmds_pre(&cmd_buffer->trace);
return params;
}
#endif /* GFX_VERx10 >= 125 */