[Mesa-dev] [PATCH 10/12] swrast: add Alloc/FreeTextureImageBuffer() driver functions

Brian Paul brian.e.paul at gmail.com
Sat Sep 10 10:55:15 PDT 2011


From: Brian Paul <brianp at vmware.com>

Not called yet.  These will replace the core Mesa functions for allocating
and freeing malloc'd texture memory.
---
 src/mesa/swrast/s_texture.c |   38 ++++++++++++++++++++++++++++++++++++++
 src/mesa/swrast/swrast.h    |   10 ++++++++++
 2 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c
index 184fd95..7e3fc28 100644
--- a/src/mesa/swrast/s_texture.c
+++ b/src/mesa/swrast/s_texture.c
@@ -59,6 +59,44 @@ _swrast_delete_texture_image(struct gl_context *ctx,
 
 
 /**
+ * Called via ctx->Driver.AllocTextureImageBuffer()
+ */
+GLboolean
+_swrast_alloc_texture_image_buffer(struct gl_context *ctx,
+                                   struct gl_texture_image *texImage,
+                                   gl_format format, GLsizei width,
+                                   GLsizei height, GLsizei depth)
+{
+   GLuint bytes = _mesa_format_image_size(format, width, height, depth);
+
+   /* This _should_ be true (revisit if these ever fail) */
+   assert(texImage->Width == width);
+   assert(texImage->Height == height);
+   assert(texImage->Depth == depth);
+
+   assert(!texImage->Data);
+   texImage->Data = _mesa_align_malloc(bytes, 512);
+
+   return texImage->Data != NULL;
+}
+
+
+/**
+ * Called via ctx->Driver.FreeTextureImageBuffer()
+ */
+void
+_swrast_free_texture_image_buffer(struct gl_context *ctx,
+                                  struct gl_texture_image *texImage)
+{
+   if (texImage->Data && !texImage->IsClientData) {
+      _mesa_align_free(texImage->Data);
+   }
+
+   texImage->Data = NULL;
+}
+
+
+/**
  * Error checking for debugging only.
  */
 static void
diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h
index d732c31..390b422 100644
--- a/src/mesa/swrast/swrast.h
+++ b/src/mesa/swrast/swrast.h
@@ -189,6 +189,16 @@ extern void
 _swrast_delete_texture_image(struct gl_context *ctx,
                              struct gl_texture_image *texImage);
 
+extern GLboolean
+_swrast_alloc_texture_image_buffer(struct gl_context *ctx,
+                                   struct gl_texture_image *texImage,
+                                   gl_format format, GLsizei width,
+                                   GLsizei height, GLsizei depth);
+
+extern void
+_swrast_free_texture_image_buffer(struct gl_context *ctx,
+                                  struct gl_texture_image *texImage);
+
 extern void
 _swrast_map_teximage(struct gl_context *ctx,
 		     struct gl_texture_image *texImage,
-- 
1.7.3.4



More information about the mesa-dev mailing list