summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2011-09-17 14:50:48 -0600
committerBrian Paul <[email protected]>2011-09-17 14:57:40 -0600
commitefc93219a9dfbd8e0bc42a1d0db372d2e7a7618c (patch)
treece212bc3611bf48dafb38206260c7a1b287b2cfa /src
parentd1da1c0ca816672c7a9243b754bb4b803ab0394a (diff)
swrast: add Alloc/FreeTextureImageBuffer() driver functions
Not called yet. These will replace the core Mesa functions for allocating and freeing malloc'd texture memory.
Diffstat (limited to 'src')
-rw-r--r--src/mesa/swrast/s_texture.c38
-rw-r--r--src/mesa/swrast/swrast.h10
2 files changed, 48 insertions, 0 deletions
diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c
index 184fd952dc5..7e3fc2806d9 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 d732c31ad14..390b422642b 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,