diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_compute.cc b/src/gallium/drivers/freedreno/a6xx/fd6_compute.cc index 8dcfe929382..0306e70f1d3 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_compute.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_compute.cc @@ -126,7 +126,8 @@ fd6_launch_grid(struct fd_context *ctx, const struct pipe_grid_info *info) in_dt trace_start_compute(&ctx->batch->trace, ring, !!info->indirect, info->work_dim, info->block[0], info->block[1], info->block[2], - info->grid[0], info->grid[1], info->grid[2]); + info->grid[0], info->grid[1], info->grid[2], + cs->v->shader_id); if (ctx->batch->barrier) fd6_barrier_flush(ctx->batch); diff --git a/src/gallium/drivers/freedreno/freedreno_perfetto.cc b/src/gallium/drivers/freedreno/freedreno_perfetto.cc index 95612aeb558..89e22e4c20d 100644 --- a/src/gallium/drivers/freedreno/freedreno_perfetto.cc +++ b/src/gallium/drivers/freedreno/freedreno_perfetto.cc @@ -265,6 +265,13 @@ stage_end(struct pipe_context *pctx, uint64_t ts_ns, enum fd_stage_id stage) data->set_name("num_groups_z"); data->set_value(std::to_string(p->num_groups_z)); } + + { + auto data = event->add_extra_data(); + + data->set_name("shader_id"); + data->set_value(std::to_string(p->shader_id)); + } } }); } @@ -445,6 +452,7 @@ fd_start_compute(struct pipe_context *pctx, uint64_t ts_ns, p->num_groups_x = payload->num_groups_x; p->num_groups_y = payload->num_groups_y; p->num_groups_z = payload->num_groups_z; + p->shader_id = payload->shader_id; } void diff --git a/src/gallium/drivers/freedreno/freedreno_perfetto.h b/src/gallium/drivers/freedreno/freedreno_perfetto.h index 5216bb41d6d..7d0948b9d43 100644 --- a/src/gallium/drivers/freedreno/freedreno_perfetto.h +++ b/src/gallium/drivers/freedreno/freedreno_perfetto.h @@ -118,6 +118,7 @@ struct fd_perfetto_state { uint32_t num_groups_x; uint32_t num_groups_y; uint32_t num_groups_z; + uint32_t shader_id; }; void fd_perfetto_init(void); diff --git a/src/gallium/drivers/freedreno/freedreno_tracepoints.py b/src/gallium/drivers/freedreno/freedreno_tracepoints.py index 215d215c62d..30bc8164ce2 100644 --- a/src/gallium/drivers/freedreno/freedreno_tracepoints.py +++ b/src/gallium/drivers/freedreno/freedreno_tracepoints.py @@ -157,7 +157,8 @@ begin_end_tp('compute', TracepointArg(type='uint16_t', var='local_size_z', c_format='%u'), TracepointArg(type='uint32_t', var='num_groups_x', c_format='%u'), TracepointArg(type='uint32_t', var='num_groups_y', c_format='%u'), - TracepointArg(type='uint32_t', var='num_groups_z', c_format='%u')] + TracepointArg(type='uint32_t', var='num_groups_z', c_format='%u'), + TracepointArg(type='uint32_t', var='shader_id', c_format='%u')] ) utrace_generate(cpath=args.src,