radeonsi: Save CLEAR_STATE initial values for optimization
authorSonny Jiang <sonny.jiang@amd.com>
Tue, 17 Jul 2018 14:22:02 +0000 (10:22 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 18 Jul 2018 19:04:27 +0000 (15:04 -0400)
Signed-off-by: Sonny Jiang <sonny.jiang@amd.com>
Signed-off-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeonsi/si_gfx_cs.c

index 09f0d3b..ac4909a 100644 (file)
@@ -323,6 +323,30 @@ void si_begin_new_gfx_cs(struct si_context *ctx)
 
        ctx->cs_shader_state.initialized = false;
 
-       /* Set all saved registers state to unknown */
-       ctx->tracked_regs.reg_saved = 0;
+       if (has_clear_state) {
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_RENDER_CONTROL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_COUNT_CONTROL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_RENDER_OVERRIDE2] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_SHADER_CONTROL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_CB_TARGET_MASK] = 0xffffffff;
+               ctx->tracked_regs.reg_value[SI_TRACKED_CB_DCC_CONTROL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_SX_PS_DOWNCONVERT] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_SX_BLEND_OPT_EPSILON] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_SX_BLEND_OPT_CONTROL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_SC_LINE_CNTL] = 0x00001000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_SC_AA_CONFIG] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_EQAA] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_SC_MODE_CNTL_1] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_SU_SMALL_PRIM_FILTER_CNTL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_CL_VS_OUT_CNTL] = 0x00000000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_CL_CLIP_CNTL] = 0x00090000;
+               ctx->tracked_regs.reg_value[SI_TRACKED_PA_SC_BINNER_CNTL_0] = 0x00000003;
+               ctx->tracked_regs.reg_value[SI_TRACKED_DB_DFSM_CONTROL] = 0x00000000;
+
+               /* Set all saved registers state to saved. */
+               ctx->tracked_regs.reg_saved = 0xffffffff;
+       } else {
+               /* Set all saved registers state to unknown. */
+               ctx->tracked_regs.reg_saved = 0;
+       }
 }