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; }