Mesa (master): nv50/ir/gk110: fill out texture instruction support
Ilia Mirkin
imirkin at kemper.freedesktop.org
Tue Mar 18 09:58:23 UTC 2014
Module: Mesa
Branch: master
Commit: cb3dcb14300613a7628941ff4ba1ad4c52e9772b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb3dcb14300613a7628941ff4ba1ad4c52e9772b
Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date: Tue Mar 11 08:30:01 2014 -0400
nv50/ir/gk110: fill out texture instruction support
Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
---
.../drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp | 33 ++++++++++++--------
1 file changed, 20 insertions(+), 13 deletions(-)
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
index 29e246d..6a24b0a 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_emit_gk110.cpp
@@ -973,6 +973,9 @@ CodeEmitterGK110::emitTEX(const TexInstruction *i)
case OP_TXD:
code[1] = 0x7e000000;
break;
+ case OP_TXF:
+ code[1] = 0x78000000;
+ break;
default:
code[1] = 0x7d800000;
break;
@@ -983,6 +986,10 @@ CodeEmitterGK110::emitTEX(const TexInstruction *i)
code[0] = 0x00000002;
code[1] = 0x76000000;
break;
+ case OP_TXF:
+ code[0] = 0x00000002;
+ code[1] = 0x70000000;
+ break;
default:
code[0] = 0x00000001;
code[1] = 0x60000000;
@@ -993,25 +1000,25 @@ CodeEmitterGK110::emitTEX(const TexInstruction *i)
code[1] |= isNextIndependentTex(i) ? 0x1 : 0x2; // t : p mode
- // if (i->tex.liveOnly)
- // ?
+ if (i->tex.liveOnly)
+ code[0] |= 0x80000000;
switch (i->op) {
case OP_TEX: break;
case OP_TXB: code[1] |= 0x2000; break;
case OP_TXL: code[1] |= 0x3000; break;
- case OP_TXF: break; // XXX
+ case OP_TXF: break;
case OP_TXG: break; // XXX
case OP_TXD: break;
default:
assert(!"invalid texture op");
break;
}
- /*
+
if (i->op == OP_TXF) {
if (!i->tex.levelZero)
- code[1] |= 0x02000000;
- } else */
+ code[1] |= 0x1000;
+ } else
if (i->tex.levelZero) {
code[1] |= 0x1000;
}
@@ -1035,18 +1042,18 @@ CodeEmitterGK110::emitTEX(const TexInstruction *i)
code[1] |= (i->tex.target.isCube() ? 3 : (i->tex.target.getDim() - 1)) << 7;
if (i->tex.target.isArray())
code[1] |= 0x40;
- // if (i->tex.target.isShadow())
- // ?
- // if (i->tex.target == TEX_TARGET_2D_MS ||
- // i->tex.target == TEX_TARGET_2D_MS_ARRAY)
- // ?
+ if (i->tex.target.isShadow())
+ code[1] |= 0x400;
+ if (i->tex.target == TEX_TARGET_2D_MS ||
+ i->tex.target == TEX_TARGET_2D_MS_ARRAY)
+ code[1] |= 0x800;
if (i->srcExists(src1) && i->src(src1).getFile() == FILE_IMMEDIATE) {
// ?
}
- // if (i->tex.useOffsets)
- // ?
+ if (i->tex.useOffsets)
+ code[1] |= 0x200;
}
void
More information about the mesa-commit
mailing list