[Mesa-dev] [PATCH 3/3] st/mesa: completely stop using gl_texture_image::Data

Brian Paul brian.e.paul at gmail.com
Tue Oct 4 17:30:35 PDT 2011


From: Brian Paul <brianp at vmware.com>

Instead, use the new st_texture_image::TexData field to hold texture
images that don't fit the parent object's mipmap buffer.
---
 src/mesa/state_tracker/st_cb_texture.c |   26 +++++++++++++-------------
 src/mesa/state_tracker/st_texture.h    |    7 ++++++-
 2 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index ce10350..de3b972 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -162,9 +162,9 @@ st_FreeTextureImageBuffer(struct gl_context * ctx, struct gl_texture_image *texI
       pipe_resource_reference(&stImage->pt, NULL);
    }
 
-   if (texImage->Data) {
-      _mesa_align_free(texImage->Data);
-      texImage->Data = NULL;
+   if (stImage->TexData) {
+      _mesa_align_free(stImage->TexData);
+      stImage->TexData = NULL;
    }
 }
 
@@ -482,7 +482,7 @@ st_AllocTextureImageBuffer(struct gl_context *ctx,
    assert(width > 0);
    assert(height > 0);
    assert(depth > 0);
-   assert(!texImage->Data);
+   assert(!stImage->TexData);
    assert(!stImage->pt); /* xxx this might be wrong */
 
    /* Look if the parent texture object has space for this image */
@@ -651,10 +651,10 @@ st_TexImage(struct gl_context * ctx,
     */
    if (stImage->pt) {
       pipe_resource_reference(&stImage->pt, NULL);
-      assert(!texImage->Data);
+      assert(!stImage->TexData);
    }
-   else if (texImage->Data) {
-      _mesa_align_free(texImage->Data);
+   else if (stImage->TexData) {
+      _mesa_align_free(stImage->TexData);
    }
 
    /*
@@ -756,8 +756,8 @@ st_TexImage(struct gl_context * ctx,
                                                  width, height, depth);
       dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
 
-      texImage->Data = _mesa_align_malloc(imageSize, 16);
-      dstMap = texImage->Data;
+      stImage->TexData = _mesa_align_malloc(imageSize, 16);
+      dstMap = stImage->TexData;
    }
 
    if (!dstMap) {
@@ -1684,19 +1684,19 @@ copy_image_data_to_texture(struct st_context *st,
 
       pipe_resource_reference(&stImage->pt, NULL);
    }
-   else if (stImage->base.Data) {
+   else if (stImage->TexData) {
       st_texture_image_data(st,
                             stObj->pt,
                             stImage->base.Face,
                             dstLevel,
-                            stImage->base.Data,
+                            stImage->TexData,
                             stImage->base.RowStride * 
                             util_format_get_blocksize(stObj->pt->format),
                             stImage->base.RowStride *
                             stImage->base.Height *
                             util_format_get_blocksize(stObj->pt->format));
-      _mesa_align_free(stImage->base.Data);
-      stImage->base.Data = NULL;
+      _mesa_align_free(stImage->TexData);
+      stImage->TexData = NULL;
    }
 
    pipe_resource_reference(&stImage->pt, stObj->pt);
diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h
index dd3bc73..3d2a636 100644
--- a/src/mesa/state_tracker/st_texture.h
+++ b/src/mesa/state_tracker/st_texture.h
@@ -45,8 +45,13 @@ struct st_texture_image
 {
    struct gl_texture_image base;
 
+   /** Used to store texture data that doesn't fit in the patent
+    * object's mipmap buffer.
+    */
+   GLubyte *TexData;
+
    /* If stImage->pt != NULL, image data is stored here.
-    * Else if stImage->base.Data != NULL, image is stored there.
+    * Else if stImage->TexData != NULL, image is stored there.
     * Else there is no image data.
     */
    struct pipe_resource *pt;
-- 
1.7.3.4



More information about the mesa-dev mailing list