On 01/16/2012 12:51 PM, Anuj Phogat wrote:
TestMipMaps() function in src/OGLconform/textureNPOT.c calls glTexImage2D()
with width = 0. Texture with zero image width skips miptree allocation due to
a condition in function _mesa_store_teximage3d(). While calling glGetTexImage()
it results in assertion failure in intel_map_texture_image() due to null mt
pointer

https://bugs.freedesktop.org/show_bug.cgi?id=42334

Signed-off-by: Anuj Phogat<anuj.pho...@gmail.com>
---
  src/mesa/main/texstore.c |    3 ---
  1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index a9c64ce..956276e 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -4601,9 +4601,6 @@ _mesa_store_teximage3d(struct gl_context *ctx,
                         GLenum format, GLenum type, const void *pixels,
                         const struct gl_pixelstore_attrib *packing)
  {
-   if (width == 0 || height == 0 || depth == 0)
-      return;
-
     /* allocate storage for texture data */
     if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, 
texImage->TexFormat,
                                              width, height, depth)) {

Note that the _mesa_store_teximage1d and 2d() functions also have checks like this.

How about checking for a zero-sized texture image in glGetTexImage() instead?

--- a/src/mesa/main/texgetimage.c
+++ b/src/mesa/main/texgetimage.c
@@ -740,8 +740,11 @@ getteximage_error_check(struct gl_context *ctx, GLenum targ
    }

    texImage = _mesa_select_tex_image(ctx, texObj, target, level);
-   if (!texImage) {
-      /* non-existant texture image */
+   if (!texImage ||
+       texImage->Width == 0 ||
+       texImage->Height == 0 ||
+       texImage->Depth == 0) {
+      /* non-existant or empty texture image */
       return GL_TRUE;
    }



-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to