From f85488824e6abaf3a8ae36f8ca5016c05ba8a978 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 forces Wave64 GFX10 should keep using it, but not GFX11. 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 f7dcc961c76..1df5f01b641 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -302,7 +302,7 @@ enum #define SI_NGG_CULL_GET_CLIP_PLANE_ENABLE(x) (((x) >> 5) & 0xff) #define SI_PROFILE_WAVE32 (1 << 0) -#define SI_PROFILE_WAVE64 (1 << 1) +#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) diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index de2fc335f80..4141968d83e 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -33,7 +33,7 @@ static struct si_shader_profile profiles[] = * probably due to interpolation performance. */ {0x29f0f4a0, 0x0672258d, 0x47ccdcfd, 0x31e67dcc, 0xdcb1fda8}, - SI_PROFILE_WAVE64, + SI_PROFILE_GFX10_WAVE64, }, { /* Viewperf/Creo */ diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index 0ae0e4b6e7c..f8638eda480 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -67,7 +67,8 @@ unsigned si_determine_wave_size(struct si_screen *sscreen, struct si_shader *sha if (info && info->options & SI_PROFILE_WAVE32) profile_wave_size = 32; - if (info && info->options & SI_PROFILE_WAVE64) { + if (info && info->options & SI_PROFILE_GFX10_WAVE64 && + (sscreen->info.gfx_level == GFX10 || sscreen->info.gfx_level == GFX10_3)) { assert(!profile_wave_size); profile_wave_size = 64; }