use _mesa_compressed_texture_size() for GL_TEXTURE_COMPRESSED_IMAGE_SIZE query
authorBrian Paul <brian.paul@tungstengraphics.com>
Tue, 9 May 2006 00:00:46 +0000 (00:00 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Tue, 9 May 2006 00:00:46 +0000 (00:00 +0000)
src/mesa/main/texstate.c

index 4bd9895cd5c26483400535916c06d95e23f0ce98..7e762edd2562c64199f979bdaa3990bda50da197 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Mesa 3-D graphics library
- * Version:  6.5
+ * Version:  6.5.1
  *
  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
  *
@@ -34,6 +34,7 @@
 #include "context.h"
 #include "enums.h"
 #include "macros.h"
+#include "texcompress.h"
 #include "texobj.h"
 #include "teximage.h"
 #include "texstate.h"
@@ -1831,11 +1832,18 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
       /* GL_ARB_texture_compression */
       case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
          if (ctx->Extensions.ARB_texture_compression) {
-            if (img->IsCompressed && !isProxy)
-               *params = img->CompressedSize;
-            else
+            if (img->IsCompressed && !isProxy) {
+               /* Don't use ctx->Driver.CompressedTextureSize() since that
+                * may returned a padded hardware size.
+                */
+               *params = _mesa_compressed_texture_size(ctx, img->Width,
+                                                   img->Height, img->Depth,
+                                                   img->TexFormat->MesaFormat);
+            }
+            else {
                _mesa_error(ctx, GL_INVALID_OPERATION,
                            "glGetTexLevelParameter[if]v(pname)");
+            }
          }
          else {
             _mesa_error(ctx, GL_INVALID_ENUM,