mesa: consolidate internal glCompressedTexImage1/2/3D code

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Brian Paul
2012-06-05 16:32:23 -06:00
parent cd9ab2584f
commit e8fdd0e0d5
7 changed files with 43 additions and 139 deletions
+1 -3
View File
@@ -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;
@@ -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;
+7 -30
View File
@@ -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.
* Called by glCompressedTexImage[123]D().
*/
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);
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().
+4 -25
View File
@@ -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);
+13 -49
View File
@@ -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()
*/
+6 -20
View File
@@ -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
+9 -9
View File
@@ -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;