From 079d99b830073f55a22954f6bb2b56cfb731e5e3 Mon Sep 17 00:00:00 2001 From: Antia Puentes Date: Thu, 26 Nov 2015 15:20:24 +0100 Subject: [PATCH] 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 --- src/mesa/main/genmipmap.c | 16 ++++++++++++---- src/mesa/main/genmipmap.h | 3 +++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/genmipmap.c b/src/mesa/main/genmipmap.c index efbb1cf..f9ef2d1 100644 --- a/src/mesa/main/genmipmap.c +++ b/src/mesa/main/genmipmap.c @@ -75,6 +75,16 @@ _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx, 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. * Generates all the mipmap levels below the base level. @@ -117,10 +127,8 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx, return; } - if (_mesa_is_enum_format_integer(srcImage->InternalFormat) || - _mesa_is_depthstencil_format(srcImage->InternalFormat) || - _mesa_is_astc_format(srcImage->InternalFormat) || - _mesa_is_stencil_format(srcImage->InternalFormat)) { + if (!_mesa_is_valid_generate_texture_mipmap_internalformat(ctx, + srcImage->InternalFormat)) { _mesa_unlock_texture(ctx, texObj); _mesa_error(ctx, GL_INVALID_OPERATION, "glGenerate%sMipmap(invalid internal format)", suffix); diff --git a/src/mesa/main/genmipmap.h b/src/mesa/main/genmipmap.h index 843eeac..40b7f36 100644 --- a/src/mesa/main/genmipmap.h +++ b/src/mesa/main/genmipmap.h @@ -35,6 +35,9 @@ _mesa_generate_texture_mipmap(struct gl_context *ctx, bool _mesa_is_valid_generate_texture_mipmap_target(struct gl_context *ctx, GLenum target); +bool +_mesa_is_valid_generate_texture_mipmap_internalformat(struct gl_context *ctx, + GLenum internalformat); extern void GLAPIENTRY _mesa_GenerateMipmap(GLenum target); -- 2.7.4