mesa: Skip texstore for 0-sized texture data.
authorEric Anholt <eric@anholt.net>
Tue, 25 Oct 2011 21:38:39 +0000 (14:38 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 26 Oct 2011 19:42:13 +0000 (12:42 -0700)
The intel driver (and gallium, it looks like, though it doesn't use
these texstore functions at this point) doesn't bother making storage
for textures with 0 width, height, or depth.  This avoids them having
to deal with returning a mapping for that nonexistent data.

Fixes assertion failures with an upcoming intel driver change.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/texstore.c

index cd9249630be24945177966626a8189bd7087c915..05c1964d64873e0ed7fcbfa4a35bae0519c77252 100644 (file)
@@ -4499,6 +4499,9 @@ _mesa_store_teximage1d(struct gl_context *ctx, GLenum target, GLint level,
 
    (void) border;
 
+   if (width == 0)
+      return;
+
    /* allocate storage for texture data */
    if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
                                             width, 1, 1)) {
@@ -4560,6 +4563,9 @@ _mesa_store_teximage2d(struct gl_context *ctx, GLenum target, GLint level,
 
    (void) border;
 
+   if (width == 0 || height == 0)
+      return;
+
    /* allocate storage for texture data */
    if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
                                             width, height, 1)) {
@@ -4651,6 +4657,9 @@ _mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level,
 
    (void) border;
 
+   if (width == 0 || height == 0 || depth == 0)
+      return;
+
    /* allocate storage for texture data */
    if (!ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
                                             width, height, depth)) {