[Mesa-dev] [PATCH 09/11] intel: Rely on AllocTextureImageBuffer for our teximage fallbacks.

Eric Anholt eric at anholt.net
Thu Sep 22 12:34:21 PDT 2011


It will do a more reliable job at getting the image size for
_mesa_texstore right than us.
---
 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,
-- 
1.7.5.4



More information about the mesa-dev mailing list