From cc1501628fd98bbf0f2a56d149347effb688722d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Thu, 8 Feb 2024 11:32:55 +0100 Subject: [PATCH] nir: Clean up divergence analysis for TES patch input loads. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Just make the code a little bit easier to follow. Signed-off-by: Timur Kristóf Reviewed-by: Daniel Schürmann Part-of: --- src/compiler/nir/nir_divergence_analysis.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c index 2cab8790ad3..25891c8c575 100644 --- a/src/compiler/nir/nir_divergence_analysis.c +++ b/src/compiler/nir/nir_divergence_analysis.c @@ -252,18 +252,17 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr, case nir_intrinsic_load_input: is_divergent = instr->src[0].ssa->divergent; - /* Patch input loads are uniform between vertices of the same - * primitive. - */ - if (vertex_divergence && stage == MESA_SHADER_TESS_EVAL) - break; - - if (stage == MESA_SHADER_FRAGMENT) + if (stage == MESA_SHADER_FRAGMENT) { is_divergent |= !(options & nir_divergence_single_prim_per_subgroup); - else if (stage == MESA_SHADER_TESS_EVAL) - is_divergent |= !(options & nir_divergence_single_patch_per_tes_subgroup); - else + } else if (stage == MESA_SHADER_TESS_EVAL) { + /* Patch input loads are uniform between vertices of the same primitive. */ + if (vertex_divergence) + is_divergent = false; + else + is_divergent |= !(options & nir_divergence_single_patch_per_tes_subgroup); + } else { is_divergent = true; + } break; case nir_intrinsic_load_per_vertex_input: is_divergent = instr->src[0].ssa->divergent ||