mesa/genmipmap: Added a function to validate the internalformat

It will be used by the ARB_internalformat_query2 implementation to
implement mipmap related queries.

Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Antia Puentes
2015-11-26 15:20:24 +01:00
committed by Eduardo Lima Mitev
parent 06852f4b7a
commit 079d99b830
2 changed files with 15 additions and 4 deletions

View File

@@ -75,6 +75,16 @@ _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx,
return (error != GL_TRUE); return (error != GL_TRUE);
} }
bool
_mesa_is_valid_generate_texture_mipmap_internalformat(struct gl_context *ctx,
GLenum internalformat)
{
return (!_mesa_is_enum_format_integer(internalformat) &&
!_mesa_is_depthstencil_format(internalformat) &&
!_mesa_is_astc_format(internalformat) &&
!_mesa_is_stencil_format(internalformat));
}
/** /**
* Implements glGenerateMipmap and glGenerateTextureMipmap. * Implements glGenerateMipmap and glGenerateTextureMipmap.
* Generates all the mipmap levels below the base level. * Generates all the mipmap levels below the base level.
@@ -117,10 +127,8 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx,
return; return;
} }
if (_mesa_is_enum_format_integer(srcImage->InternalFormat) || if (!_mesa_is_valid_generate_texture_mipmap_internalformat(ctx,
_mesa_is_depthstencil_format(srcImage->InternalFormat) || srcImage->InternalFormat)) {
_mesa_is_astc_format(srcImage->InternalFormat) ||
_mesa_is_stencil_format(srcImage->InternalFormat)) {
_mesa_unlock_texture(ctx, texObj); _mesa_unlock_texture(ctx, texObj);
_mesa_error(ctx, GL_INVALID_OPERATION, _mesa_error(ctx, GL_INVALID_OPERATION,
"glGenerate%sMipmap(invalid internal format)", suffix); "glGenerate%sMipmap(invalid internal format)", suffix);

View File

@@ -35,6 +35,9 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx,
bool bool
_mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx, _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx,
GLenum target); GLenum target);
bool
_mesa_is_valid_generate_texture_mipmap_internalformat(struct gl_context *ctx,
GLenum internalformat);
extern void GLAPIENTRY extern void GLAPIENTRY
_mesa_GenerateMipmap(GLenum target); _mesa_GenerateMipmap(GLenum target);