Browse Source

GL: recognizing {EXT,ANGLE}_texture_compression_dxt{1,3,5} extensions.

This makes it possible to test S3TC code paths on SwiftShader as well.
pull/370/head
Vladimír Vondruš 7 years ago
parent
commit
87a446c7ba
  1. 6
      doc/changelog.dox
  2. 5
      doc/opengl-support.dox
  3. 5
      src/Magnum/GL/Context.cpp
  4. 31
      src/Magnum/GL/Extensions.h
  5. 12
      src/Magnum/GL/PixelFormat.h
  6. 20
      src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp
  7. 35
      src/Magnum/GL/Test/CubeMapTextureGLTest.cpp
  8. 28
      src/Magnum/GL/Test/TextureArrayGLTest.cpp
  9. 28
      src/Magnum/GL/Test/TextureGLTest.cpp
  10. 12
      src/Magnum/GL/TextureFormat.h
  11. 1
      src/MagnumExternal/OpenGL/GL/extensions.txt
  12. 4
      src/MagnumExternal/OpenGL/GLES2/extensions.txt
  13. 4
      src/MagnumExternal/OpenGL/GLES3/extensions.txt

6
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} /

5
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

5
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),

31
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

12
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,

20
src/Magnum/GL/Test/CubeMapTextureArrayGLTest.cpp

@ -683,8 +683,13 @@ void CubeMapTextureArrayGLTest::compressedImage() {
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_cube_map_array>())
CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::ARB::compressed_texture_pixel_storage>())
@ -723,8 +728,13 @@ void CubeMapTextureArrayGLTest::compressedImageBuffer() {
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_cube_map_array>())
CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::ARB::compressed_texture_pixel_storage>())
@ -1052,8 +1062,13 @@ void CubeMapTextureArrayGLTest::compressedSubImage() {
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_cube_map_array>())
CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::ARB::compressed_texture_pixel_storage>())
@ -1100,8 +1115,13 @@ void CubeMapTextureArrayGLTest::compressedSubImageBuffer() {
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_cube_map_array>())
CORRADE_SKIP(Extensions::EXT::texture_cube_map_array::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::ARB::compressed_texture_pixel_storage>())

35
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_storage>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES

28
src/Magnum/GL/Test/TextureArrayGLTest.cpp

@ -1382,12 +1382,15 @@ void TextureArrayGLTest::compressedImage2D() {
if(!Context::current().isExtensionSupported<Extensions::EXT::texture_array>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_array>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_array>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_array>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES

28
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
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<Extensions::EXT::texture_compression_s3tc>())
CORRADE_SKIP(Extensions::EXT::texture_compression_s3tc::string() + std::string(" is not supported."));
#else
#elif defined(MAGNUM_TARGET_WEBGL)
if(!Context::current().isExtensionSupported<Extensions::WEBGL::compressed_texture_s3tc>())
CORRADE_SKIP(Extensions::WEBGL::compressed_texture_s3tc::string() + std::string(" is not supported."));
#else
if(!Context::current().isExtensionSupported<Extensions::ANGLE::texture_compression_dxt3>())
CORRADE_SKIP(Extensions::ANGLE::texture_compression_dxt3::string() + std::string(" is not supported."));
#endif
#ifndef MAGNUM_TARGET_GLES

12
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,

1
src/MagnumExternal/OpenGL/GL/extensions.txt vendored

@ -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

4
src/MagnumExternal/OpenGL/GLES2/extensions.txt vendored

@ -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

4
src/MagnumExternal/OpenGL/GLES3/extensions.txt vendored

@ -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

Loading…
Cancel
Save