mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-05 05:50:29 +01:00
radeonsi: clean up how debug flags and shader profiles determine the wave size
- remove DBG_W32_PS_DISCARD - just return the wave size instead of setting local variables dbg_wave_size and profile_wave_size Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26307>
This commit is contained in:
parent
716b521515
commit
257f07f499
3 changed files with 8 additions and 30 deletions
|
|
@ -56,7 +56,6 @@ static const struct debug_named_value radeonsi_debug_options[] = {
|
|||
/* Shader compiler options the shader cache should be aware of: */
|
||||
{"w32ge", DBG(W32_GE), "Use Wave32 for vertex, tessellation, and geometry shaders."},
|
||||
{"w32ps", DBG(W32_PS), "Use Wave32 for pixel shaders."},
|
||||
{"w32psdiscard", DBG(W32_PS_DISCARD), "Use Wave32 for pixel shaders even if they contain discard and LLVM is buggy."},
|
||||
{"w32cs", DBG(W32_CS), "Use Wave32 for computes shaders."},
|
||||
{"w64ge", DBG(W64_GE), "Use Wave64 for vertex, tessellation, and geometry shaders."},
|
||||
{"w64ps", DBG(W64_PS), "Use Wave64 for pixel shaders."},
|
||||
|
|
|
|||
|
|
@ -196,7 +196,6 @@ enum
|
|||
/* Shader compiler options the shader cache should be aware of: */
|
||||
DBG_W32_GE,
|
||||
DBG_W32_PS,
|
||||
DBG_W32_PS_DISCARD,
|
||||
DBG_W32_CS,
|
||||
DBG_W64_GE,
|
||||
DBG_W64_PS,
|
||||
|
|
|
|||
|
|
@ -48,44 +48,24 @@ unsigned si_determine_wave_size(struct si_screen *sscreen, struct si_shader *sha
|
|||
info->base.workgroup_size[2]) % 64 != 0)
|
||||
return 32;
|
||||
|
||||
/* Debug flags. */
|
||||
unsigned dbg_wave_size = 0;
|
||||
/* AMD_DEBUG wave flags override everything else. */
|
||||
if (sscreen->debug_flags &
|
||||
(stage == MESA_SHADER_COMPUTE ? DBG(W32_CS) :
|
||||
stage == MESA_SHADER_FRAGMENT ? DBG(W32_PS) | DBG(W32_PS_DISCARD) : DBG(W32_GE)))
|
||||
dbg_wave_size = 32;
|
||||
stage == MESA_SHADER_FRAGMENT ? DBG(W32_PS) : DBG(W32_GE)))
|
||||
return 32;
|
||||
|
||||
if (sscreen->debug_flags &
|
||||
(stage == MESA_SHADER_COMPUTE ? DBG(W64_CS) :
|
||||
stage == MESA_SHADER_FRAGMENT ? DBG(W64_PS) : DBG(W64_GE))) {
|
||||
assert(!dbg_wave_size);
|
||||
dbg_wave_size = 64;
|
||||
}
|
||||
stage == MESA_SHADER_FRAGMENT ? DBG(W64_PS) : DBG(W64_GE)))
|
||||
return 64;
|
||||
|
||||
/* Shader profiles. */
|
||||
unsigned profile_wave_size = 0;
|
||||
if (info && info->options & SI_PROFILE_WAVE32)
|
||||
profile_wave_size = 32;
|
||||
return 32;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
if (profile_wave_size) {
|
||||
/* Only debug flags override shader profiles. */
|
||||
if (dbg_wave_size)
|
||||
return dbg_wave_size;
|
||||
|
||||
return profile_wave_size;
|
||||
}
|
||||
|
||||
/* Debug flags except w32psdiscard don't override the discard bug workaround,
|
||||
* but they override everything else.
|
||||
*/
|
||||
if (dbg_wave_size)
|
||||
return dbg_wave_size;
|
||||
(sscreen->info.gfx_level == GFX10 || sscreen->info.gfx_level == GFX10_3))
|
||||
return 64;
|
||||
|
||||
/* Gfx10: Pixel shaders without interp instructions don't suffer from reduced interpolation
|
||||
* performance in Wave32, so use Wave32. This helps Piano and Voloplosion.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue