[Mesa-dev] [PATCH] nv50/ir: use round toward 0 when converting doubles to integers
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Jun 6 19:25:12 UTC 2016
Like floats, we should use the round toward 0 mode instead of the
nearest one (which is the default) for doubles to integers.
This fixes all arb_gpu_shader_fp64 piglits which convert doubles to
integers (16 tests).
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Cc: "11.2 12.0" <mesa-stable at lists.freedesktop.org>
---
src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
index cd98f70..fcd4b22 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp
@@ -3598,7 +3598,11 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn)
src0 = fetchSrc(0, pos);
src1 = fetchSrc(0, pos + 1);
mkOp2(OP_MERGE, TYPE_U64, dreg, src0, src1);
- mkCvt(OP_CVT, dstTy, dst0[c], srcTy, dreg);
+ Instruction *cvt = mkCvt(OP_CVT, dstTy, dst0[c], srcTy, dreg);
+ if (tgsi.getOpcode() == TGSI_OPCODE_D2I ||
+ tgsi.getOpcode() == TGSI_OPCODE_D2U) {
+ cvt->rnd = ROUND_Z;
+ }
pos += 2;
}
break;
--
2.8.3
More information about the mesa-dev
mailing list