nir: Clean up divergence analysis for TES patch input loads.
Just make the code a little bit easier to follow. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27680>
This commit is contained in:
@@ -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 ||
|
||||
|
Reference in New Issue
Block a user