mesa: choose texture format in core mesa, not drivers

Call the ctx->Driver.ChooseTextureFormat() function from core Mesa's
_mesa_[Copy]TexImage functions instead of in the driver functions.
One less thing for drivers to do.
This commit is contained in:
Brian Paul
2009-10-25 18:06:18 -06:00
parent 355b5bde50
commit 11caea687e
12 changed files with 54 additions and 64 deletions

View File

@@ -330,10 +330,6 @@ intelTexImage(GLcontext * ctx,
&postConvHeight);
}
/* choose the texture format */
texImage->TexFormat = intelChooseTextureFormat(ctx, internalFormat,
format, type);
if (_mesa_is_format_compressed(texImage->TexFormat)) {
texelBytes = 0;
}
@@ -787,8 +783,6 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
intelImage->face = target_to_face(target);
intelImage->level = level;
texImage->TexFormat = intelChooseTextureFormat(&intel->ctx, internalFormat,
type, format);
texImage->RowStride = rb->region->pitch;
intel_miptree_reference(&intelImage->mt, intelObj->mt);

View File

@@ -835,9 +835,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
texImage->RowStride = rb->pitch / rb->cpp;
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
internalFormat,
type, format, 0);
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;

View File

@@ -444,9 +444,6 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
texImage->RowStride = rb->pitch / rb->cpp;
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
internalFormat,
type, format, 0);
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;

View File

@@ -907,9 +907,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
texImage->RowStride = rb->pitch / rb->cpp;
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
internalFormat,
type, format, 0);
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;

View File

@@ -385,6 +385,9 @@ restart:
texImage->TexFormat);
return GL_FALSE;
}
/* XXX why is the tex format being set here?
* I think this can be removed.
*/
texImage->TexFormat = radeonChooseTextureFormat(ctx, texImage->InternalFormat, 0,
_mesa_get_format_datatype(texImage->TexFormat),
1);

View File

@@ -709,9 +709,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_
_mesa_init_teximage_fields(radeon->glCtx, target, texImage,
rb->base.Width, rb->base.Height, 1, 0, rb->cpp);
texImage->RowStride = rb->pitch / rb->cpp;
texImage->TexFormat = radeonChooseTextureFormat(radeon->glCtx,
internalFormat,
type, format, 0);
rImage->bo = rb->bo;
radeon_bo_ref(rImage->bo);
t->bo = rb->bo;

View File

@@ -538,9 +538,6 @@ static void radeon_teximage(
&postConvHeight);
}
/* Choose and fill in the texture format for this image */
texImage->TexFormat = radeonChooseTextureFormat(ctx, internalFormat, format, type, 0);
if (_mesa_is_format_compressed(texImage->TexFormat)) {
texelBytes = 0;
} else {

View File

@@ -1396,11 +1396,6 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level,
}
#endif
/* choose the texture format */
assert(ctx->Driver.ChooseTextureFormat);
texImage->TexFormat = (*ctx->Driver.ChooseTextureFormat)(ctx,
internalFormat, format, type);
assert(texImage->TexFormat);
mesaFormat = texImage->TexFormat;
mml->glideFormat = fxGlideFormat(mesaFormat);
ti->info.format = mml->glideFormat;
@@ -1618,12 +1613,6 @@ tdfxCompressedTexImage2D (GLcontext *ctx, GLenum target,
mml->height = height * mml->hScale;
/* choose the texture format */
assert(ctx->Driver.ChooseTextureFormat);
texImage->TexFormat = (*ctx->Driver.ChooseTextureFormat)(ctx,
internalFormat, -1/*format*/, -1/*type*/);
assert(texImage->TexFormat);
/* Determine the appropriate Glide texel format,
* given the user's internal texture format hint.
*/

View File

@@ -1384,11 +1384,6 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
}
#endif
/* choose the texture format */
assert(ctx->Driver.ChooseTextureFormat);
texImage->TexFormat = (*ctx->Driver.ChooseTextureFormat)(ctx,
internalFormat, format, type);
assert(texImage->TexFormat);
texelBytes = _mesa_get_format_bytes(texImage->TexFormat->MesaFormat);
/*if (!fxMesa->HaveTexFmt) assert(texelBytes == 1 || texelBytes == 2);*/
@@ -1648,13 +1643,6 @@ fxDDCompressedTexImage2D (GLcontext *ctx, GLenum target,
mml->width = width * mml->wScale;
mml->height = height * mml->hScale;
/* choose the texture format */
assert(ctx->Driver.ChooseTextureFormat);
texImage->TexFormat = (*ctx->Driver.ChooseTextureFormat)(ctx,
internalFormat, -1/*format*/, -1/*type*/);
assert(texImage->TexFormat);
/* Determine the appropriate Glide texel format,
* given the user's internal texture format hint.
*/

View File

@@ -2195,6 +2195,12 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
postConvWidth, 1, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
format, type);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage1D);
ctx->Driver.TexImage1D(ctx, target, level, internalFormat,
@@ -2311,6 +2317,12 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
postConvWidth, postConvHeight, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
format, type);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage2D);
ctx->Driver.TexImage2D(ctx, target, level, internalFormat,
@@ -2423,6 +2435,12 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
width, height, depth,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
format, type);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
/* Give the texture to the driver. <pixels> may be null. */
ASSERT(ctx->Driver.TexImage3D);
ctx->Driver.TexImage3D(ctx, target, level, internalFormat,
@@ -2735,6 +2753,12 @@ _mesa_CopyTexImage1D( GLenum target, GLint level,
_mesa_init_teximage_fields(ctx, target, texImage, postConvWidth, 1, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
GL_NONE, GL_NONE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
ASSERT(ctx->Driver.CopyTexImage1D);
ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat,
x, y, width, border);
@@ -2812,6 +2836,12 @@ _mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat,
postConvWidth, postConvHeight, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
GL_NONE, GL_NONE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
ASSERT(ctx->Driver.CopyTexImage2D);
ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat,
x, y, width, height, border);
@@ -3290,6 +3320,12 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
_mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
GL_NONE, GL_NONE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
ASSERT(ctx->Driver.CompressedTexImage1D);
ctx->Driver.CompressedTexImage1D(ctx, target, level,
internalFormat, width, border,
@@ -3396,6 +3432,12 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
_mesa_init_teximage_fields(ctx, target, texImage, width, height, 1,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
GL_NONE, GL_NONE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
ASSERT(ctx->Driver.CompressedTexImage2D);
ctx->Driver.CompressedTexImage2D(ctx, target, level,
internalFormat, width, height,
@@ -3501,6 +3543,12 @@ _mesa_CompressedTexImage3DARB(GLenum target, GLint level,
width, height, depth,
border, internalFormat);
/* Choose actual texture format */
texImage->TexFormat =
ctx->Driver.ChooseTextureFormat(ctx, internalFormat,
GL_NONE, GL_NONE);
ASSERT(texImage->TexFormat != MESA_FORMAT_NONE);
ASSERT(ctx->Driver.CompressedTexImage3D);
ctx->Driver.CompressedTexImage3D(ctx, target, level,
internalFormat,

View File

@@ -3250,10 +3250,6 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
GLuint sizeInBytes;
(void) border;
texImage->TexFormat
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
ASSERT(texImage->TexFormat);
/* allocate memory */
sizeInBytes = texture_size(texImage);
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3311,10 +3307,6 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
GLuint sizeInBytes;
(void) border;
texImage->TexFormat
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
ASSERT(texImage->TexFormat);
/* allocate memory */
sizeInBytes = texture_size(texImage);
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3368,10 +3360,6 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
GLuint sizeInBytes;
(void) border;
texImage->TexFormat
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type);
ASSERT(texImage->TexFormat);
/* allocate memory */
sizeInBytes = texture_size(texImage);
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
@@ -3570,10 +3558,6 @@ _mesa_store_compressed_teximage2d(GLcontext *ctx, GLenum target, GLint level,
ASSERT(texImage->Depth == 1);
ASSERT(texImage->Data == NULL); /* was freed in glCompressedTexImage2DARB */
texImage->TexFormat
= ctx->Driver.ChooseTextureFormat(ctx, internalFormat, 0, 0);
ASSERT(texImage->TexFormat);
/* allocate storage */
texImage->Data = _mesa_alloc_texmemory(imageSize);
if (!texImage->Data) {

View File

@@ -555,10 +555,6 @@ st_TexImage(GLcontext * ctx,
}
#endif
/* choose the texture format */
texImage->TexFormat = st_ChooseTextureFormat(ctx, internalFormat,
format, type);
_mesa_set_fetch_functions(texImage, dims);
if (_mesa_is_format_compressed(texImage->TexFormat)) {