From 7dcfa1f46e84ee0af6bc7d9ecc4f216de559be10 Mon Sep 17 00:00:00 2001 From: Sonny Jiang Date: Thu, 7 Jun 2018 12:13:52 -0400 Subject: radeonsi: emit_clip_state packets optimization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remembering latest states of registers to eliminate redunant SET_CONTEXT_REG packets Signed-off-by: Sonny Jiang Signed-off-by: Marek Olšák --- src/gallium/drivers/radeonsi/si_state.c | 7 ++++--- src/gallium/drivers/radeonsi/si_state.h | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c index 199d7408d79..c87f79e0190 100644 --- a/src/gallium/drivers/radeonsi/si_state.c +++ b/src/gallium/drivers/radeonsi/si_state.c @@ -745,7 +745,6 @@ static void si_emit_clip_state(struct si_context *sctx) static void si_emit_clip_regs(struct si_context *sctx) { - struct radeon_winsys_cs *cs = sctx->gfx_cs; struct si_shader *vs = si_get_vs_state(sctx); struct si_shader_selector *vs_sel = vs->selector; struct tgsi_shader_info *info = &vs_sel->info; @@ -773,12 +772,14 @@ static void si_emit_clip_regs(struct si_context *sctx) clipdist_mask &= rs->clip_plane_enable; culldist_mask |= clipdist_mask; - radeon_set_context_reg(cs, R_02881C_PA_CL_VS_OUT_CNTL, + radeon_opt_set_context_reg(sctx, R_02881C_PA_CL_VS_OUT_CNTL, + SI_TRACKED_PA_CL_VS_OUT_CNTL, vs_sel->pa_cl_vs_out_cntl | S_02881C_VS_OUT_CCDIST0_VEC_ENA((total_mask & 0x0F) != 0) | S_02881C_VS_OUT_CCDIST1_VEC_ENA((total_mask & 0xF0) != 0) | clipdist_mask | (culldist_mask << 8)); - radeon_set_context_reg(cs, R_028810_PA_CL_CLIP_CNTL, + radeon_opt_set_context_reg(sctx, R_028810_PA_CL_CLIP_CNTL, + SI_TRACKED_PA_CL_CLIP_CNTL, rs->pa_cl_clip_cntl | ucp_mask | S_028810_CLIP_DISABLE(window_space)); diff --git a/src/gallium/drivers/radeonsi/si_state.h b/src/gallium/drivers/radeonsi/si_state.h index 5ff4f5714f3..941d15486d0 100644 --- a/src/gallium/drivers/radeonsi/si_state.h +++ b/src/gallium/drivers/radeonsi/si_state.h @@ -229,6 +229,9 @@ enum si_tracked_reg { SI_TRACKED_PA_SU_SMALL_PRIM_FILTER_CNTL, + SI_TRACKED_PA_CL_VS_OUT_CNTL, + SI_TRACKED_PA_CL_CLIP_CNTL, + SI_NUM_TRACKED_REGS, }; -- cgit v1.2.3