Module: Mesa
Branch: main
Commit: 487c213142861e7e9774ff733ca5d1cc4d86245a
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=487c213142861e7e9774ff733ca5d1cc4d86245a

Author: Iago Toral Quiroga <[email protected]>
Date:   Fri May  6 11:24:07 2022 +0200

v3d/compiler: add more stats to prog_data

So we can expose them via VK_KHR_pipeline_executable_properties.

Reviewed-by: Alejandro PiƱeiro <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16370>

---

 src/broadcom/compiler/v3d_compiler.h | 8 ++++++++
 src/broadcom/compiler/vir.c          | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/src/broadcom/compiler/v3d_compiler.h 
b/src/broadcom/compiler/v3d_compiler.h
index db4a4c41f8b..ac15af06f78 100644
--- a/src/broadcom/compiler/v3d_compiler.h
+++ b/src/broadcom/compiler/v3d_compiler.h
@@ -739,6 +739,8 @@ struct v3d_compile {
          */
         uint32_t max_tmu_spills;
 
+        uint32_t compile_strategy_idx;
+
         /* The UBO index and block used with the last unifa load, as well as 
the
          * current unifa offset *after* emitting that load. This is used to 
skip
          * unifa writes (and their 3 delay slot) when the next UBO load reads
@@ -914,6 +916,12 @@ struct v3d_prog_data {
         struct v3d_uniform_list uniforms;
 
         uint32_t spill_size;
+        uint32_t tmu_spills;
+        uint32_t tmu_fills;
+
+        uint32_t qpu_read_stalls;
+
+        uint8_t compile_strategy_idx;
 
         uint8_t threads;
 
diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c
index 1a9ad5303d7..3de40e050db 100644
--- a/src/broadcom/compiler/vir.c
+++ b/src/broadcom/compiler/vir.c
@@ -549,6 +549,7 @@ vir_compile_init(const struct v3d_compiler *compiler,
                                       void *debug_output_data),
                  void *debug_output_data,
                  int program_id, int variant_id,
+                 uint32_t compile_strategy_idx,
                  uint32_t max_threads,
                  uint32_t min_threads_for_reg_alloc,
                  uint32_t max_tmu_spills,
@@ -565,6 +566,7 @@ vir_compile_init(const struct v3d_compiler *compiler,
         c->key = key;
         c->program_id = program_id;
         c->variant_id = variant_id;
+        c->compile_strategy_idx = compile_strategy_idx;
         c->threads = max_threads;
         c->debug_output = debug_output;
         c->debug_output_data = debug_output_data;
@@ -851,6 +853,10 @@ v3d_set_prog_data(struct v3d_compile *c,
         prog_data->threads = c->threads;
         prog_data->single_seg = !c->last_thrsw;
         prog_data->spill_size = c->spill_size;
+        prog_data->tmu_spills = c->spills;
+        prog_data->tmu_fills = c->fills;
+        prog_data->qpu_read_stalls = c->qpu_inst_stalled_count;
+        prog_data->compile_strategy_idx = c->compile_strategy_idx;
         prog_data->tmu_dirty_rcl = c->tmu_dirty_rcl;
         prog_data->has_control_barrier = c->s->info.uses_control_barrier;
 
@@ -1795,6 +1801,7 @@ uint64_t *v3d_compile(const struct v3d_compiler *compiler,
                 c = vir_compile_init(compiler, key, s,
                                      debug_output, debug_output_data,
                                      program_id, variant_id,
+                                     strat,
                                      strategies[strat].max_threads,
                                      strategies[strat].min_threads,
                                      strategies[strat].max_tmu_spills,

Reply via email to