nir: Fix divergence analysis of load_patch_vertices_in.
load_patch_vertices_in can only occur in tessellation shaders, and contains the number of vertices in an input patch. * TCS: patch_vertices_in is equal to the input patch size * TES: patch_vertices_in is equal to the TCS output patch size The patch sizes may be set by a pipeline or dynamic states, however in both cases it is definitely uniform within a subgroup. 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:
@@ -162,6 +162,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr,
|
||||
case nir_intrinsic_load_num_vertices:
|
||||
case nir_intrinsic_load_fb_layers_v3d:
|
||||
case nir_intrinsic_load_tcs_num_patches_amd:
|
||||
case nir_intrinsic_load_patch_vertices_in:
|
||||
case nir_intrinsic_load_ring_tess_factors_amd:
|
||||
case nir_intrinsic_load_ring_tess_offchip_amd:
|
||||
case nir_intrinsic_load_ring_tess_factors_offset_amd:
|
||||
@@ -350,12 +351,6 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr,
|
||||
else
|
||||
unreachable("Invalid stage for load_primitive_tess_level_*");
|
||||
break;
|
||||
case nir_intrinsic_load_patch_vertices_in:
|
||||
if (stage == MESA_SHADER_TESS_EVAL)
|
||||
is_divergent = !(options & nir_divergence_single_patch_per_tes_subgroup);
|
||||
else
|
||||
assert(stage == MESA_SHADER_TESS_CTRL);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_workgroup_index:
|
||||
case nir_intrinsic_load_workgroup_id:
|
||||
|
Reference in New Issue
Block a user