Mesa (master): nv50: TXF already has integer arguments, don' t try to convert from f32
Maarten Lankhorst
mlankhorst at kemper.freedesktop.org
Mon Dec 9 14:38:41 UTC 2013
Module: Mesa
Branch: master
Commit: 1386cb94882917e6eabc5b482ab8b443a2f1df51
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1386cb94882917e6eabc5b482ab8b443a2f1df51
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date: Fri Nov 29 01:18:57 2013 -0500
nv50: TXF already has integer arguments, don't try to convert from f32
Fixes the texelFetch piglit tests
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
.../nouveau/codegen/nv50_ir_lowering_nv50.cpp | 16 +++++++++-------
1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
index caaf09f..07f3a21 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
@@ -575,14 +575,16 @@ NV50LoweringPreSSA::handleTEX(TexInstruction *i)
if (i->op == OP_TXB || i->op == OP_TXL)
i->swapSources(dref, lod);
- // array index must be converted to u32
if (i->tex.target.isArray()) {
- Value *layer = i->getSrc(arg - 1);
- LValue *src = new_LValue(func, FILE_GPR);
- bld.mkCvt(OP_CVT, TYPE_U32, src, TYPE_F32, layer);
- bld.mkOp2(OP_MIN, TYPE_U32, src, src, bld.loadImm(NULL, 511));
- i->setSrc(arg - 1, src);
-
+ if (i->op != OP_TXF) {
+ // array index must be converted to u32, but it's already an integer
+ // for TXF
+ Value *layer = i->getSrc(arg - 1);
+ LValue *src = new_LValue(func, FILE_GPR);
+ bld.mkCvt(OP_CVT, TYPE_U32, src, TYPE_F32, layer);
+ bld.mkOp2(OP_MIN, TYPE_U32, src, src, bld.loadImm(NULL, 511));
+ i->setSrc(arg - 1, src);
+ }
if (i->tex.target.isCube()) {
std::vector<Value *> acube, a2d;
int c;
More information about the mesa-commit
mailing list