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:
@@ -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);
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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 {
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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,
|
||||
|
@@ -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) {
|
||||
|
@@ -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)) {
|
||||
|
Reference in New Issue
Block a user