diff --git a/doc/changelog.dox b/doc/changelog.dox index d587ed5fe..cd5ac140d 100644 --- a/doc/changelog.dox +++ b/doc/changelog.dox @@ -89,6 +89,12 @@ See also: - sRGB S3TC formats as defined by the @gl_extension{EXT,texture_sRGB} desktop, @gl_extension{EXT,texture_compression_s3tc_srgb} ES and @webgl_extension{WEBGL,compressed_texture_s3tc_srgb} WebGL extension + - Recognizing @gl_extension{EXT,texture_compression_dxt1} desktop and ES + extension and the @gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} / + @gl_extension2{ANGLE,texture_compression_dxt3,ANGLE_texture_compression_dxt} / + @gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} + family of extensions in order to enable S3TC formats on a wider range + of OpenGL ES devices - @gl_extension{EXT,texture_compression_rgtc} / @gl_extension{EXT,texture_compression_bptc} OpenGL ES and @webgl_extension{EXT,texture_compression_rgtc} / diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 766be739a..c7f5acffd 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -313,6 +313,7 @@ Extension | Status @gl_extension{EXT,texture_filter_anisotropic} | done @gl_extension{EXT,texture_compression_s3tc} | done @gl_extension{EXT,texture_mirror_clamp} | only GL 4.4 subset +@gl_extension{EXT,texture_compression_dxt1} | done @gl_extension{EXT,texture_sRGB_decode} | done @gl_extension{EXT,shader_integer_mix} | done (shading language only) @gl_extension{EXT,debug_label} | missing pipeline and sampler label @@ -436,10 +437,14 @@ Extension | Status Extension | Status ------------------------------------------- | ------ @gl_extension{ANDROID,extension_pack_es31a} | done (nothing to do) +@gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} | done +@gl_extension2{ANGLE,texture_compression_dxt3,ANGLE_texture_compression_dxt} | done +@gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} | done @gl_extension{APPLE,texture_format_BGRA8888} | done @gl_extension{ARM,shader_framebuffer_fetch} | missing renderer setup and limit query @gl_extension{ARM,shader_framebuffer_fetch_depth_stencil} | done (shading language only) @gl_extension{EXT,texture_filter_anisotropic} | done +@gl_extension{EXT,texture_compression_dxt1} | done @gl_extension{EXT,texture_format_BGRA8888} | done @gl_extension{EXT,read_format_bgra} | done @gl_extension{EXT,multi_draw_arrays} | done diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index d0e7536a0..1e69138b4 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -90,6 +90,7 @@ constexpr Extension ExtensionList[]{ _extension(EXT,texture_filter_anisotropic), _extension(EXT,texture_compression_s3tc), _extension(EXT,texture_mirror_clamp), + _extension(EXT,texture_compression_dxt1), _extension(EXT,texture_sRGB_decode), _extension(EXT,shader_integer_mix), _extension(EXT,debug_label), @@ -284,10 +285,14 @@ constexpr Extension ExtensionList[]{ #ifndef MAGNUM_TARGET_GLES2 _extension(ANDROID,extension_pack_es31a), #endif + _extension(ANGLE,texture_compression_dxt1), + _extension(ANGLE,texture_compression_dxt3), + _extension(ANGLE,texture_compression_dxt5), _extension(APPLE,texture_format_BGRA8888), _extension(ARM,shader_framebuffer_fetch), _extension(ARM,shader_framebuffer_fetch_depth_stencil), _extension(EXT,texture_filter_anisotropic), + _extension(EXT,texture_compression_dxt1), _extension(EXT,texture_format_BGRA8888), _extension(EXT,read_format_bgra), _extension(EXT,multi_draw_arrays), diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h index 9ff8db701..d7ee2ff02 100644 --- a/src/Magnum/GL/Extensions.h +++ b/src/Magnum/GL/Extensions.h @@ -219,11 +219,12 @@ namespace AMD { } namespace ATI { _extension(133,ATI,texture_mirror_once, GL210, None) // #221 } namespace EXT { - _extension(140,EXT,texture_filter_anisotropic, GL210, None) // #187 - _extension(141,EXT,texture_compression_s3tc, GL210, None) // #198 + _extension(139,EXT,texture_filter_anisotropic, GL210, None) // #187 + _extension(140,EXT,texture_compression_s3tc, GL210, None) // #198 /* EXT_framebuffer_object, EXT_packed_depth_stencil, EXT_framebuffer_blit, EXT_framebuffer_multisample replaced with ARB_framebuffer_object */ - _extension(142,EXT,texture_mirror_clamp, GL210, None) // #298 + _extension(141,EXT,texture_mirror_clamp, GL210, None) // #298 + _extension(142,EXT,texture_compression_dxt1, GL210, None) // #309 _extension(143,EXT,gpu_shader4, GL210, GL300) // #326 _extension(144,EXT,packed_float, GL210, GL300) // #328 _extension(145,EXT,texture_array, GL210, GL300) // #329 @@ -323,27 +324,33 @@ namespace ANDROID { _extension( 2,ANGLE,framebuffer_blit, GLES200, GLES300) // #83 _extension( 3,ANGLE,framebuffer_multisample, GLES200, GLES300) // #84 _extension( 4,ANGLE,instanced_arrays, GLES200, GLES300) // #109 - _extension( 5,ANGLE,depth_texture, GLES200, GLES300) // #138 + #endif + _extension( 5,ANGLE,texture_compression_dxt1, GLES200, None) // #111 + _extension( 6,ANGLE,texture_compression_dxt3, GLES200, None) // #111 + _extension( 7,ANGLE,texture_compression_dxt5, GLES200, None) // #111 + #ifdef MAGNUM_TARGET_GLES2 + _extension( 8,ANGLE,depth_texture, GLES200, GLES300) // #138 #endif } namespace APPLE { #ifdef MAGNUM_TARGET_GLES2 - _extension( 6,APPLE,framebuffer_multisample, GLES200, GLES300) // #78 + _extension( 9,APPLE,framebuffer_multisample, GLES200, GLES300) // #78 #endif - _extension( 7,APPLE,texture_format_BGRA8888, GLES200, None) // #79 + _extension( 10,APPLE,texture_format_BGRA8888, GLES200, None) // #79 #ifdef MAGNUM_TARGET_GLES2 - _extension( 8,APPLE,texture_max_level, GLES200, GLES300) // #80 + _extension( 11,APPLE,texture_max_level, GLES200, GLES300) // #80 #endif } namespace ARM { #ifdef MAGNUM_TARGET_GLES2 - _extension( 9,ARM,rgba8, GLES200, GLES300) // #82 + _extension( 12,ARM,rgba8, GLES200, GLES300) // #82 #endif - _extension( 10,ARM,shader_framebuffer_fetch, GLES200, None) // #165 - _extension( 11,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166 + _extension( 13,ARM,shader_framebuffer_fetch, GLES200, None) // #165 + _extension( 14,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166 } namespace EXT { - _extension( 20,EXT,texture_filter_anisotropic, GLES200, None) // #41 + _extension( 19,EXT,texture_filter_anisotropic, GLES200, None) // #41 #ifdef MAGNUM_TARGET_GLES2 - _extension( 21,EXT,texture_type_2_10_10_10_REV, GLES200, GLES300) // #42 + _extension( 20,EXT,texture_type_2_10_10_10_REV, GLES200, GLES300) // #42 #endif + _extension( 21,EXT,texture_compression_dxt1, GLES200, None) // #49 _extension( 22,EXT,texture_format_BGRA8888, GLES200, None) // #51 #ifdef MAGNUM_TARGET_GLES2 _extension( 23,EXT,discard_framebuffer, GLES200, GLES300) // #64 diff --git a/src/Magnum/GL/PixelFormat.h b/src/Magnum/GL/PixelFormat.h index 9bfcb89dc..9117b1a1a 100644 --- a/src/Magnum/GL/PixelFormat.h +++ b/src/Magnum/GL/PixelFormat.h @@ -952,7 +952,10 @@ enum class CompressedPixelFormat: GLenum { * S3TC DXT1 compressed RGB. **Available only for 2D, 2D array, cube map * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} - * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension{EXT,texture_compression_dxt1} + * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc}, + * @gl_extension{EXT,texture_compression_dxt1} or + * @gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ RGBS3tcDxt1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT, @@ -970,7 +973,10 @@ enum class CompressedPixelFormat: GLenum { * S3TC DXT1 compressed RGBA. **Available only for 2D, 2D array, cube map * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} - * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension{EXT,texture_compression_dxt1} + * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc}, + * @gl_extension{EXT,texture_compression_dxt1} or + * @gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ RGBAS3tcDxt1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, @@ -989,6 +995,7 @@ enum class CompressedPixelFormat: GLenum { * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension2{ANGLE,texture_compression_dxt3,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ RGBAS3tcDxt3 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, @@ -1007,6 +1014,7 @@ enum class CompressedPixelFormat: GLenum { * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ RGBAS3tcDxt5 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, diff --git a/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp b/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp index 46536324d..5b78bea9e 100644 --- a/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp +++ b/src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp @@ -683,8 +683,13 @@ void CubeMapTextureArrayGLTest::compressedImage() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported.")); #endif + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); + #endif #ifndef MAGNUM_TARGET_GLES if(CompressedPixelStorageData[testCaseInstanceId()].storage != CompressedPixelStorage{} && !Context::current().isExtensionSupported()) @@ -723,8 +728,13 @@ void CubeMapTextureArrayGLTest::compressedImageBuffer() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported.")); #endif + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); + #endif #ifndef MAGNUM_TARGET_GLES if(CompressedPixelStorageData[testCaseInstanceId()].storage != CompressedPixelStorage{} && !Context::current().isExtensionSupported()) @@ -1052,8 +1062,13 @@ void CubeMapTextureArrayGLTest::compressedSubImage() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported.")); #endif + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); + #endif #ifndef MAGNUM_TARGET_GLES if(CompressedPixelStorageData[testCaseInstanceId()].storage != CompressedPixelStorage{} && !Context::current().isExtensionSupported()) @@ -1100,8 +1115,13 @@ void CubeMapTextureArrayGLTest::compressedSubImageBuffer() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported.")); #endif + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); + #endif #ifndef MAGNUM_TARGET_GLES if(CompressedPixelStorageData[testCaseInstanceId()].storage != CompressedPixelStorage{} && !Context::current().isExtensionSupported()) diff --git a/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp b/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp index 00225eff1..05cd821d7 100644 --- a/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp +++ b/src/Magnum/GL/Test/CubeMapTextureGLTest.cpp @@ -1109,12 +1109,15 @@ void CubeMapTextureGLTest::subImageQueryBuffer() { void CubeMapTextureGLTest::compressedImage() { setTestCaseDescription(CompressedPixelStorageData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1155,12 +1158,15 @@ void CubeMapTextureGLTest::compressedImage() { void CubeMapTextureGLTest::compressedImageBuffer() { setTestCaseDescription(CompressedPixelStorageData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1317,12 +1323,15 @@ void CubeMapTextureGLTest::immutableCompressedImage() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_storage::string() + std::string(" is not supported.")); #endif - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1400,12 +1409,15 @@ constexpr UnsignedByte CompressedSubDataComplete[]{ void CubeMapTextureGLTest::compressedSubImage() { setTestCaseDescription(CompressedPixelStorageData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1457,12 +1469,15 @@ void CubeMapTextureGLTest::compressedSubImage() { void CubeMapTextureGLTest::compressedSubImageBuffer() { setTestCaseDescription(CompressedPixelStorageData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/GL/Test/TextureArrayGLTest.cpp b/src/Magnum/GL/Test/TextureArrayGLTest.cpp index 927a091dd..7d1566ee6 100644 --- a/src/Magnum/GL/Test/TextureArrayGLTest.cpp +++ b/src/Magnum/GL/Test/TextureArrayGLTest.cpp @@ -1382,12 +1382,15 @@ void TextureArrayGLTest::compressedImage2D() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_array::string() + std::string(" is not supported.")); #endif - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1424,12 +1427,15 @@ void TextureArrayGLTest::compressedImage2DBuffer() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_array::string() + std::string(" is not supported.")); #endif - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1537,12 +1543,15 @@ void TextureArrayGLTest::compressedSubImage2D() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_array::string() + std::string(" is not supported.")); #endif - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1587,12 +1596,15 @@ void TextureArrayGLTest::compressedSubImage2DBuffer() { if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_array::string() + std::string(" is not supported.")); #endif - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/GL/Test/TextureGLTest.cpp b/src/Magnum/GL/Test/TextureGLTest.cpp index 7f3d92251..d1b21008d 100644 --- a/src/Magnum/GL/Test/TextureGLTest.cpp +++ b/src/Magnum/GL/Test/TextureGLTest.cpp @@ -1799,12 +1799,15 @@ void TextureGLTest::subImage2DQueryBuffer() { void TextureGLTest::compressedImage2D() { setTestCaseDescription(CompressedPixelStorage2DData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1839,12 +1842,15 @@ void TextureGLTest::compressedImage2D() { void TextureGLTest::compressedImage2DBuffer() { setTestCaseDescription(CompressedPixelStorage2DData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1927,12 +1933,15 @@ constexpr UnsignedByte CompressedSubData2DComplete[]{ void TextureGLTest::compressedSubImage2D() { setTestCaseDescription(CompressedPixelStorage2DData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES @@ -1968,12 +1977,15 @@ void TextureGLTest::compressedSubImage2D() { void TextureGLTest::compressedSubImage2DBuffer() { setTestCaseDescription(CompressedPixelStorage2DData[testCaseInstanceId()].name); - #ifndef MAGNUM_TARGET_WEBGL + #ifndef MAGNUM_TARGET_GLES if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported.")); - #else + #elif defined(MAGNUM_TARGET_WEBGL) if(!Context::current().isExtensionSupported()) CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported.")); + #else + if(!Context::current().isExtensionSupported()) + CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported.")); #endif #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/GL/TextureFormat.h b/src/Magnum/GL/TextureFormat.h index a50f6aaad..76e042cfc 100644 --- a/src/Magnum/GL/TextureFormat.h +++ b/src/Magnum/GL/TextureFormat.h @@ -1254,7 +1254,10 @@ enum class TextureFormat: GLenum { * S3TC DXT1 compressed RGB. **Available only on 2D, 2D array, cube map and * cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} - * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension{EXT,texture_compression_dxt1} + * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc}, + * @gl_extension{EXT,texture_compression_dxt1} or + * @gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ CompressedRGBS3tcDxt1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT, @@ -1272,7 +1275,10 @@ enum class TextureFormat: GLenum { * S3TC DXT1 compressed RGBA. **Available only on 2D, 2D array, cube map * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} - * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension{EXT,texture_compression_dxt1} + * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc}, + * @gl_extension{EXT,texture_compression_dxt1} or + * @gl_extension2{ANGLE,texture_compression_dxt1,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ CompressedRGBAS3tcDxt1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, @@ -1291,6 +1297,7 @@ enum class TextureFormat: GLenum { * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension2{ANGLE,texture_compression_dxt3,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ CompressedRGBAS3tcDxt3 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, @@ -1309,6 +1316,7 @@ enum class TextureFormat: GLenum { * and cube map array textures.** * @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc} * @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc} + * or @gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} * @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc} */ CompressedRGBAS3tcDxt5 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt index 2e80edec7..92e1b80ec 100644 --- a/src/MagnumExternal/OpenGL/GL/extensions.txt +++ b/src/MagnumExternal/OpenGL/GL/extensions.txt @@ -25,6 +25,7 @@ extension ATI_texture_mirror_once optional # extension EXT_texture_filter_anisotropic optional extension EXT_texture_compression_s3tc optional extension EXT_texture_mirror_clamp optional +# extension EXT_texture_compression_dxt1 optional extension EXT_texture_sRGB_decode optional extension EXT_shader_integer_mix optional extension EXT_debug_label optional diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index 8c0f060f0..e9eeb2637 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -64,10 +64,14 @@ extension KHR_robustness optional extension KHR_robust_buffer_access_behavior optional extension OES_texture_stencil8 optional +# extension ANGLE_texture_compression_dxt1 optional +# extension ANGLE_texture_compression_dxt3 optional +# extension ANGLE_texture_compression_dxt5 optional extension APPLE_texture_format_BGRA8888 optional extension ARM_shader_framebuffer_fetch optional extension ARM_shader_framebuffer_fetch_depth_stencil optional extension EXT_texture_filter_anisotropic optional +# extension EXT_texture_compression_dxt1 optional extension EXT_texture_format_BGRA8888 optional extension EXT_read_format_bgra optional extension EXT_multi_draw_arrays optional diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index f36a85d95..89d135b4b 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -30,10 +30,14 @@ extension OES_texture_stencil8 optional extension OES_texture_storage_multisample_2d_array optional extension ANDROID_extension_pack_es31a optional +# extension ANGLE_texture_compression_dxt1 optional +# extension ANGLE_texture_compression_dxt3 optional +# extension ANGLE_texture_compression_dxt5 optional extension APPLE_texture_format_BGRA8888 optional extension ARM_shader_framebuffer_fetch optional extension ARM_shader_framebuffer_fetch_depth_stencil optional extension EXT_texture_filter_anisotropic optional +# extension EXT_texture_compression_dxt1 optional extension EXT_texture_format_BGRA8888 optional extension EXT_read_format_bgra optional extension EXT_multi_draw_arrays optional