softpipe: fix regression with tex tile cache since integer support.
authorDave Airlie <airlied@redhat.com>
Wed, 12 Oct 2011 07:24:32 +0000 (08:24 +0100)
committerDave Airlie <airlied@redhat.com>
Wed, 12 Oct 2011 07:25:28 +0000 (08:25 +0100)
Don't use the uint/int paths for ZS formats for tex tile cache.

fixes: https://bugs.freedesktop.org/show_bug.cgi?id=41695

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/softpipe/sp_tex_tile_cache.c

index 2e665c9ee352a511ea195f9498646533a5c451f7..b2e92385bf1a5e4d6f5b631be4efa44f4d1877dc 100644 (file)
@@ -229,6 +229,7 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
                         union tex_tile_address addr )
 {
    struct softpipe_tex_cached_tile *tile;
+   boolean zs = util_format_is_depth_or_stencil(tc->format);
 
    tile = tc->entries + tex_cache_pos( addr );
 
@@ -291,7 +292,7 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
       /* Get tile from the transfer (view into texture), explicitly passing
        * the image format.
        */
-      if (util_format_is_pure_uint(tc->format)) {
+      if (!zs && util_format_is_pure_uint(tc->format)) {
          pipe_get_tile_ui_format(tc->pipe,
                                  tc->tex_trans,
                                  addr.bits.x * TILE_SIZE,
@@ -300,7 +301,7 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
                                  TILE_SIZE,
                                  tc->format,
                                  (unsigned *) tile->data.colorui);
-      } else if (util_format_is_pure_sint(tc->format)) {
+      } else if (!zs && util_format_is_pure_sint(tc->format)) {
          pipe_get_tile_i_format(tc->pipe,
                                 tc->tex_trans,
                                 addr.bits.x * TILE_SIZE,