From: Brian Paul Date: Sat, 17 Sep 2011 20:50:48 +0000 (-0600) Subject: swrast: introduce new swrast_texture_image struct X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1da896803cdd09293c7bb0048a2116e237a51766;p=mesa.git 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. --- 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,