nvc0/ir: offset appears to come before the Z ref
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 27 Apr 2014 00:29:47 +0000 (20:29 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Tue, 29 Apr 2014 00:32:36 +0000 (20:32 -0400)
Fixes textureGatherOffset when used with a shadow sampler. Also verified
against blob compiler with textureLodOffset manually (no piglit tests
for texture[Lod]Offset + shadow samplers).

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nvc0.cpp

index dc1eb5e..0b439dd 100644 (file)
@@ -737,10 +737,12 @@ NVC0LoweringPass::handleTEX(TexInstruction *i)
    assert(chipset >= NVISA_GK104_CHIPSET ||
           !i->tex.useOffsets || !i->tex.target.isMS());
 
-   // offset is last source (lod 1st, dc 2nd)
+   // offset is between lod and dc
    if (i->tex.useOffsets) {
       int n, c;
       int s = i->srcCount(0xff, true);
+      if (i->tex.target.isShadow())
+         s--;
       if (i->srcExists(s)) // move potential predicate out of the way
          i->moveSources(s, 1);
       if (i->tex.useOffsets == 4 && i->srcExists(s + 1))