From 85ce311a36173c895a36e46a3026c9e3a45bb699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 26 Dec 2024 03:29:57 -0500 Subject: [PATCH] radeonsi: don't return 0 from si_get_max_workgroup_size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the next commit needs this Reviewed-by: Timur Kristóf Part-of: --- src/gallium/drivers/radeonsi/si_shader.c | 10 ++++++---- src/gallium/drivers/radeonsi/si_shader_aco.c | 4 ---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 259f04d8c3f..e46ad1abb8c 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -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. */ diff --git a/src/gallium/drivers/radeonsi/si_shader_aco.c b/src/gallium/drivers/radeonsi/si_shader_aco.c index 294b0f77af7..c89926580a6 100644 --- a/src/gallium/drivers/radeonsi/si_shader_aco.c +++ b/src/gallium/drivers/radeonsi/si_shader_aco.c @@ -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;