diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index ab4e5dd1f17..498cb274a39 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -68,7 +68,8 @@ struct ntv_context { unsigned char *shader_slot_map; unsigned char shader_slots_reserved; - SpvId front_face_var, instance_id_var, vertex_id_var; + SpvId front_face_var, instance_id_var, vertex_id_var, + primitive_id_var, invocation_id_var; // geometry }; static SpvId @@ -1672,6 +1673,14 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) emit_load_uint_input(ctx, intr, &ctx->vertex_id_var, "gl_VertexId", SpvBuiltInVertexIndex); break; + case nir_intrinsic_load_primitive_id: + emit_load_uint_input(ctx, intr, &ctx->primitive_id_var, "gl_PrimitiveIdIn", SpvBuiltInPrimitiveId); + break; + + case nir_intrinsic_load_invocation_id: + emit_load_uint_input(ctx, intr, &ctx->invocation_id_var, "gl_InvocationId", SpvBuiltInInvocationId); + break; + default: fprintf(stderr, "emit_intrinsic: not implemented (%s)\n", nir_intrinsic_infos[intr->intrinsic].name);