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

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Wed Oct 25 04:30:41 2023 -0400

radeonsi: move SPI_SHADER_IDX_FORMAT into the preamble (it's immutable)

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-pra...@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26095>

---

 src/gallium/drivers/radeonsi/si_gfx_cs.c          | 1 -
 src/gallium/drivers/radeonsi/si_shader.h          | 1 -
 src/gallium/drivers/radeonsi/si_state.c           | 2 ++
 src/gallium/drivers/radeonsi/si_state.h           | 3 +--
 src/gallium/drivers/radeonsi/si_state_shaders.cpp | 8 +++-----
 5 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_gfx_cs.c 
b/src/gallium/drivers/radeonsi/si_gfx_cs.c
index b22f4d24951..65e661ef44d 100644
--- a/src/gallium/drivers/radeonsi/si_gfx_cs.c
+++ b/src/gallium/drivers/radeonsi/si_gfx_cs.c
@@ -215,7 +215,6 @@ void si_set_tracked_regs_to_clear_state(struct si_context 
*ctx)
    ctx->tracked_regs.context_reg_value[SI_TRACKED_PA_CL_GB_HORZ_CLIP_ADJ] = 
0x3f800000;
    ctx->tracked_regs.context_reg_value[SI_TRACKED_PA_CL_GB_HORZ_DISC_ADJ] = 
0x3f800000;
 
-   ctx->tracked_regs.context_reg_value[SI_TRACKED_SPI_SHADER_IDX_FORMAT] = 0;
    ctx->tracked_regs.context_reg_value[SI_TRACKED_SPI_SHADER_POS_FORMAT] = 0;
 
    ctx->tracked_regs.context_reg_value[SI_TRACKED_SPI_SHADER_Z_FORMAT] = 0;
diff --git a/src/gallium/drivers/radeonsi/si_shader.h 
b/src/gallium/drivers/radeonsi/si_shader.h
index 5d5816f619b..95038c70dba 100644
--- a/src/gallium/drivers/radeonsi/si_shader.h
+++ b/src/gallium/drivers/radeonsi/si_shader.h
@@ -940,7 +940,6 @@ struct si_shader {
          unsigned vgt_gs_instance_cnt;
          unsigned esgs_vertex_stride;
          unsigned spi_vs_out_config;
-         unsigned spi_shader_idx_format;
          unsigned spi_shader_pos_format;
          unsigned pa_cl_vte_cntl;
          unsigned vgt_gs_max_vert_out; /* for API GS */
diff --git a/src/gallium/drivers/radeonsi/si_state.c 
b/src/gallium/drivers/radeonsi/si_state.c
index 34bf648a0ea..909500c82ea 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -6022,6 +6022,8 @@ static void gfx10_init_gfx_preamble_state(struct 
si_context *sctx)
                       S_028410_FMASK_RD_POLICY(V_028410_CACHE_NOA_GFX10) |
                       S_028410_COLOR_RD_POLICY(V_028410_CACHE_NOA_GFX10)) |
                   S_028410_DCC_RD_POLICY(meta_read_policy));
+   si_pm4_set_reg(pm4, R_028708_SPI_SHADER_IDX_FORMAT,
+                  S_028708_IDX0_EXPORT_FORMAT(V_028708_SPI_SHADER_1COMP));
 
    if (sctx->gfx_level >= GFX10_3)
       si_pm4_set_reg(pm4, R_028750_SX_PS_DOWNCONVERT_CONTROL, 0xff);
diff --git a/src/gallium/drivers/radeonsi/si_state.h 
b/src/gallium/drivers/radeonsi/si_state.h
index 542db0faa05..0d094b4ce95 100644
--- a/src/gallium/drivers/radeonsi/si_state.h
+++ b/src/gallium/drivers/radeonsi/si_state.h
@@ -250,8 +250,7 @@ enum si_tracked_context_reg
    SI_TRACKED_PA_CL_GB_HORZ_CLIP_ADJ,
    SI_TRACKED_PA_CL_GB_HORZ_DISC_ADJ,
 
-   /* 2 consecutive registers */
-   SI_TRACKED_SPI_SHADER_IDX_FORMAT,
+   /* Non-consecutive register */
    SI_TRACKED_SPI_SHADER_POS_FORMAT,
 
    /* 2 consecutive registers */
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp 
b/src/gallium/drivers/radeonsi/si_state_shaders.cpp
index 07594052efb..9137c7a2503 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp
@@ -1199,10 +1199,9 @@ static void gfx10_emit_shader_ngg(struct si_context 
*sctx, unsigned index)
                               shader->ngg.vgt_gs_instance_cnt);
    radeon_opt_set_context_reg(sctx, R_0286C4_SPI_VS_OUT_CONFIG, 
SI_TRACKED_SPI_VS_OUT_CONFIG,
                               shader->ngg.spi_vs_out_config);
-   radeon_opt_set_context_reg2(sctx, R_028708_SPI_SHADER_IDX_FORMAT,
-                               SI_TRACKED_SPI_SHADER_IDX_FORMAT,
-                               shader->ngg.spi_shader_idx_format,
-                               shader->ngg.spi_shader_pos_format);
+   radeon_opt_set_context_reg(sctx, R_02870C_SPI_SHADER_POS_FORMAT,
+                              SI_TRACKED_SPI_SHADER_POS_FORMAT,
+                              shader->ngg.spi_shader_pos_format);
    radeon_opt_set_context_reg(sctx, R_028818_PA_CL_VTE_CNTL, 
SI_TRACKED_PA_CL_VTE_CNTL,
                               shader->ngg.pa_cl_vte_cntl);
    radeon_end_update_context_roll(sctx);
@@ -1372,7 +1371,6 @@ static void gfx10_shader_ngg(struct si_screen *sscreen, 
struct si_shader *shader
                   S_00B22C_LDS_SIZE(shader->config.lds_size));
 
    /* Set register values emitted conditionally in gfx10_emit_shader_ngg_*. */
-   shader->ngg.spi_shader_idx_format = 
S_028708_IDX0_EXPORT_FORMAT(V_028708_SPI_SHADER_1COMP);
    shader->ngg.spi_shader_pos_format =
       S_02870C_POS0_EXPORT_FORMAT(V_02870C_SPI_SHADER_4COMP) |
       S_02870C_POS1_EXPORT_FORMAT(shader->info.nr_pos_exports > 1 ? 
V_02870C_SPI_SHADER_4COMP

Reply via email to