radv: track redundant PA_SC_VRS_OVERRIDE_CNTL register writes

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/39675>
This commit is contained in:
Samuel Pitoiset 2026-02-03 12:31:29 +01:00 committed by Marge Bot
parent f8153a7c20
commit f2d7d998a2
3 changed files with 10 additions and 3 deletions

View file

@ -988,6 +988,8 @@ ac_set_tracked_regs_to_clear_state(struct ac_tracked_regs *tracked_regs,
tracked_regs->reg_value[AC_TRACKED_CB_DCC_CONTROL] = 0;
tracked_regs->reg_value[AC_TRACKED_CB_COLOR_CONTROL] = 0;
tracked_regs->reg_value[AC_TRACKED_PA_SC_VRS_OVERRIDE_CNTL] = 0;
/* Set all cleared context registers to saved. */
BITSET_SET_COUNT(tracked_regs->reg_saved_mask, 0, AC_NUM_TRACKED_CONTEXT_REGS);
}

View file

@ -252,6 +252,8 @@ enum ac_tracked_reg
AC_TRACKED_SPI_SHADER_GS_MESHLET_EXP_ALLOC, /* GFX11+ */
AC_TRACKED_SPI_SHADER_GS_MESHLET_CTRL, /* GFX12+ */
AC_TRACKED_PA_SC_VRS_OVERRIDE_CNTL, /* GFX11+ */
AC_NUM_ALL_TRACKED_REGS,
};

View file

@ -3813,14 +3813,17 @@ gfx103_emit_vrs_state(struct radv_cmd_buffer *cmd_buffer)
radeon_begin(cs);
if (pdev->info.gfx_level >= GFX12) {
gfx12_begin_context_regs();
gfx12_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, pa_sc_vrs_override_cntl);
gfx12_opt_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, AC_TRACKED_PA_SC_VRS_OVERRIDE_CNTL,
pa_sc_vrs_override_cntl);
gfx12_end_context_regs();
} else if (pdev->info.has_set_context_pairs_packed) {
gfx11_begin_packed_context_regs();
gfx11_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, pa_sc_vrs_override_cntl);
gfx11_opt_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, AC_TRACKED_PA_SC_VRS_OVERRIDE_CNTL,
pa_sc_vrs_override_cntl);
gfx11_end_packed_context_regs();
} else {
radeon_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, pa_sc_vrs_override_cntl);
radeon_opt_set_context_reg(R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, AC_TRACKED_PA_SC_VRS_OVERRIDE_CNTL,
pa_sc_vrs_override_cntl);
}
radeon_end();
} else {