From 15f9ec3adf1d013b9537f15f0fc913909ad42f44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 25 Aug 2019 18:34:40 +0200 Subject: [PATCH] Added {EXT_texture_compression,WEBGL_compressed_texture}_s3tc_srgb extensions. And silently the definitions from EXT_texture_sRGB (core since GL 2.1) as that's where definitions for sRGB S3TC formats are hiding on desktop. --- doc/opengl-support.dox | 2 ++ src/Magnum/GL/Context.cpp | 4 +++- src/Magnum/GL/Extensions.h | 2 ++ src/MagnumExternal/OpenGL/GL/extensions.txt | 3 +++ src/MagnumExternal/OpenGL/GL/flextGL.h | 19 +++++++++++++++++++ .../OpenGL/GLES2/Emscripten/extensions.txt | 1 + .../OpenGL/GLES2/extensions.txt | 1 + src/MagnumExternal/OpenGL/GLES2/flextGL.h | 7 +++++++ .../OpenGL/GLES2/flextGLEmscripten.h | 7 +++++++ .../OpenGL/GLES2/flextGLWindowsDesktop.h | 7 +++++++ .../OpenGL/GLES3/Emscripten/extensions.txt | 1 + .../OpenGL/GLES3/extensions.txt | 1 + src/MagnumExternal/OpenGL/GLES3/flextGL.h | 7 +++++++ .../OpenGL/GLES3/flextGLEmscripten.h | 7 +++++++ .../OpenGL/GLES3/flextGLWindowsDesktop.h | 7 +++++++ 15 files changed, 75 insertions(+), 1 deletion(-) diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 7929c6a08..395ae2646 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -454,6 +454,7 @@ Extension | Status @gl_extension{EXT,sRGB_write_control} | done @gl_extension{EXT,texture_compression_s3tc} | done @gl_extension{EXT,shader_integer_mix} | done (shading language only) +@gl_extension{EXT,texture_compression_s3tc_srgb} | | @gl_extension2{KHR,texture_compression_astc_hdr,KHR_texture_compression_astc_hdr} | done @gl_extension2{KHR,blend_equation_advanced_coherent,KHR_blend_equation_advanced} | done @gl_extension{KHR,context_flush_control} | | @@ -523,6 +524,7 @@ Extension | Status @webgl_extension{EXT,color_buffer_float} | | @webgl_extension{OES,texture_float_linear} | done @webgl_extension{WEBGL,compressed_texture_s3tc} | done +@webgl_extension{WEBGL,compressed_texture_s3tc_srgb} | @section opengl-unsupported Unsupported OpenGL features diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp index ad0eef273..31c64f955 100644 --- a/src/Magnum/GL/Context.cpp +++ b/src/Magnum/GL/Context.cpp @@ -249,7 +249,8 @@ constexpr Extension ExtensionList[]{ _extension(EXT,color_buffer_float), #endif _extension(OES,texture_float_linear), - _extension(WEBGL,compressed_texture_s3tc)}; + _extension(WEBGL,compressed_texture_s3tc), + _extension(WEBGL,compressed_texture_s3tc_srgb)}; constexpr Extension ExtensionListES300[]{ #ifdef MAGNUM_TARGET_GLES2 _extension(ANGLE,instanced_arrays), @@ -298,6 +299,7 @@ constexpr Extension ExtensionList[]{ _extension(EXT,shader_integer_mix), #endif _extension(EXT,polygon_offset_clamp), + _extension(EXT,texture_compression_s3tc_srgb), _extension(KHR,texture_compression_astc_hdr), _extension(KHR,blend_equation_advanced_coherent), _extension(KHR,context_flush_control), diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h index 22fd1ad2b..40f64ca87 100644 --- a/src/Magnum/GL/Extensions.h +++ b/src/Magnum/GL/Extensions.h @@ -301,6 +301,7 @@ namespace ANGLE { _extension(19,WEBGL,color_buffer_float, GLES200, None) // #14 _extension(20,WEBGL,draw_buffers, GLES200, GLES300) // #18 #endif + _extension(21,WEBGL,compressed_texture_s3tc_srgb, GLES200, None) // #32 } namespace MAGNUM { _extension(30,MAGNUM,shader_vertex_id, GLES300, GLES300) } @@ -397,6 +398,7 @@ namespace ANDROID { _extension( 60,EXT,primitive_bounding_box, GLES310, GLES320) // #186 #endif _extension( 61,EXT,polygon_offset_clamp, GLES200, None) // #252 + _extension( 62,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289 } namespace KHR { _extension( 70,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117 _extension( 71,KHR,texture_compression_astc_hdr,GLES200, None) // #117 diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt index c3475c5cd..66f86799a 100644 --- a/src/MagnumExternal/OpenGL/GL/extensions.txt +++ b/src/MagnumExternal/OpenGL/GL/extensions.txt @@ -4,6 +4,9 @@ version 4.6 core +# Need this only for sRGB S3TC definitions, everything else is core since 2.1 +extension EXT_texture_sRGB optional + extension AMD_transform_feedback3_lines_triangles optional extension AMD_vertex_shader_layer optional extension AMD_shader_trinary_minmax optional diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h index 7d36f26e3..7f03d8752 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h @@ -1596,6 +1596,25 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum #define GL_TRANSFORM_FEEDBACK_OVERFLOW 0x82EC #define GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW 0x82ED +/* GL_EXT_texture_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB8_EXT 0x8C41 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_SLUMINANCE_ALPHA_EXT 0x8C44 +#define GL_SLUMINANCE8_ALPHA8_EXT 0x8C45 +#define GL_SLUMINANCE_EXT 0x8C46 +#define GL_SLUMINANCE8_EXT 0x8C47 +#define GL_COMPRESSED_SRGB_EXT 0x8C48 +#define GL_COMPRESSED_SRGB_ALPHA_EXT 0x8C49 +#define GL_COMPRESSED_SLUMINANCE_EXT 0x8C4A +#define GL_COMPRESSED_SLUMINANCE_ALPHA_EXT 0x8C4B +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* GL_ARB_robustness */ #define GL_NO_ERROR 0 diff --git a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt index cf3ab9d53..7299f679b 100644 --- a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt @@ -25,3 +25,4 @@ extension EXT_disjoint_timer_query optional # These are used as a base for WEBGL_* extensions extension EXT_color_buffer_float optional extension EXT_texture_compression_s3tc optional +extension EXT_texture_compression_s3tc_srgb optional diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index 3fe643bb7..0284bd590 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -80,6 +80,7 @@ extension EXT_disjoint_timer_query optional extension EXT_texture_sRGB_decode optional extension EXT_sRGB_write_control optional extension EXT_texture_compression_s3tc optional +extension EXT_texture_compression_s3tc_srgb optional extension KHR_texture_compression_astc_hdr optional extension KHR_blend_equation_advanced_coherent optional extension KHR_context_flush_control optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index e4f36bada..8cb79f1ba 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -987,6 +987,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* GL_KHR_texture_compression_astc_hdr */ #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h index 6e42e6d2a..fa7dea997 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h @@ -499,6 +499,13 @@ typedef khronos_uint64_t GLuint64; #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* Function prototypes */ /* GL_ANGLE_instanced_arrays */ diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h index 0dcb0a915..3e1495917 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h @@ -982,6 +982,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* GL_KHR_texture_compression_astc_hdr */ #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 diff --git a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt index ab135f289..89fb75cde 100644 --- a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt @@ -8,3 +8,4 @@ extension EXT_disjoint_timer_query optional extension EXT_color_buffer_float optional # These are used as a base for WEBGL_* extensions extension EXT_texture_compression_s3tc optional +extension EXT_texture_compression_s3tc_srgb optional diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 496950ebf..012a305e0 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -45,6 +45,7 @@ extension EXT_disjoint_timer_query optional extension EXT_texture_sRGB_decode optional extension EXT_sRGB_write_control optional extension EXT_texture_compression_s3tc optional +extension EXT_texture_compression_s3tc_srgb optional extension EXT_shader_integer_mix optional extension KHR_texture_compression_astc_hdr optional extension KHR_blend_equation_advanced_coherent optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index 49e585fad..4a9a5fff1 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -1526,6 +1526,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* GL_KHR_texture_compression_astc_hdr */ #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h index a1b157382..c051aae43 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h @@ -738,6 +738,13 @@ typedef struct __GLsync *GLsync; #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* Function prototypes */ /* GL_ES_VERSION_2_0 */ diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h index bf508e14c..01f64ec99 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h @@ -1518,6 +1518,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +/* GL_EXT_texture_compression_s3tc_srgb */ + +#define GL_COMPRESSED_SRGB_S3TC_DXT1_EXT 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F + /* GL_KHR_texture_compression_astc_hdr */ #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0