From 12e00be09b9922d169f079f5b14452c6de6afcc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sun, 20 Feb 2022 02:10:27 -0500 Subject: [PATCH] radeonsi: apply the LLVM discard bug workaround to LLVM 13 only It was fixed in LLVM 14. 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 | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 24f2e829ed6..5e8314caa7b 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -290,7 +290,7 @@ enum #define SI_PROFILE_WAVE32 (1 << 0) #define SI_PROFILE_WAVE64 (1 << 1) -#define SI_PROFILE_IGNORE_LLVM_DISCARD_BUG (1 << 2) +#define SI_PROFILE_IGNORE_LLVM13_DISCARD_BUG (1 << 2) #define SI_PROFILE_VS_NO_BINNING (1 << 3) #define SI_PROFILE_PS_NO_BINNING (1 << 4) #define SI_PROFILE_CLAMP_DIV_BY_ZERO (1 << 5) diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index f34dcc45ce0..630b1efabf1 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -41,7 +41,7 @@ static struct si_shader_profile profiles[] = { /* Viewperf/Energy isn't affected by the discard bug. */ {0x17118671, 0xd0102e0c, 0x947f3592, 0xb2057e7b, 0x4da5d9b0}, - SI_PROFILE_IGNORE_LLVM_DISCARD_BUG, + SI_PROFILE_IGNORE_LLVM13_DISCARD_BUG, }, { /* Viewperf/Medical */ diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index 251107ac33d..3a26ace330f 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -96,8 +96,8 @@ unsigned si_determine_wave_size(struct si_screen *sscreen, struct si_shader *sha * in some cases. Alpha test in Wave32 is luckily unaffected. */ if (stage == MESA_SHADER_FRAGMENT && info->base.fs.uses_discard && - !(info && info->options & SI_PROFILE_IGNORE_LLVM_DISCARD_BUG) && - LLVM_VERSION_MAJOR >= 13 && !(sscreen->debug_flags & DBG(W32_PS_DISCARD))) + !(info && info->options & SI_PROFILE_IGNORE_LLVM13_DISCARD_BUG) && + LLVM_VERSION_MAJOR == 13 && !(sscreen->debug_flags & DBG(W32_PS_DISCARD))) return 64; /* Debug flags except w32psdiscard don't override the discard bug workaround,