Mesa (master): intel: Rely on AllocTextureImageBuffer for our teximage fallbacks.

Eric Anholt anholt at kemper.freedesktop.org
Mon Sep 26 22:38:35 UTC 2011


Module: Mesa
Branch: master
Commit: 2ef77d1c74be936f7597d4f289c732c0db9e8687
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ef77d1c74be936f7597d4f289c732c0db9e8687

Author: Eric Anholt <eric at anholt.net>
Date:   Wed Sep 21 15:56:04 2011 -0700

intel: Rely on AllocTextureImageBuffer for our teximage fallbacks.

It will do a more reliable job at getting the image size for
_mesa_texstore right than us.

Acked-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/intel/intel_tex_image.c |   24 +++++-------------------
 1 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c
index 06e58e4..be328d1 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_image.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_image.c
@@ -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,




More information about the mesa-commit mailing list