From 4306e01ecedd8174560e5fd7f3706ebfb5227bb8 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 6 Jun 2016 21:12:15 +0200 Subject: [PATCH] nv50/ir: use round toward 0 when converting doubles to integers 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 Reviewed-by: Ilia Mirkin Cc: "11.2 12.0" (cherry picked from commit 08ddfe7b2fa9f577ba00c8c05c5604460942f5a8) --- src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 4 +++- 1 file changed, 3 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 1ebcd25e96a..382fdb1a4ba 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -3597,7 +3597,9 @@ 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 (!isFloatType(dstTy)) + cvt->rnd = ROUND_Z; pos += 2; } break; -- 2.11.0