diff options
Diffstat (limited to 'src/mesa/main')
-rw-r--r-- | src/mesa/main/genmipmap.c | 16 | ||||
-rw-r--r-- | 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 efbb1cfea19..f9ef2d14664 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 843eeace30a..40b7f3636aa 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); |