intel: Rely on AllocTextureImageBuffer for our teximage fallbacks.
authorEric Anholt <eric@anholt.net>
Wed, 21 Sep 2011 22:56:04 +0000 (15:56 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 26 Sep 2011 22:33:42 +0000 (15:33 -0700)
It will do a more reliable job at getting the image size for
_mesa_texstore right than us.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/intel/intel_tex_image.c

index 06e58e4..be328d1 100644 (file)
@@ -352,7 +352,7 @@ intelTexImage(struct gl_context * ctx,
    struct intel_context *intel = intel_context(ctx);
    struct intel_texture_object *intelObj = intel_texture_object(texObj);
    struct intel_texture_image *intelImage = intel_texture_image(texImage);
-   GLint texelBytes, sizeInBytes;
+   GLint texelBytes;
    GLuint dstRowStride = 0;
 
    DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
@@ -389,6 +389,10 @@ intelTexImage(struct gl_context * ctx,
        * before, and any lower levels would fit into our miptree.
        */
       intel_miptree_reference(&intelObj->mt, intelImage->mt);
+   } else {
+      /* Allocate fallback texImage->Data storage through swrast. */
+      ctx->Driver.AllocTextureImageBuffer(ctx, texImage, texImage->TexFormat,
+                                         width, height, depth);
    }
 
    /* Attempt to use the blitter for PBO image uploads.
@@ -424,24 +428,6 @@ intelTexImage(struct gl_context * ctx,
 
       texImage->RowStride = dstRowStride / intelImage->mt->cpp;
    }
-   else {
-      /* Allocate regular memory and store the image there temporarily.   */
-      if (_mesa_is_format_compressed(texImage->TexFormat)) {
-         sizeInBytes = _mesa_format_image_size(texImage->TexFormat,
-                                               texImage->Width,
-                                               texImage->Height,
-                                               texImage->Depth);
-         dstRowStride =
-            _mesa_format_row_stride(texImage->TexFormat, width);
-         assert(dims != 3);
-      }
-      else {
-         dstRowStride = width * texelBytes;
-         sizeInBytes = depth * dstRowStride * height;
-      }
-
-      texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
-   }
 
    DBG("Upload image %dx%dx%d row_len %d pitch %d pixels %d\n",
        width, height, depth, width * texelBytes, dstRowStride,