From: Mike Blumenkrantz Date: Fri, 16 Oct 2020 14:21:26 +0000 (-0400) Subject: zink: add helper for vec-type input variables in ntv X-Git-Tag: upstream/21.0.0~3606 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=441b32bf3f4ea79b90f5c4de4ffab180dc53d2f8;p=platform%2Fupstream%2Fmesa.git zink: add helper for vec-type input variables in ntv we'll see a lot of reuse of this type of thing, so we can avoid duplicating it later Reviewed-by: Erik Faye-Lund Part-of: --- 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 2c8f28a..5734bf5 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 @@ -1665,6 +1665,37 @@ emit_load_uint_input(struct ntv_context *ctx, nir_intrinsic_instr *intr, SpvId * } static void +emit_load_vec_input(struct ntv_context *ctx, nir_intrinsic_instr *intr, SpvId *var_id, const char *var_name, SpvBuiltIn builtin, nir_alu_type type) +{ + SpvId var_type; + + switch (type) { + case nir_type_bool: + var_type = get_bvec_type(ctx, nir_dest_num_components(intr->dest)); + break; + case nir_type_int: + var_type = get_ivec_type(ctx, nir_dest_bit_size(intr->dest), nir_dest_num_components(intr->dest)); + break; + case nir_type_uint: + var_type = get_uvec_type(ctx, nir_dest_bit_size(intr->dest), nir_dest_num_components(intr->dest)); + break; + case nir_type_float: + var_type = get_fvec_type(ctx, nir_dest_bit_size(intr->dest), nir_dest_num_components(intr->dest)); + break; + default: + unreachable("unknown type passed"); + } + if (!*var_id) + *var_id = create_builtin_var(ctx, var_type, + SpvStorageClassInput, + var_name, + builtin); + + SpvId result = spirv_builder_emit_load(&ctx->builder, var_type, *var_id); + store_dest(ctx, &intr->dest, result, type); +} + +static void emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) { switch (intr->intrinsic) {