summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2012-06-05 16:32:23 -0600
committerBrian Paul <brianp@vmware.com>2012-06-06 07:56:00 -0600
commite8fdd0e0d5286f4a9c763ffde44decec51124ebc (patch)
treecb07e2c420c728b9b395f6199a216ddb2e874e78
parentcd9ab2584f5e2a5eb0e96a948e6aedc9a33c886d (diff)
mesa: consolidate internal glCompressedTexImage1/2/3D code
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/mesa/drivers/common/driverfuncs.c4
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.c6
-rw-r--r--src/mesa/main/dd.h39
-rw-r--r--src/mesa/main/teximage.c29
-rw-r--r--src/mesa/main/texstore.c62
-rw-r--r--src/mesa/main/texstore.h26
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c18
7 files changed, 44 insertions, 140 deletions
diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c
index 118fc4ab06..3d689362c6 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 4d6518d242..281d1dda45 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 f66e754bae..07106ac368 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 ce42246317..290a4e454d 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 ce8f36bfc2..37ba082a47 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 e6eb2fb481..68dc4b4796 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 593dc95cde..2fc5964942 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;