From 716b521515bc5fcdd7acfcb23202032e43bffae1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 24 Nov 2023 17:49:26 -0500 Subject: [PATCH] radeonsi/gfx11: disable the shader profile for Medical that disables binning GFX11 performs better with the default behavior. Reviewed-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/gallium/drivers/radeonsi/si_shader.h | 2 +- src/gallium/drivers/radeonsi/si_shader_info.c | 2 +- src/gallium/drivers/radeonsi/si_state_shaders.cpp | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 1df5f01b641..3c4f90e2dd1 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -305,7 +305,7 @@ enum #define SI_PROFILE_GFX10_WAVE64 (1 << 1) /* bit gap */ #define SI_PROFILE_VS_NO_BINNING (1 << 3) -#define SI_PROFILE_PS_NO_BINNING (1 << 4) +#define SI_PROFILE_GFX9_GFX10_PS_NO_BINNING (1 << 4) #define SI_PROFILE_CLAMP_DIV_BY_ZERO (1 << 5) enum si_shader_dump_type { diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index 4141968d83e..b6af2badffc 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -26,7 +26,7 @@ static struct si_shader_profile profiles[] = { /* Viewperf/Medical */ {0x4dce4331, 0x38f778d5, 0x1b75a717, 0x3e454fb9, 0xeb1527f0}, - SI_PROFILE_PS_NO_BINNING, + SI_PROFILE_GFX9_GFX10_PS_NO_BINNING, }, { /* Viewperf/Medical, a shader with a divergent loop doesn't benefit from Wave32, diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index f8638eda480..ebb846d1e39 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -3773,7 +3773,8 @@ static void si_bind_ps_shader(struct pipe_context *ctx, void *state) si_update_vrs_flat_shading(sctx); if (sctx->screen->dpbb_allowed) { - bool force_off = sel && sel->info.options & SI_PROFILE_PS_NO_BINNING; + bool force_off = sel && sel->info.options & SI_PROFILE_GFX9_GFX10_PS_NO_BINNING && + (sctx->gfx_level >= GFX9 && sctx->gfx_level <= GFX10_3); if (force_off != sctx->dpbb_force_off_profile_ps) { sctx->dpbb_force_off_profile_ps = force_off;