st/mesa: don't do (generic) compression of 1D or 1D_ARRAY textures
authorBrian Paul <brianp@vmware.com>
Fri, 24 Aug 2012 14:44:47 +0000 (08:44 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 24 Aug 2012 20:09:03 +0000 (14:09 -0600)
As with the previous commit for core Mesa.

Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/state_tracker/st_format.c

index 404b04106376ef72c26ca2fe8fa9307a95917b6d..302b58c7b103006b19289be78a78e8cb82028227 100644 (file)
@@ -1632,7 +1632,8 @@ st_ChooseTextureFormat_renderable(struct gl_context *ctx, GLint internalFormat,
  */
 gl_format
 st_ChooseTextureFormat(struct gl_context *ctx, GLenum target,
-                       GLint internalFormat, GLenum format, GLenum type)
+                       GLint internalFormat,
+                       GLenum format, GLenum type)
 {
    boolean want_renderable =
       internalFormat == 3 || internalFormat == 4 ||
@@ -1640,6 +1641,15 @@ st_ChooseTextureFormat(struct gl_context *ctx, GLenum target,
       internalFormat == GL_RGB8 || internalFormat == GL_RGBA8 ||
       internalFormat == GL_BGRA;
 
+   if (target == GL_TEXTURE_1D || target == GL_TEXTURE_1D_ARRAY) {
+      /* We don't do compression for these texture targets because of
+       * difficulty with sub-texture updates on non-block boundaries, etc.
+       * So change the internal format request to an uncompressed format.
+       */
+      internalFormat =
+        _mesa_generic_compressed_format_to_uncompressed_format(internalFormat);
+   }
+
    return st_ChooseTextureFormat_renderable(ctx, internalFormat,
                                            format, type, want_renderable);
 }