From 9a2ffe1abbfe287a1aaf5e76b45278d791986e6f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timur=20Krist=C3=B3f?= Date: Fri, 23 Apr 2021 08:46:18 +0200 Subject: [PATCH] nir: Support upper bound of subgroup_id/num_subgroups for non-compute. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit These intrinsics will be used when lowering NGG shaders, including currently supported stages like VS, TES, GS and also by mesh shaders in the future. Signed-off-by: Timur Kristóf Reviewed-by: Daniel Schürmann Part-of: --- src/compiler/nir/nir_range_analysis.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_range_analysis.c b/src/compiler/nir/nir_range_analysis.c index bbee87a..7563278 100644 --- a/src/compiler/nir/nir_range_analysis.c +++ b/src/compiler/nir/nir_range_analysis.c @@ -1339,12 +1339,12 @@ nir_unsigned_upper_bound(nir_shader *shader, struct hash_table *range_ht, case nir_intrinsic_load_subgroup_id: case nir_intrinsic_load_num_subgroups: { uint32_t work_group_size = config->max_work_group_invocations; - if (!shader->info.cs.local_size_variable) { + if (shader->info.stage == MESA_SHADER_COMPUTE && !shader->info.cs.local_size_variable) { work_group_size = shader->info.cs.local_size[0] * shader->info.cs.local_size[1] * shader->info.cs.local_size[2]; } - res = (work_group_size + config->min_subgroup_size - 1) / config->min_subgroup_size; + res = DIV_ROUND_UP(work_group_size, config->min_subgroup_size); if (intrin->intrinsic == nir_intrinsic_load_subgroup_id) res--; break; -- 2.7.4