freedreno: Add the rest of tracepoints with start/end to perfetto
authorDanylo Piliaiev <dpiliaiev@igalia.com>
Tue, 31 May 2022 09:37:01 +0000 (12:37 +0300)
committerMarge Bot <emma+marge@anholt.net>
Tue, 12 Jul 2022 22:24:19 +0000 (22:24 +0000)
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16781>

src/gallium/drivers/freedreno/freedreno_perfetto.cc
src/gallium/drivers/freedreno/freedreno_perfetto.h
src/gallium/drivers/freedreno/freedreno_tracepoints.py

index 20b7c51..80ff6e3 100644 (file)
@@ -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
index 8831cec..c16eeb5 100644 (file)
@@ -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)"},
 };
 
 /**
index 095009b..4092152 100644 (file)
@@ -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',