zink: implement nir_op_pack_half_2x16_split
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Tue, 20 Jul 2021 20:07:34 +0000 (16:07 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 7 Sep 2021 13:29:57 +0000 (13:29 +0000)
Reviewed-by: Dave Airlie <airlied@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12634>

src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c

index 8d10be2..2602556 100644 (file)
@@ -1800,6 +1800,12 @@ emit_alu(struct ntv_context *ctx, nir_alu_instr *alu)
       result = emit_select(ctx, dest_type, src[0], src[1], src[2]);
       break;
 
+   case nir_op_pack_half_2x16_split: {
+      SpvId fvec = spirv_builder_emit_composite_construct(&ctx->builder, get_fvec_type(ctx, 32, 2),
+                                                          src, 2);
+      result = emit_builtin_unop(ctx, GLSLstd450PackHalf2x16, dest_type, fvec);
+      break;
+   }
    case nir_op_vec2:
    case nir_op_vec3:
    case nir_op_vec4: {