mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-26 15:00:10 +01:00
mesa: begin some texstore code refactoring
Next step will be to move the calls to ctx->Driver.ChooseTextureFormat() into the teximage.c functions so drivers don't have to do it.
This commit is contained in:
parent
1d8fbef4f2
commit
21caa29fbd
1 changed files with 25 additions and 28 deletions
|
|
@ -3302,32 +3302,9 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Choose the actual storage format for a new texture image.
|
||||
* Mainly, this is a wrapper for the driver's ChooseTextureFormat() function.
|
||||
* Also set some other texImage fields related to texture compression, etc.
|
||||
* \param ctx rendering context
|
||||
* \param texImage the gl_texture_image
|
||||
* \param dims texture dimensions (1, 2 or 3)
|
||||
* \param format the user-specified format parameter
|
||||
* \param type the user-specified type parameter
|
||||
* \param internalFormat the user-specified internal format hint
|
||||
*/
|
||||
static void
|
||||
choose_texture_format(GLcontext *ctx, struct gl_texture_image *texImage,
|
||||
GLuint dims,
|
||||
GLenum format, GLenum type, GLint internalFormat)
|
||||
compute_texture_size(GLcontext *ctx, struct gl_texture_image *texImage)
|
||||
{
|
||||
ASSERT(dims == 1 || dims == 2 || dims == 3);
|
||||
ASSERT(ctx->Driver.ChooseTextureFormat);
|
||||
|
||||
texImage->TexFormat
|
||||
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
|
||||
|
||||
ASSERT(texImage->TexFormat);
|
||||
|
||||
_mesa_set_fetch_functions(texImage, dims);
|
||||
|
||||
if (texImage->TexFormat->TexelBytes == 0) {
|
||||
/* must be a compressed format */
|
||||
texImage->IsCompressed = GL_TRUE;
|
||||
|
|
@ -3365,7 +3342,12 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||
GLint sizeInBytes;
|
||||
(void) border;
|
||||
|
||||
choose_texture_format(ctx, texImage, 1, format, type, internalFormat);
|
||||
texImage->TexFormat
|
||||
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
|
||||
ASSERT(texImage->TexFormat);
|
||||
|
||||
_mesa_set_fetch_functions(texImage, 1);
|
||||
compute_texture_size(ctx, texImage);
|
||||
|
||||
/* allocate memory */
|
||||
if (texImage->IsCompressed)
|
||||
|
|
@ -3429,7 +3411,12 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||
GLint texelBytes, sizeInBytes;
|
||||
(void) border;
|
||||
|
||||
choose_texture_format(ctx, texImage, 2, format, type, internalFormat);
|
||||
texImage->TexFormat
|
||||
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
|
||||
ASSERT(texImage->TexFormat);
|
||||
|
||||
_mesa_set_fetch_functions(texImage, 2);
|
||||
compute_texture_size(ctx, texImage);
|
||||
|
||||
texelBytes = texImage->TexFormat->TexelBytes;
|
||||
|
||||
|
|
@ -3498,7 +3485,12 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||
GLint texelBytes, sizeInBytes;
|
||||
(void) border;
|
||||
|
||||
choose_texture_format(ctx, texImage, 3, format, type, internalFormat);
|
||||
texImage->TexFormat
|
||||
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
|
||||
ASSERT(texImage->TexFormat);
|
||||
|
||||
_mesa_set_fetch_functions(texImage, 3);
|
||||
compute_texture_size(ctx, texImage);
|
||||
|
||||
texelBytes = texImage->TexFormat->TexelBytes;
|
||||
|
||||
|
|
@ -3732,7 +3724,12 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||
ASSERT(texImage->Depth == 1);
|
||||
ASSERT(texImage->Data == NULL); /* was freed in glCompressedTexImage2DARB */
|
||||
|
||||
choose_texture_format(ctx, texImage, 2, 0, 0, internalFormat);
|
||||
texImage->TexFormat
|
||||
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, 0, 0);
|
||||
ASSERT(texImage->TexFormat);
|
||||
|
||||
_mesa_set_fetch_functions(texImage, 2);
|
||||
compute_texture_size(ctx, texImage);
|
||||
|
||||
/* allocate storage */
|
||||
texImage->Data = _mesa_alloc_texmemory(imageSize);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue