[Mesa-dev] [PATCH 2/5] tgsi/lowering: stop using TGSI_OPCODE_CLAMP

Marek Olšák maraeo at gmail.com
Thu Feb 16 23:14:34 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

v2: do it correctly
---
 src/gallium/auxiliary/tgsi/tgsi_lowering.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_lowering.c b/src/gallium/auxiliary/tgsi/tgsi_lowering.c
index bf6cbb3..c26c13b 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_lowering.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_lowering.c
@@ -565,30 +565,39 @@ transform_lit(struct tgsi_transform_context *tctx,
       /* MAX tmpA.xy, src.xy, imm{0.0} */
       new_inst = tgsi_default_full_instruction();
       new_inst.Instruction.Opcode = TGSI_OPCODE_MAX;
       new_inst.Instruction.NumDstRegs = 1;
       reg_dst(&new_inst.Dst[0], &ctx->tmp[A].dst, TGSI_WRITEMASK_XY);
       new_inst.Instruction.NumSrcRegs = 2;
       reg_src(&new_inst.Src[0], src, SWIZ(X, Y, _, _));
       reg_src(&new_inst.Src[1], &ctx->imm, SWIZ(X, X, _, _));
       tctx->emit_instruction(tctx, &new_inst);
 
-      /* CLAMP tmpA.z, src.w, -imm{128.0}, imm{128.0} */
+      /* MIN tmpA.z, src.w, imm{128.0} */
       new_inst = tgsi_default_full_instruction();
-      new_inst.Instruction.Opcode = TGSI_OPCODE_CLAMP;
+      new_inst.Instruction.Opcode = TGSI_OPCODE_MIN;
       new_inst.Instruction.NumDstRegs = 1;
       reg_dst(&new_inst.Dst[0], &ctx->tmp[A].dst, TGSI_WRITEMASK_Z);
-      new_inst.Instruction.NumSrcRegs = 3;
+      new_inst.Instruction.NumSrcRegs = 2;
       reg_src(&new_inst.Src[0], src, SWIZ(_, _, W, _));
       reg_src(&new_inst.Src[1], &ctx->imm, SWIZ(_, _, Z, _));
+      tctx->emit_instruction(tctx, &new_inst);
+
+      /* MAX tmpA.z, tmpA.z, -imm{128.0} */
+      new_inst = tgsi_default_full_instruction();
+      new_inst.Instruction.Opcode = TGSI_OPCODE_MAX;
+      new_inst.Instruction.NumDstRegs = 1;
+      reg_dst(&new_inst.Dst[0], &ctx->tmp[A].dst, TGSI_WRITEMASK_Z);
+      new_inst.Instruction.NumSrcRegs = 2;
+      reg_src(&new_inst.Src[0], &ctx->tmp[A].src, SWIZ(_, _, Z, _));
+      reg_src(&new_inst.Src[1], &ctx->imm, SWIZ(_, _, Z, _));
       new_inst.Src[1].Register.Negate = true;
-      reg_src(&new_inst.Src[2], &ctx->imm, SWIZ(_, _, Z, _));
       tctx->emit_instruction(tctx, &new_inst);
 
       /* LG2 tmpA.y, tmpA.y */
       new_inst = tgsi_default_full_instruction();
       new_inst.Instruction.Opcode = TGSI_OPCODE_LG2;
       new_inst.Instruction.NumDstRegs = 1;
       reg_dst(&new_inst.Dst[0], &ctx->tmp[A].dst, TGSI_WRITEMASK_Y);
       new_inst.Instruction.NumSrcRegs = 1;
       reg_src(&new_inst.Src[0], &ctx->tmp[A].src, SWIZ(Y, _, _, _));
       tctx->emit_instruction(tctx, &new_inst);
-- 
2.7.4



More information about the mesa-dev mailing list