diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 24ce7b04f6b..90f525c20a9 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -906,6 +906,29 @@ _mesa_is_astc_format(GLenum internalFormat) is_astc_3d_format(internalFormat); } +/** + * Test if the given format is an ETC2 format. + */ +GLboolean +_mesa_is_etc2_format(GLenum internalFormat) +{ + switch (internalFormat) { + case GL_COMPRESSED_RGB8_ETC2: + case GL_COMPRESSED_SRGB8_ETC2: + case GL_COMPRESSED_RGBA8_ETC2_EAC: + case GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC: + case GL_COMPRESSED_R11_EAC: + case GL_COMPRESSED_RG11_EAC: + case GL_COMPRESSED_SIGNED_R11_EAC: + case GL_COMPRESSED_SIGNED_RG11_EAC: + case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2: + case GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: + return true; + default: + return false; + } +} + /** * Test if the given format is an integer (non-normalized) format. */ diff --git a/src/mesa/main/glformats.h b/src/mesa/main/glformats.h index c73f464e5f9..474ede20c40 100644 --- a/src/mesa/main/glformats.h +++ b/src/mesa/main/glformats.h @@ -60,6 +60,9 @@ _mesa_bytes_per_vertex_attrib(GLint comps, GLenum type); extern GLboolean _mesa_is_astc_format(GLenum internalFormat); +extern GLboolean +_mesa_is_etc2_format(GLenum internalFormat); + extern GLboolean _mesa_is_type_unsigned(GLenum type); diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 58b7f2740cd..aae46d05944 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -1300,6 +1300,7 @@ bool _mesa_format_no_online_compression(const struct gl_context *ctx, GLenum format) { return _mesa_is_astc_format(format) || + _mesa_is_etc2_format(format) || compressedteximage_only_format(ctx, format); }