From: Ilia Mirkin Date: Sat, 18 Jul 2015 22:38:42 +0000 (-0400) Subject: nvc0/ir: don't worry about sampler in txq handling X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=346ce0b98832e33d5411200002571b3edea9e2bb;p=mesa.git 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 Cc: mesa-stable@lists.freedesktop.org --- 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)),