diff options
author | Brian Paul <[email protected]> | 2011-09-17 14:50:48 -0600 |
---|---|---|
committer | Brian Paul <[email protected]> | 2011-09-17 14:57:40 -0600 |
commit | efc93219a9dfbd8e0bc42a1d0db372d2e7a7618c (patch) | |
tree | ce212bc3611bf48dafb38206260c7a1b287b2cfa /src | |
parent | d1da1c0ca816672c7a9243b754bb4b803ab0394a (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.c | 38 | ||||
-rw-r--r-- | 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 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, |