From ddbd6ed326275de0c22011a2700f342409beee76 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Wed, 21 Jan 2009 02:15:28 +1000 Subject: [PATCH] r300: move to common texture_image object --- src/mesa/drivers/dri/r300/r300_context.h | 28 --------------------------- src/mesa/drivers/dri/r300/r300_tex.c | 18 ++++++++--------- src/mesa/drivers/dri/r300/r300_texstate.c | 10 +++++----- src/mesa/drivers/dri/radeon/common_context.h | 29 ++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 42 deletions(-) diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 1c228b4..5484437 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -79,34 +79,6 @@ typedef struct r300_context *r300ContextPtr; /************ DMA BUFFERS **************/ - -/* Texture related */ -typedef struct _r300_texture_image r300_texture_image; - - -struct _r300_texture_image { - struct gl_texture_image base; - - /** - * If mt != 0, the image is stored in hardware format in the - * given mipmap tree. In this case, base.Data may point into the - * mapping of the buffer object that contains the mipmap tree. - * - * If mt == 0, the image is stored in normal memory pointed to - * by base.Data. - */ - struct _radeon_mipmap_tree *mt; - struct radeon_bo *bo; - - int mtlevel; /** if mt != 0, this is the image's level in the mipmap tree */ - int mtface; /** if mt != 0, this is the image's face in the mipmap tree */ -}; - -static INLINE r300_texture_image *get_r300_texture_image(struct gl_texture_image *image) -{ - return (r300_texture_image*)image; -} - /* The blit width for texture uploads */ #define R300_BLIT_WIDTH_BYTES 1024 diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index e3b871c..a77ceb6 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -412,7 +412,7 @@ static const struct gl_texture_format *r300ChooseTextureFormat(GLcontext * ctx, */ static struct gl_texture_image *r300NewTextureImage(GLcontext *ctx) { - return CALLOC(sizeof(r300_texture_image)); + return CALLOC(sizeof(radeon_texture_image)); } /** @@ -420,7 +420,7 @@ static struct gl_texture_image *r300NewTextureImage(GLcontext *ctx) */ static void r300FreeTexImageData(GLcontext *ctx, struct gl_texture_image *timage) { - r300_texture_image* image = get_r300_texture_image(timage); + radeon_texture_image* image = get_radeon_texture_image(timage); if (image->mt) { radeon_miptree_unreference(image->mt); @@ -437,7 +437,7 @@ static void r300FreeTexImageData(GLcontext *ctx, struct gl_texture_image *timage /* Set Data pointer and additional data for mapped texture image */ -static void teximage_set_map_data(r300_texture_image *image) +static void teximage_set_map_data(radeon_texture_image *image) { radeon_mipmap_level *lvl = &image->mt->levels[image->mtlevel]; image->base.Data = image->mt->bo->ptr + lvl->faces[image->mtface].offset; @@ -448,7 +448,7 @@ static void teximage_set_map_data(r300_texture_image *image) /** * Map a single texture image for glTexImage and friends. */ -static void r300_teximage_map(r300_texture_image *image, GLboolean write_enable) +static void r300_teximage_map(radeon_texture_image *image, GLboolean write_enable) { if (image->mt) { assert(!image->base.Data); @@ -459,7 +459,7 @@ static void r300_teximage_map(r300_texture_image *image, GLboolean write_enable) } -static void r300_teximage_unmap(r300_texture_image *image) +static void r300_teximage_unmap(radeon_texture_image *image) { if (image->mt) { assert(image->base.Data); @@ -483,7 +483,7 @@ static void r300MapTexture(GLcontext *ctx, struct gl_texture_object *texObj) radeon_bo_map(t->mt->bo, GL_FALSE); for(face = 0; face < t->mt->faces; ++face) { for(level = t->mt->firstLevel; level <= t->mt->lastLevel; ++level) - teximage_set_map_data(get_r300_texture_image(texObj->Image[face][level])); + teximage_set_map_data(get_radeon_texture_image(texObj->Image[face][level])); } } @@ -519,7 +519,7 @@ static void r300_teximage( { r300ContextPtr rmesa = R300_CONTEXT(ctx); radeonTexObj* t = radeon_tex_obj(texObj); - r300_texture_image* image = get_r300_texture_image(texImage); + radeon_texture_image* image = get_radeon_texture_image(texImage); R300_FIREVERTICES(rmesa); @@ -688,7 +688,7 @@ static void r300_texsubimage(GLcontext* ctx, int dims, int level, int compressed) { r300ContextPtr rmesa = R300_CONTEXT(ctx); - r300_texture_image* image = get_r300_texture_image(texImage); + radeon_texture_image* image = get_radeon_texture_image(texImage); R300_FIREVERTICES(rmesa); @@ -788,7 +788,7 @@ r300TexSubImage3D(GLcontext * ctx, GLenum target, GLint level, static void r300_generate_mipmap(GLcontext* ctx, GLenum target, struct gl_texture_object *texObj) { GLuint face = face_for_target(target); - r300_texture_image *baseimage = get_r300_texture_image(texObj->Image[face][texObj->BaseLevel]); + radeon_texture_image *baseimage = get_radeon_texture_image(texObj->Image[face][texObj->BaseLevel]); r300_teximage_map(baseimage, GL_FALSE); _mesa_generate_mipmap(ctx, target, texObj); diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 11c53d0..77d9a9b 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -265,7 +265,7 @@ static void copy_rows(void* dst, GLuint dststride, const void* src, GLuint srcst /** * Ensure that the given image is stored in the given miptree from now on. */ -static void migrate_image_to_miptree(radeon_mipmap_tree *mt, r300_texture_image *image, int face, int level) +static void migrate_image_to_miptree(radeon_mipmap_tree *mt, radeon_texture_image *image, int face, int level) { radeon_mipmap_level *dstlvl = &mt->levels[level - mt->firstLevel]; unsigned char *dest; @@ -326,7 +326,7 @@ static GLboolean r300_validate_texture(GLcontext * ctx, struct gl_texture_object { r300ContextPtr rmesa = R300_CONTEXT(ctx); radeonTexObj *t = radeon_tex_obj(texObj); - r300_texture_image *baseimage = get_r300_texture_image(texObj->Image[0][texObj->BaseLevel]); + radeon_texture_image *baseimage = get_radeon_texture_image(texObj->Image[0][texObj->BaseLevel]); int face, level; if (t->validated || t->image_override) @@ -372,7 +372,7 @@ static GLboolean r300_validate_texture(GLcontext * ctx, struct gl_texture_object /* Ensure all images are stored in the single main miptree */ for(face = 0; face < t->mt->faces; ++face) { for(level = t->mt->firstLevel; level <= t->mt->lastLevel; ++level) { - r300_texture_image *image = get_r300_texture_image(texObj->Image[face][level]); + radeon_texture_image *image = get_radeon_texture_image(texObj->Image[face][level]); if (RADEON_DEBUG & DEBUG_TEXTURE) fprintf(stderr, " face %i, level %i... ", face, level); if (t->mt == image->mt) { @@ -465,7 +465,7 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) struct gl_texture_object *texObj; struct gl_texture_image *texImage; struct radeon_renderbuffer *rb; - r300_texture_image *rImage; + radeon_texture_image *rImage; radeonContextPtr radeon; r300ContextPtr rmesa; GLframebuffer *fb; @@ -482,7 +482,7 @@ void r300SetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *dPriv) texObj = _mesa_select_tex_object(radeon->glCtx, texUnit, target); texImage = _mesa_get_tex_image(radeon->glCtx, texObj, target, 0); - rImage = get_r300_texture_image(texImage); + rImage = get_radeon_texture_image(texImage); t = radeon_tex_obj(texObj); if (t == NULL) { return; diff --git a/src/mesa/drivers/dri/radeon/common_context.h b/src/mesa/drivers/dri/radeon/common_context.h index 462b072..6cbcffd 100644 --- a/src/mesa/drivers/dri/radeon/common_context.h +++ b/src/mesa/drivers/dri/radeon/common_context.h @@ -110,6 +110,35 @@ struct radeon_state_atom { void (*emit) (GLcontext *, struct radeon_state_atom *atom); }; + +/* Texture related */ +typedef struct _radeon_texture_image radeon_texture_image; + +struct _radeon_texture_image { + struct gl_texture_image base; + + /** + * If mt != 0, the image is stored in hardware format in the + * given mipmap tree. In this case, base.Data may point into the + * mapping of the buffer object that contains the mipmap tree. + * + * If mt == 0, the image is stored in normal memory pointed to + * by base.Data. + */ + struct _radeon_mipmap_tree *mt; + struct radeon_bo *bo; + + int mtlevel; /** if mt != 0, this is the image's level in the mipmap tree */ + int mtface; /** if mt != 0, this is the image's face in the mipmap tree */ +}; + + +static INLINE radeon_texture_image *get_radeon_texture_image(struct gl_texture_image *image) +{ + return (radeon_texture_image*)image; +} + + typedef struct radeon_tex_obj radeonTexObj, *radeonTexObjPtr; #define RADEON_TXO_MICRO_TILE (1 << 3) -- 2.7.4