mesa: don't use format chooser code for glCompressedTexImage
authorBrian Paul <brianp@vmware.com>
Fri, 1 Feb 2013 01:49:01 +0000 (18:49 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 4 Feb 2013 14:58:21 +0000 (07:58 -0700)
When glCompressedTexImage is called the internalFormat is a specific
format for the incoming image and the the hardware format should be
the same (since we never do format transcoding).  So use the simpler
_mesa_glenum_to_compressed_format() function.  This change is also
needed for the next patch.

Note: This is a candidate for the stable branches.

src/mesa/main/teximage.c

index f03e84ad840afb0f45243145b78ef92bd9f9b6b6..ff3c92c5ef1cfb1049746f78ddb5783312d636a0 100644 (file)
@@ -3004,8 +3004,18 @@ teximage(struct gl_context *ctx, GLboolean compressed, GLuint dims,
    texObj = _mesa_get_current_tex_object(ctx, target);
    assert(texObj);
 
-   texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
-                                           internalFormat, format, type);
+   if (compressed) {
+      /* For glCompressedTexImage() the driver has no choice about the
+       * texture format since we'll never transcode the user's compressed
+       * image data.  The internalFormat was error checked earlier.
+       */
+      texFormat = _mesa_glenum_to_compressed_format(internalFormat);
+   }
+   else {
+      texFormat = _mesa_choose_texture_format(ctx, texObj, target, level,
+                                              internalFormat, format, type);
+   }
+
    assert(texFormat != MESA_FORMAT_NONE);
 
    /* check that width, height, depth are legal for the mipmap level */