kk: Add type inference for additional built-in intrinsics.

Fixes dEQP-VK.api.copy_and_blit.core.use_after_copy.*_msaa

These tests set both a varying and gl_Layer to gl_InstanceID. Without proper
type inference for gl_InstanceID, it would end up stored in a float temporary,
then bit-cast back to uint when stored into the gl_Layer, resulting in an
invalid destination when outputting to layer 1.

Reviewed-by: Aitor Camacho <aitor@lunarg.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41177>
This commit is contained in:
squidbus 2026-04-25 01:22:48 -07:00 committed by Marge Bot
parent 5bfbb7b1a7
commit cc23376ff5

View file

@ -347,10 +347,17 @@ infer_types_from_intrinsic(struct hash_table *types, nir_intrinsic_instr *instr)
set_type(types, &instr->src[0], TYPE_UINT);
set_type(types, &instr->src[1], TYPE_UINT);
break;
case nir_intrinsic_load_first_vertex:
case nir_intrinsic_load_base_instance:
case nir_intrinsic_load_vertex_id:
case nir_intrinsic_load_instance_id:
case nir_intrinsic_load_primitive_id:
case nir_intrinsic_load_layer_id:
case nir_intrinsic_load_workgroup_id:
case nir_intrinsic_load_subgroup_id:
case nir_intrinsic_load_local_invocation_id:
case nir_intrinsic_load_global_invocation_id:
case nir_intrinsic_load_local_invocation_index:
case nir_intrinsic_load_num_workgroups:
case nir_intrinsic_load_num_subgroups:
case nir_intrinsic_load_subgroup_size: