From e8fdd0e0d5286f4a9c763ffde44decec51124ebc Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 5 Jun 2012 16:32:23 -0600 Subject: mesa: consolidate internal glCompressedTexImage1/2/3D code Reviewed-by: Kenneth Graunke --- src/mesa/drivers/common/driverfuncs.c | 4 +- src/mesa/drivers/dri/nouveau/nouveau_texture.c | 6 +-- src/mesa/main/dd.h | 39 ++++------------ src/mesa/main/teximage.c | 29 ++---------- src/mesa/main/texstore.c | 62 ++++++-------------------- src/mesa/main/texstore.h | 26 +++-------- src/mesa/state_tracker/st_cb_texture.c | 18 ++++---- 7 files changed, 44 insertions(+), 140 deletions(-) diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 118fc4ab06b..3d689362c61 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -97,9 +97,7 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->CopyTexSubImage = _mesa_meta_CopyTexSubImage; driver->GenerateMipmap = _mesa_meta_GenerateMipmap; driver->TestProxyTexImage = _mesa_test_proxy_teximage; - driver->CompressedTexImage1D = _mesa_store_compressed_teximage1d; - driver->CompressedTexImage2D = _mesa_store_compressed_teximage2d; - driver->CompressedTexImage3D = _mesa_store_compressed_teximage3d; + driver->CompressedTexImage = _mesa_store_compressed_teximage; driver->CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d; driver->CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d; driver->CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index 4d6518d2426..281d1dda458 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -555,10 +555,10 @@ nouveau_teximage_123d(struct gl_context *ctx, GLuint dims, } static void -nouveau_compressed_teximage_2d(struct gl_context *ctx, +nouveau_compressed_teximage(struct gl_context *ctx, GLuint dims, struct gl_texture_image *ti, GLint internalFormat, - GLint width, GLint height, GLint border, + GLint width, GLint height, GLint depth, GLint border, GLsizei imageSize, const GLvoid *data) { nouveau_teximage(ctx, 2, ti, internalFormat, @@ -708,7 +708,7 @@ nouveau_texture_functions_init(struct dd_function_table *functions) functions->ChooseTextureFormat = nouveau_choose_tex_format; functions->TexImage = nouveau_teximage_123d; functions->TexSubImage = nouveau_texsubimage_123d; - functions->CompressedTexImage2D = nouveau_compressed_teximage_2d; + functions->CompressedTexImage = nouveau_compressed_teximage; functions->CompressedTexSubImage2D = nouveau_compressed_texsubimage_2d; functions->BindTexture = nouveau_bind_texture; functions->MapTextureImage = nouveau_map_texture_image; diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index f66e754baea..07106ac3684 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -269,37 +269,14 @@ struct dd_function_table { /*@{*/ /** - * Called by glCompressedTexImage1D(). - * The parameters are the same as for glCompressedTexImage1D(), plus a - * pointer to the destination texure image. - */ - void (*CompressedTexImage1D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLsizei width, GLint border, - GLsizei imageSize, const GLvoid *data); - /** - * Called by glCompressedTexImage2D(). - * - * \sa dd_function_table::CompressedTexImage1D. - */ - void (*CompressedTexImage2D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLsizei width, GLsizei height, GLint border, - GLsizei imageSize, const GLvoid *data); - - /** - * Called by glCompressedTexImage3D(). - * - * \sa dd_function_table::CompressedTexImage3D. - */ - void (*CompressedTexImage3D)(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLsizei width, GLsizei height, GLsizei depth, - GLint border, - GLsizei imageSize, const GLvoid *data); + * Called by glCompressedTexImage[123]D(). + */ + void (*CompressedTexImage)(struct gl_context *ctx, GLuint dims, + struct gl_texture_image *texImage, + GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, + GLsizei imageSize, const GLvoid *data); /** * Called by glCompressedTexSubImage1D(). diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index ce42246317f..290a4e454dc 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -3541,31 +3541,10 @@ compressedteximage(struct gl_context *ctx, GLuint dims, width, height, depth, border, internalFormat, texFormat); - switch (dims) { - case 1: - ASSERT(ctx->Driver.CompressedTexImage1D); - ctx->Driver.CompressedTexImage1D(ctx, texImage, - internalFormat, - width, - border, imageSize, data); - break; - case 2: - ASSERT(ctx->Driver.CompressedTexImage2D); - ctx->Driver.CompressedTexImage2D(ctx, texImage, - internalFormat, - width, height, - border, imageSize, data); - break; - case 3: - ASSERT(ctx->Driver.CompressedTexImage3D); - ctx->Driver.CompressedTexImage3D(ctx, texImage, - internalFormat, - width, height, depth, - border, imageSize, data); - break; - default: - _mesa_problem(ctx, "bad dims in compressedteximage"); - } + ctx->Driver.CompressedTexImage(ctx, dims, texImage, + internalFormat, + width, height, depth, + border, imageSize, data); check_gen_mipmap(ctx, target, texObj, level); diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index ce8f36bfc2f..37ba082a475 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -4309,36 +4309,23 @@ _mesa_store_texsubimage(struct gl_context *ctx, GLuint dims, } -/* - * Fallback for Driver.CompressedTexImage1D() - */ -void -_mesa_store_compressed_teximage1d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint border, - GLsizei imageSize, const GLvoid *data) -{ - /* no compressed 1D image formats at this time */ - (void) ctx; - (void) internalFormat; - (void) width; (void) border; - (void) imageSize; (void) data; - (void) texImage; -} - - - /** - * Fallback for Driver.CompressedTexImage2D() + * Fallback for Driver.CompressedTexImage() */ void -_mesa_store_compressed_teximage2d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint border, - GLsizei imageSize, const GLvoid *data) +_mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims, + struct gl_texture_image *texImage, + GLint internalFormat, + GLint width, GLint height, GLint depth, + GLint border, + GLsizei imageSize, const GLvoid *data) { + /* only 2D compressed images are supported at this time */ + if (dims != 2) { + _mesa_problem(ctx, "Unexpected glCompressedTexImage1D/3D call"); + return; + } + /* This is pretty simple, because unlike the general texstore path we don't * have to worry about the usual image unpacking or image transfer * operations. @@ -4363,29 +4350,6 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, } - -/* - * Fallback for Driver.CompressedTexImage3D() - */ -void -_mesa_store_compressed_teximage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint depth, - GLint border, - GLsizei imageSize, const GLvoid *data) -{ - /* this space intentionally left blank */ - (void) ctx; - (void) internalFormat; - (void) width; (void) height; (void) depth; - (void) border; - (void) imageSize; (void) data; - (void) texImage; -} - - - /** * Fallback for Driver.CompressedTexSubImage1D() */ diff --git a/src/mesa/main/texstore.h b/src/mesa/main/texstore.h index e6eb2fb4811..68dc4b47960 100644 --- a/src/mesa/main/texstore.h +++ b/src/mesa/main/texstore.h @@ -109,26 +109,12 @@ _mesa_store_texsubimage(struct gl_context *ctx, GLuint dims, extern void -_mesa_store_compressed_teximage1d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint border, - GLsizei imageSize, const GLvoid *data); - -extern void -_mesa_store_compressed_teximage2d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint border, - GLsizei imageSize, const GLvoid *data); - -extern void -_mesa_store_compressed_teximage3d(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint depth, - GLint border, - GLsizei imageSize, const GLvoid *data); +_mesa_store_compressed_teximage(struct gl_context *ctx, GLuint dims, + struct gl_texture_image *texImage, + GLint internalFormat, + GLint width, GLint height, GLint depth, + GLint border, + GLsizei imageSize, const GLvoid *data); extern void diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 593dc95cde4..2fc59649423 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -545,16 +545,16 @@ st_TexImage(struct gl_context * ctx, GLuint dims, static void -st_CompressedTexImage2D(struct gl_context *ctx, - struct gl_texture_image *texImage, - GLint internalFormat, - GLint width, GLint height, GLint border, - GLsizei imageSize, const GLvoid *data) +st_CompressedTexImage(struct gl_context *ctx, GLuint dims, + struct gl_texture_image *texImage, + GLint internalFormat, + GLint width, GLint height, GLint border, GLint depth, + GLsizei imageSize, const GLvoid *data) { - prep_teximage(ctx, texImage, internalFormat, width, 1, 1, border, + prep_teximage(ctx, texImage, internalFormat, width, height, depth, border, GL_NONE, GL_NONE); - _mesa_store_compressed_teximage2d(ctx, texImage, internalFormat, width, - height, border, imageSize, data); + _mesa_store_compressed_teximage(ctx, dims, texImage, internalFormat, width, + height, depth, border, imageSize, data); } @@ -1363,7 +1363,7 @@ st_init_texture_functions(struct dd_function_table *functions) functions->GetTexImage = st_GetTexImage; /* compressed texture functions */ - functions->CompressedTexImage2D = st_CompressedTexImage2D; + functions->CompressedTexImage = st_CompressedTexImage; functions->GetCompressedTexImage = _mesa_get_compressed_teximage; functions->NewTextureObject = st_NewTextureObject; -- cgit v1.2.3