From efc93219a9dfbd8e0bc42a1d0db372d2e7a7618c Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 17 Sep 2011 14:50:48 -0600 Subject: [PATCH] swrast: add Alloc/FreeTextureImageBuffer() driver functions 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(+) 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 @@ -58,6 +58,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. */ 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, -- 2.30.2