From 1da896803cdd09293c7bb0048a2116e237a51766 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Sat, 17 Sep 2011 14:50:48 -0600 Subject: [PATCH] swrast: introduce new swrast_texture_image struct No subclass fields yet. Subsequent patches will add the fields related to software rendering that are currently in gl_texture_image. --- src/mesa/swrast/s_context.h | 29 +++++++++++++++++++++++++++++ src/mesa/swrast/s_texture.c | 27 +++++++++++++++++++++++++++ src/mesa/swrast/swrast.h | 7 +++++++ 3 files changed, 63 insertions(+) diff --git a/src/mesa/swrast/s_context.h b/src/mesa/swrast/s_context.h index 8d7458c2dd9..687480ed285 100644 --- a/src/mesa/swrast/s_context.h +++ b/src/mesa/swrast/s_context.h @@ -109,6 +109,35 @@ typedef void (*validate_texture_image_func)(struct gl_context *ctx, _NEW_DEPTH) +/** + * Subclass of gl_texture_image. + * We need extra fields/info to keep tracking of mapped texture buffers, + * strides and Fetch/Store functions. + */ +struct swrast_texture_image +{ + struct gl_texture_image Base; + + /* XXX new members coming soon */ +}; + + +/** cast wrapper */ +static INLINE struct swrast_texture_image * +swrast_texture_image(struct gl_texture_image *img) +{ + return (struct swrast_texture_image *) img; +} + +/** cast wrapper */ +static INLINE const struct swrast_texture_image * +swrast_texture_image_const(const struct gl_texture_image *img) +{ + return (const struct swrast_texture_image *) img; +} + + + /** * \struct SWcontext * \brief Per-context state that's private to the software rasterizer module. diff --git a/src/mesa/swrast/s_texture.c b/src/mesa/swrast/s_texture.c index 6cc72c582f7..184fd952dc5 100644 --- a/src/mesa/swrast/s_texture.c +++ b/src/mesa/swrast/s_texture.c @@ -28,9 +28,36 @@ #include "main/context.h" #include "main/fbobject.h" +#include "main/teximage.h" #include "swrast/swrast.h" #include "swrast/s_context.h" + +/** + * Allocate a new swrast_texture_image (a subclass of gl_texture_image). + * Called via ctx->Driver.NewTextureImage(). + */ +struct gl_texture_image * +_swrast_new_texture_image( struct gl_context *ctx ) +{ + (void) ctx; + return (struct gl_texture_image *) CALLOC_STRUCT(swrast_texture_image); +} + + +/** + * Free a swrast_texture_image (a subclass of gl_texture_image). + * Called via ctx->Driver.DeleteTextureImage(). + */ +void +_swrast_delete_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage) +{ + /* Nothing special for the subclass yet */ + _mesa_delete_texture_image(ctx, texImage); +} + + /** * Error checking for debugging only. */ diff --git a/src/mesa/swrast/swrast.h b/src/mesa/swrast/swrast.h index c8b99863568..d732c31ad14 100644 --- a/src/mesa/swrast/swrast.h +++ b/src/mesa/swrast/swrast.h @@ -182,6 +182,13 @@ _swrast_render_start( struct gl_context *ctx ); extern void _swrast_render_finish( struct gl_context *ctx ); +extern struct gl_texture_image * +_swrast_new_texture_image( struct gl_context *ctx ); + +extern void +_swrast_delete_texture_image(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