texobj: Check completeness with InternalFormat rather than Mesa format
authorNeil Roberts <neil@linux.intel.com>
Wed, 13 Jan 2016 19:28:45 +0000 (19:28 +0000)
committerNeil Roberts <neil@linux.intel.com>
Thu, 14 Jan 2016 12:18:24 +0000 (12:18 +0000)
The internal Mesa format used for a texture might not match the one
requested in the internalFormat when the texture was created, for
example if the driver is internally remapping RGB textures to RGBA.
Otherwise it can cause false positives for completeness if one mipmap
image is created as RGBA and the other as RGB because they would both
have an RGBA Mesa format. If we check the InternalFormat instead then
we are directly checking the API usage which I think better matches
the intention of the check.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93700
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
src/mesa/main/texobj.c

index 547055ecf39f9d2647059c5b429c00fb888a5d2f..b107a8f8678c061dfe67084d2e281e542aa51021 100644 (file)
@@ -835,7 +835,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx,
                   incomplete(t, MIPMAP, "TexImage[%d] is missing", i);
                   return;
                }
-               if (img->TexFormat != baseImage->TexFormat) {
+               if (img->InternalFormat != baseImage->InternalFormat) {
                   incomplete(t, MIPMAP, "Format[i] != Format[baseLevel]");
                   return;
                }