diff options
Diffstat (limited to 'src/mesa/swrast')
-rw-r--r-- | src/mesa/swrast/s_context.h | 29 | ||||
-rw-r--r-- | src/mesa/swrast/s_texture.c | 27 | ||||
-rw-r--r-- | src/mesa/swrast/swrast.h | 7 |
3 files changed, 63 insertions, 0 deletions
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 @@ -110,6 +110,35 @@ typedef void (*validate_texture_image_func)(struct gl_context *ctx, /** + * 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, |