mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-31 04:50:34 +01:00
mesa: do more teximage error checking for generic compressed formats
When glTexImage or glCopyTexImage is called with internalFormat being a
generic compressed format (like GL_COMPRESSED_RGB) we need to do the same
error checks as for specific compressed formats. In particular, check if
the texture target is compatible with the format. None of the texture
compression formats we support so far work with GL_TEXTURE_1D, for example.
See also https://bugs.freedesktop.org/show_bug.cgi?id=49124
NOTE: This is a candidate for the 8.0 branch.
(cherry picked from commit a36581ccc0)
This commit is contained in:
parent
2aaaa18853
commit
110111bc5b
1 changed files with 30 additions and 2 deletions
|
|
@ -525,6 +525,32 @@ _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;
|
||||
|
|
@ -1705,7 +1731,8 @@ texture_error_check( struct gl_context *ctx,
|
|||
}
|
||||
|
||||
/* additional checks for compressed textures */
|
||||
if (_mesa_is_compressed_format(ctx, internalFormat)) {
|
||||
if (_mesa_is_compressed_format(ctx, internalFormat) ||
|
||||
is_generic_compressed_format(internalFormat)) {
|
||||
if (!target_can_be_compressed(ctx, target, internalFormat)) {
|
||||
if (!isProxy)
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
|
|
@ -2036,7 +2063,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions,
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
if (_mesa_is_compressed_format(ctx, internalFormat)) {
|
||||
if (_mesa_is_compressed_format(ctx, internalFormat) ||
|
||||
is_generic_compressed_format(internalFormat)) {
|
||||
if (!target_can_be_compressed(ctx, target, internalFormat)) {
|
||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||
"glCopyTexImage%dD(target)", dimensions);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue