mesa: Fix generic compressed texture formats' handling in glTexImage/glCopyTexImage

The generic texture formats should be accepted by the <internalformat>
parameter of TexImage1D, TexImage2D, TexImage3D, CopyTexImage1D, and
CopyTexImage2D functions. When the application specifies a generic
format, the driver is free to pick an uncompressed format.

This patch reverts the changes due to following commit:
commit a36581ccc0
mesa: do more teximage error checking for generic compressed formats

This patch fixes compressed texture format failures in intel oglconform
pxconv-gettex test case:
https://bugs.freedesktop.org/show_bug.cgi?id=47220

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Anuj Phogat 2012-08-21 11:03:48 -07:00
parent 1cb07bd3b8
commit df2c4cbced

View file

@ -540,32 +540,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat )
}
/**
* Is the given texture format a generic compressed format?
*/
static GLboolean
is_generic_compressed_format(GLenum format)
{
switch (format) {
case GL_COMPRESSED_RED:
case GL_COMPRESSED_RG:
case GL_COMPRESSED_RGB:
case GL_COMPRESSED_RGBA:
case GL_COMPRESSED_ALPHA:
case GL_COMPRESSED_LUMINANCE:
case GL_COMPRESSED_LUMINANCE_ALPHA:
case GL_COMPRESSED_INTENSITY:
case GL_COMPRESSED_SRGB:
case GL_COMPRESSED_SRGB_ALPHA:
case GL_COMPRESSED_SLUMINANCE:
case GL_COMPRESSED_SLUMINANCE_ALPHA:
return GL_TRUE;
default:
return GL_FALSE;
}
}
/**
* For cube map faces, return a face index in [0,5].
* For other targets return 0;
@ -1745,8 +1719,7 @@ texture_error_check( struct gl_context *ctx,
}
/* additional checks for compressed textures */
if (_mesa_is_compressed_format(ctx, internalFormat) ||
is_generic_compressed_format(internalFormat)) {
if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target, internalFormat)) {
if (!isProxy)
_mesa_error(ctx, GL_INVALID_ENUM,
@ -2077,8 +2050,7 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
return GL_TRUE;
}
if (_mesa_is_compressed_format(ctx, internalFormat) ||
is_generic_compressed_format(internalFormat)) {
if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target, internalFormat)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glCopyTexImage%dD(target)", dimensions);