Mesa (master): zink/spirv: add support for nir_op_flrp
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Nov 11 14:14:18 UTC 2019
Module: Mesa
Branch: master
Commit: d7a6cc8f4afef694d1aa95d1bb8f5ac459cb5559
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d7a6cc8f4afef694d1aa95d1bb8f5ac459cb5559
Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date: Wed Nov 6 15:13:58 2019 +0100
zink/spirv: add support for nir_op_flrp
This fixes the following piglit:
spec at ati_fragment_shader@ati_fragment_shader-render-fog
Signed-off-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
---
src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
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 ccbf49efb27..6c0177dd7e1 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
@@ -711,6 +711,15 @@ emit_builtin_binop(struct ntv_context *ctx, enum GLSLstd450 op, SpvId type,
}
static SpvId
+emit_builtin_triop(struct ntv_context *ctx, enum GLSLstd450 op, SpvId type,
+ SpvId src0, SpvId src1, SpvId src2)
+{
+ SpvId args[] = { src0, src1, src2 };
+ return spirv_builder_emit_ext_inst(&ctx->builder, type, ctx->GLSL_std_450,
+ op, args, ARRAY_SIZE(args));
+}
+
+static SpvId
get_fvec_constant(struct ntv_context *ctx, unsigned bit_size,
unsigned num_components, float value)
{
@@ -1013,6 +1022,12 @@ emit_alu(struct ntv_context *ctx, nir_alu_instr *alu)
}
break;
+ case nir_op_flrp:
+ assert(nir_op_infos[alu->op].num_inputs == 3);
+ result = emit_builtin_triop(ctx, GLSLstd450FMix, dest_type,
+ src[0], src[1], src[2]);
+ break;
+
case nir_op_fcsel:
result = emit_binop(ctx, SpvOpFOrdGreaterThan,
get_bvec_type(ctx, num_components),
More information about the mesa-commit
mailing list