softpipe: fix depth texture sampling regression
authorBrian Paul <brianp@vmware.com>
Fri, 17 Dec 2010 00:38:16 +0000 (17:38 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 17 Dec 2010 00:40:09 +0000 (17:40 -0700)
We need to keep using the pipe_get_tile_swizzle() even though there's
no swizzling because we need to explicitly pass in the surface format.

Fixes http://bugs.freedesktop.org/show_bug.cgi?id=32459

src/gallium/drivers/softpipe/sp_tex_tile_cache.c

index e5708a1c88a35126e24d4da2deb6006e7242b742..6fd324ffe58ad528d4bcb436de9a09f67303e15e 100644 (file)
@@ -278,15 +278,23 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
          tc->tex_z = addr.bits.z;
       }
 
-      /* get tile from the transfer (view into texture) */
-      pipe_get_tile_rgba(tc->pipe,
-                         tc->tex_trans,
-                         addr.bits.x * TILE_SIZE, 
-                         addr.bits.y * TILE_SIZE,
-                         TILE_SIZE,
-                         TILE_SIZE,
-                         (float *) tile->data.color);
-                         
+      /* get tile from the transfer (view into texture)
+       * Note we're using the swizzle version of this fuction only because
+       * we need to pass the texture cache's format explicitly.
+       */
+      pipe_get_tile_swizzle(tc->pipe,
+                           tc->tex_trans,
+                            addr.bits.x * TILE_SIZE, 
+                            addr.bits.y * TILE_SIZE,
+                            TILE_SIZE,
+                            TILE_SIZE,
+                            PIPE_SWIZZLE_RED,
+                            PIPE_SWIZZLE_GREEN,
+                            PIPE_SWIZZLE_BLUE,
+                            PIPE_SWIZZLE_ALPHA,
+                            tc->format,
+                            (float *) tile->data.color);
+
       tile->addr = addr;
    }