radeonsi: don't return 0 from si_get_max_workgroup_size

the next commit needs this

Reviewed-by: Timur Kristóf <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32782>
This commit is contained in:
Marek Olšák 2024-12-26 03:29:57 -05:00 committed by Marge Bot
parent 342dcbdc8b
commit 85ce311a36
2 changed files with 6 additions and 8 deletions

View file

@ -156,6 +156,8 @@ unsigned si_get_max_workgroup_size(const struct si_shader *shader)
gl_shader_stage stage = shader->is_gs_copy_shader ?
MESA_SHADER_VERTEX : shader->selector->stage;
assert(shader->wave_size);
switch (stage) {
case MESA_SHADER_VERTEX:
case MESA_SHADER_TESS_EVAL:
@ -165,22 +167,22 @@ unsigned si_get_max_workgroup_size(const struct si_shader *shader)
/* As part of merged shader. */
return shader->selector->screen->info.gfx_level >= GFX9 &&
(shader->key.ge.as_ls || shader->key.ge.as_es) ? 128 : 0;
(shader->key.ge.as_ls || shader->key.ge.as_es) ? 128 : shader->wave_size;
case MESA_SHADER_TESS_CTRL:
/* Return this so that LLVM doesn't remove s_barrier
* instructions on chips where we use s_barrier. */
return shader->selector->screen->info.gfx_level >= GFX7 ? 128 : 0;
return shader->selector->screen->info.gfx_level >= GFX7 ? 128 : shader->wave_size;
case MESA_SHADER_GEOMETRY:
/* GS can always generate up to 256 vertices. */
return shader->selector->screen->info.gfx_level >= GFX9 ? 256 : 0;
return shader->selector->screen->info.gfx_level >= GFX9 ? 256 : shader->wave_size;
case MESA_SHADER_COMPUTE:
break; /* see below */
default:
return 0;
return shader->wave_size;
}
/* Compile a variable block size using the maximum variable size. */

View file

@ -69,10 +69,6 @@ si_fill_aco_shader_info(struct si_shader *shader, struct aco_shader_info *info,
info->wave_size = shader->wave_size;
info->workgroup_size = si_get_max_workgroup_size(shader);
/* aco need non-zero value */
if (!info->workgroup_size)
info->workgroup_size = info->wave_size;
info->merged_shader_compiled_separately = !shader->is_gs_copy_shader &&
si_is_multi_part_shader(shader) && !shader->is_monolithic;