nv50/ir: ignore bias for samplerCubeShadow on nv50
authorIlia Mirkin <imirkin@alum.mit.edu>
Fri, 4 Jul 2014 22:38:28 +0000 (18:38 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 8 Jul 2014 04:14:33 +0000 (00:14 -0400)
Unfortunately there's no good way to do this on the nv50 shader isa.
Dropping the bias seems preferable to doing the compare post-filtering.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Cc: <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp

index ed06def24ff1bdab2c04c80e6505be07a5ba8c0c..e283424844e4b5b944775fa5f373c1858e9db828 100644 (file)
@@ -797,6 +797,16 @@ NV50LoweringPreSSA::handleTXB(TexInstruction *i)
    const CondCode cc[4] = { CC_EQU, CC_S, CC_C, CC_O };
    int l, d;
 
+   // We can't actually apply bias *and* do a compare for a cube
+   // texture. Since the compare has to be done before the filtering, just
+   // drop the bias on the floor.
+   if (i->tex.target == TEX_TARGET_CUBE_SHADOW) {
+      i->op = OP_TEX;
+      i->setSrc(3, i->getSrc(4));
+      i->setSrc(4, NULL);
+      return handleTEX(i);
+   }
+
    handleTEX(i);
    Value *bias = i->getSrc(i->tex.target.getArgCount());
    if (bias->isUniform())