From 82e79f6cdfbf51a4c0f77c659fb2e879d3f29d12 Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Tue, 31 May 2022 12:37:01 +0300 Subject: [PATCH] freedreno: Add the rest of tracepoints with start/end to perfetto Signed-off-by: Danylo Piliaiev Part-of: --- .../drivers/freedreno/freedreno_perfetto.cc | 48 ++++++++++++++++++++++ src/gallium/drivers/freedreno/freedreno_perfetto.h | 8 +++- .../drivers/freedreno/freedreno_tracepoints.py | 18 +++++--- 3 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/freedreno/freedreno_perfetto.cc b/src/gallium/drivers/freedreno/freedreno_perfetto.cc index 20b7c51..80ff6e3 100644 --- a/src/gallium/drivers/freedreno/freedreno_perfetto.cc +++ b/src/gallium/drivers/freedreno/freedreno_perfetto.cc @@ -449,6 +449,54 @@ fd_end_resolve(struct pipe_context *pctx, uint64_t ts_ns, stage_end(pctx, ts_ns, RESOLVE_STAGE_ID); } +void +fd_start_state_restore(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_start_state_restore *payload) +{ + stage_start(pctx, ts_ns, STATE_RESTORE_STAGE_ID); +} + +void +fd_end_state_restore(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_end_state_restore *payload) +{ + stage_end(pctx, ts_ns, STATE_RESTORE_STAGE_ID); +} + +void +fd_start_vsc_overflow_test(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_start_vsc_overflow_test *payload) +{ + stage_start(pctx, ts_ns, VSC_OVERFLOW_STAGE_ID); +} + +void +fd_end_vsc_overflow_test(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_end_vsc_overflow_test *payload) +{ + stage_end(pctx, ts_ns, VSC_OVERFLOW_STAGE_ID); +} + +void +fd_start_prologue(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_start_prologue *payload) +{ + stage_start(pctx, ts_ns, PROLOGUE_STAGE_ID); +} + +void +fd_end_prologue(struct pipe_context *pctx, uint64_t ts_ns, + const void *flush_data, + const struct trace_end_prologue *payload) +{ + stage_end(pctx, ts_ns, PROLOGUE_STAGE_ID); +} + #ifdef __cplusplus } #endif diff --git a/src/gallium/drivers/freedreno/freedreno_perfetto.h b/src/gallium/drivers/freedreno/freedreno_perfetto.h index 8831cec..c16eeb5 100644 --- a/src/gallium/drivers/freedreno/freedreno_perfetto.h +++ b/src/gallium/drivers/freedreno/freedreno_perfetto.h @@ -42,7 +42,9 @@ enum fd_stage_id { COMPUTE_STAGE_ID, CLEAR_RESTORE_STAGE_ID, RESOLVE_STAGE_ID, - // TODO add the rest + STATE_RESTORE_STAGE_ID, + VSC_OVERFLOW_STAGE_ID, + PROLOGUE_STAGE_ID, NUM_STAGES }; @@ -59,7 +61,9 @@ static const struct { [COMPUTE_STAGE_ID] = {"Compute", "Compute job"}, [CLEAR_RESTORE_STAGE_ID] = {"Clear/Restore", "Clear (sysmem) or per-tile clear or restore (GMEM)"}, [RESOLVE_STAGE_ID] = {"Resolve", "Per tile resolve (GMEM to system memory"}, - // TODO add the rest + [STATE_RESTORE_STAGE_ID] = {"State Restore", "Setup at the beginning of new cmdstream buffer"}, + [VSC_OVERFLOW_STAGE_ID] = {"VSC Overflow Test", ""}, + [PROLOGUE_STAGE_ID] = {"Prologue", "Preemble cmdstream (executed once before first tile)"}, }; /** diff --git a/src/gallium/drivers/freedreno/freedreno_tracepoints.py b/src/gallium/drivers/freedreno/freedreno_tracepoints.py index 095009b..4092152 100644 --- a/src/gallium/drivers/freedreno/freedreno_tracepoints.py +++ b/src/gallium/drivers/freedreno/freedreno_tracepoints.py @@ -47,8 +47,10 @@ from u_trace import utrace_generate Header('util/u_dump.h') Header('freedreno_batch.h') -Tracepoint('start_state_restore') -Tracepoint('end_state_restore') +Tracepoint('start_state_restore', + tp_perfetto='fd_start_state_restore') +Tracepoint('end_state_restore', + tp_perfetto='fd_end_state_restore') Tracepoint('flush_batch', args=[TracepointArg(type='struct fd_batch *', var='batch', c_format='%x'), @@ -93,11 +95,15 @@ Tracepoint('start_binning_ib', Tracepoint('end_binning_ib', tp_perfetto='fd_end_binning_ib') -Tracepoint('start_vsc_overflow_test') -Tracepoint('end_vsc_overflow_test') +Tracepoint('start_vsc_overflow_test', + tp_perfetto='fd_start_vsc_overflow_test') +Tracepoint('end_vsc_overflow_test', + tp_perfetto='fd_end_vsc_overflow_test') -Tracepoint('start_prologue') -Tracepoint('end_prologue') +Tracepoint('start_prologue', + tp_perfetto='fd_start_prologue') +Tracepoint('end_prologue', + tp_perfetto='fd_end_prologue') # For GMEM pass, where this could either be a clear or resolve Tracepoint('start_clear_restore', -- 2.7.4