From cc23376ff561237aad810a62860841b697142786 Mon Sep 17 00:00:00 2001 From: squidbus Date: Sat, 25 Apr 2026 01:22:48 -0700 Subject: [PATCH] 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 Part-of: --- src/kosmickrisp/compiler/msl_type_inference.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/kosmickrisp/compiler/msl_type_inference.c b/src/kosmickrisp/compiler/msl_type_inference.c index 7912454768b..4280a02ff61 100644 --- a/src/kosmickrisp/compiler/msl_type_inference.c +++ b/src/kosmickrisp/compiler/msl_type_inference.c @@ -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: