ac/perfcounters: remove ac_pc_block_base::num_prelude
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 4 Jun 2021 06:55:17 +0000 (08:55 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 22 Jun 2021 06:38:54 +0000 (06:38 +0000)
This seems unnecessary if the first select register is correctly set.
This CB filter was always disabled anyways.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11186>

src/amd/common/ac_perfcounter.c
src/amd/common/ac_perfcounter.h
src/gallium/drivers/radeonsi/si_perfcounter.c

index 011dda1..721c5f4 100644 (file)
@@ -33,10 +33,9 @@ static struct ac_pc_block_base cik_CB = {
    .num_counters = 4,
    .flags = AC_PC_BLOCK_SE | AC_PC_BLOCK_INSTANCE_GROUPS,
 
-   .select0 = R_037000_CB_PERFCOUNTER_FILTER,
+   .select0 = R_037004_CB_PERFCOUNTER0_SELECT,
    .counter0_lo = R_035018_CB_PERFCOUNTER0_LO,
    .num_multi = 1,
-   .num_prelude = 1,
    .layout = AC_PC_MULTI_ALTERNATE,
 };
 
index 8383681..99cba13 100644 (file)
@@ -118,7 +118,6 @@ struct ac_pc_block_base {
    unsigned *select;
    unsigned *counters;
    unsigned num_multi;
-   unsigned num_prelude;
    unsigned layout;
 };
 
index a8c497c..c7ee570 100644 (file)
@@ -103,7 +103,6 @@ static void si_pc_emit_select(struct si_context *sctx, struct ac_pc_block *block
    struct radeon_cmdbuf *cs = &sctx->gfx_cs;
    unsigned idx;
    unsigned layout_multi = regs->layout & AC_PC_MULTI_MASK;
-   unsigned dw;
 
    assert(count <= regs->num_counters);
 
@@ -114,13 +113,11 @@ static void si_pc_emit_select(struct si_context *sctx, struct ac_pc_block *block
 
    if (layout_multi == AC_PC_MULTI_BLOCK) {
       assert(!(regs->layout & AC_PC_REG_REVERSE));
+      unsigned reg_count = count;
 
-      dw = count + regs->num_prelude;
       if (count >= regs->num_multi)
-         dw += regs->num_multi;
-      radeon_set_uconfig_reg_seq(cs, regs->select0, dw, false);
-      for (idx = 0; idx < regs->num_prelude; ++idx)
-         radeon_emit(cs, 0);
+         reg_count += regs->num_multi;
+      radeon_set_uconfig_reg_seq(cs, regs->select0, reg_count, false);
       for (idx = 0; idx < MIN2(count, regs->num_multi); ++idx)
          radeon_emit(cs, selectors[idx] | regs->select_or);
 
@@ -141,9 +138,7 @@ static void si_pc_emit_select(struct si_context *sctx, struct ac_pc_block *block
 
       assert(!(regs->layout & AC_PC_REG_REVERSE));
 
-      radeon_set_uconfig_reg_seq(cs, regs->select0, count + regs->num_prelude, false);
-      for (idx = 0; idx < regs->num_prelude; ++idx)
-         radeon_emit(cs, 0);
+      radeon_set_uconfig_reg_seq(cs, regs->select0, count, false);
       for (idx = 0; idx < count; ++idx)
          radeon_emit(cs, selectors[idx] | regs->select_or);
 
@@ -164,13 +159,10 @@ static void si_pc_emit_select(struct si_context *sctx, struct ac_pc_block *block
 
       unsigned reg_base = regs->select0;
       unsigned reg_count = count + MIN2(count, regs->num_multi);
-      reg_count += regs->num_prelude;
 
       if (!(regs->layout & AC_PC_REG_REVERSE)) {
          radeon_set_uconfig_reg_seq(cs, reg_base, reg_count, false);
 
-         for (idx = 0; idx < regs->num_prelude; ++idx)
-            radeon_emit(cs, 0);
          for (idx = 0; idx < count; ++idx) {
             radeon_emit(cs, selectors[idx] | regs->select_or);
             if (idx < regs->num_multi)
@@ -185,8 +177,6 @@ static void si_pc_emit_select(struct si_context *sctx, struct ac_pc_block *block
                radeon_emit(cs, 0);
             radeon_emit(cs, selectors[idx - 1] | regs->select_or);
          }
-         for (idx = 0; idx < regs->num_prelude; ++idx)
-            radeon_emit(cs, 0);
       }
    }
    radeon_end();