mesa: consolidate internal glCompressedTexImage1/2/3D code
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -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
@@ -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().
|
||||
|
||||
@@ -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
@@ -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()
|
||||
*/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user