summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2015-07-18 18:38:42 -0400
committerIlia Mirkin <[email protected]>2015-07-18 18:48:14 -0400
commit346ce0b98832e33d5411200002571b3edea9e2bb (patch)
treeca0678eebe551775bcbba47b7d8940461ea70459 /src/gallium
parent20e484afa4874e87cd18daffd66286bb893cf3fb (diff)
nvc0/ir: don't worry about sampler in txq handling
There's no need to deal with samplers for texture size queries. That code also was accidentally setting an invalid sIndirectSrc position, but it can now just be removed. Signed-off-by: Ilia Mirkin <[email protected]> Cc: [email protected]
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp30
1 files changed, 8 insertions, 22 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
index da364f2ad04..e71fa113d99 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp
@@ -956,44 +956,30 @@ NVC0LoweringPass::handleTXD(TexInstruction *txd)
bool
NVC0LoweringPass::handleTXQ(TexInstruction *txq)
{
- if (txq->tex.rIndirectSrc < 0 && txq->tex.sIndirectSrc < 0)
+ if (txq->tex.rIndirectSrc < 0)
return true;
Value *ticRel = txq->getIndirectR();
- Value *tscRel = txq->getIndirectS();
const int chipset = prog->getTarget()->getChipset();
txq->setIndirectS(NULL);
txq->tex.sIndirectSrc = -1;
+ assert(ticRel);
+
if (chipset < NVISA_GK104_CHIPSET) {
LValue *src = new_LValue(func, FILE_GPR); // 0xttxsaaaa
- if (ticRel) {
- txq->setSrc(txq->tex.rIndirectSrc, NULL);
- if (txq->tex.r)
- ticRel = bld.mkOp2v(OP_ADD, TYPE_U32, bld.getScratch(),
- ticRel, bld.mkImm(txq->tex.r));
- }
- if (tscRel) {
- txq->setSrc(txq->tex.sIndirectSrc, NULL);
- if (txq->tex.s)
- tscRel = bld.mkOp2v(OP_ADD, TYPE_U32, bld.getScratch(),
- tscRel, bld.mkImm(txq->tex.s));
- }
-
- bld.loadImm(src, 0);
+ txq->setSrc(txq->tex.rIndirectSrc, NULL);
+ if (txq->tex.r)
+ ticRel = bld.mkOp2v(OP_ADD, TYPE_U32, bld.getScratch(),
+ ticRel, bld.mkImm(txq->tex.r));
- if (ticRel)
- bld.mkOp3(OP_INSBF, TYPE_U32, src, ticRel, bld.mkImm(0x0917), src);
- if (tscRel)
- bld.mkOp3(OP_INSBF, TYPE_U32, src, tscRel, bld.mkImm(0x0710), src);
+ bld.mkOp2(OP_SHL, TYPE_U32, src, ticRel, bld.mkImm(0x17));
txq->moveSources(0, 1);
txq->setSrc(0, src);
} else {
- // XXX this ignores tsc, and assumes a 1:1 mapping
- assert(txq->tex.rIndirectSrc >= 0);
Value *hnd = loadTexHandle(
bld.mkOp2v(OP_SHL, TYPE_U32, bld.getSSA(),
txq->getIndirectR(), bld.mkImm(2)),