svga: improve check for 3D compressed textures
authorBrian Paul <brianp@vmware.com>
Tue, 19 Nov 2013 15:54:17 +0000 (07:54 -0800)
committerBrian Paul <brianp@vmware.com>
Tue, 19 Nov 2013 16:03:41 +0000 (09:03 -0700)
This is basically a a respin of f1dfcf4bce35e6796f873d9a00103b280da81e4c
per Jose's suggestion.

Just set the SVGA3dSurfaceFormatCaps flags for 3D and cube textures
when checking the texture format capabilities.  This will filter out
unsupported combinations like 3D+DXT.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/svga/svga_screen.c

index ebcad2cf141eff1e8757a951ab433869d5657f30..c16be16a59f1248a01f6c81336df8e06d3f48089 100644 (file)
@@ -447,11 +447,6 @@ svga_is_format_supported( struct pipe_screen *screen,
       }
    }
    
-   if (target == PIPE_TEXTURE_3D && util_format_is_compressed(format)) {
-      /* we don't support compressed 3D textures at this time */
-      return FALSE;
-   }
-
    /*
     * Query the host capabilities.
     */
@@ -469,6 +464,13 @@ svga_is_format_supported( struct pipe_screen *screen,
       mask.texture = 1;
    }
 
+   if (target == PIPE_TEXTURE_CUBE) {
+      mask.cubeTexture = 1;
+   }
+   if (target == PIPE_TEXTURE_3D) {
+      mask.volumeTexture = 1;
+   }
+
    return (caps.value & mask.value) == mask.value;
 }