diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 0b7112fa0..d8b11b63a 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -302,6 +302,7 @@ Extension | Status @es_extension{EXT,occlusion_query_boolean} | done @es_extension{EXT,shadow_samplers} | done @es_extension{EXT,texture_rg} | done +@es_extension{EXT,sRGB} | done @es_extension{EXT,texture_storage} | done @es_extension{EXT,map_buffer_range} | done @es_extension{EXT,draw_buffers} | done @@ -350,7 +351,6 @@ Extension | Status @es_extension{EXT,debug_label} | see above @es_extension{EXT,debug_marker} | done @es_extension{EXT,separate_shader_objects} | only direct uniform binding -@es_extension{EXT,sRGB} | done @es_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage @es_extension{EXT,robustness} | done @es_extension{EXT,disjoint_timer_query} | only time elapsed query diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index fdb78e83a..ef51ea943 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -552,7 +552,9 @@ ColorFormat AbstractTexture::imageFormatForInternalFormat(const TextureFormat in case TextureFormat::R11FG11FB10F: case TextureFormat::RGB9E5: #endif + #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) case TextureFormat::SRGB: + #endif #ifndef MAGNUM_TARGET_GLES2 case TextureFormat::SRGB8: #endif @@ -599,7 +601,9 @@ ColorFormat AbstractTexture::imageFormatForInternalFormat(const TextureFormat in #ifndef MAGNUM_TARGET_GLES case TextureFormat::RGBA12: #endif + #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) case TextureFormat::SRGBAlpha: + #endif #ifndef MAGNUM_TARGET_GLES2 case TextureFormat::SRGB8Alpha8: #endif @@ -683,8 +687,10 @@ ColorType AbstractTexture::imageTypeForInternalFormat(const TextureFormat intern case TextureFormat::Luminance: case TextureFormat::LuminanceAlpha: #endif + #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) case TextureFormat::SRGB: case TextureFormat::SRGBAlpha: + #endif #ifndef MAGNUM_TARGET_GLES2 case TextureFormat::SRGB8: case TextureFormat::SRGB8Alpha8: diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index a856c8587..6247d5be2 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -253,7 +253,6 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,disjoint_timer_query), _extension(GL,EXT,texture_sRGB_decode), _extension(GL,EXT,separate_shader_objects), - _extension(GL,EXT,sRGB), _extension(GL,EXT,multisampled_render_to_texture), _extension(GL,EXT,robustness), _extension(GL,KHR,texture_compression_astc_ldr), @@ -287,6 +286,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,occlusion_query_boolean), _extension(GL,EXT,shadow_samplers), _extension(GL,EXT,texture_rg), + _extension(GL,EXT,sRGB), _extension(GL,EXT,texture_storage), _extension(GL,EXT,map_buffer_range), _extension(GL,EXT,draw_buffers), diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index d555844d5..147fcbc4e 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -310,8 +310,8 @@ namespace GL { #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shadow_samplers, GLES200, GLES300) // #102 _extension(GL,EXT,texture_rg, GLES200, GLES300) // #103 + _extension(GL,EXT,sRGB, GLES200, GLES300) // #105 #endif - _extension(GL,EXT,sRGB, GLES200, None) // #105 _extension(GL,EXT,multisampled_render_to_texture, GLES200, None) // #106 _extension(GL,EXT,robustness, GLES200, None) // #107 #ifdef MAGNUM_TARGET_GLES2 diff --git a/src/Magnum/TextureFormat.h b/src/Magnum/TextureFormat.h index 1e2c5b89d..0b847979d 100644 --- a/src/Magnum/TextureFormat.h +++ b/src/Magnum/TextureFormat.h @@ -694,21 +694,24 @@ enum class TextureFormat: GLenum { RGB9E5 = GL_RGB9_E5, #endif + #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) /** * sRGB, normalized unsigned, size implementation-dependent. Not allowed in * unemulated @ref Texture::setStorage() "*Texture::setStorage()" calls, in * that case use @ref TextureFormat::SRGB8 "TextureFormat::SRGB8" instead. - * @requires_es_extension Extension @es_extension{EXT,sRGB} - * @requires_webgl_extension Extension @webgl_extension{EXT,sRGB} + * @requires_es_extension Extension @es_extension{EXT,sRGB} in OpenGL ES 2.0. + * Use @ref TextureFormat::SRGB8 in OpenGL ES 3.0 instead. + * @requires_webgl_extension Extension @webgl_extension{EXT,sRGB} in WebGL + * 1.0. Use @ref TextureFormat::SRGB8 in WebGL 2.0 instead. * @deprecated_gl Prefer to use the exactly specified version of this * format, i.e. @ref TextureFormat::SRGB8. - * @todo is this allowed in core? */ #ifndef MAGNUM_TARGET_GLES SRGB = GL_SRGB, #else SRGB = GL_SRGB_EXT, #endif + #endif #ifndef MAGNUM_TARGET_GLES2 /** @@ -785,21 +788,24 @@ enum class TextureFormat: GLenum { RGBA12 = GL_RGBA12, #endif + #if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2) /** * sRGBA, normalized unsigned, size implementation-dependent. Not allowed in * unemulated @ref Texture::setStorage() "*Texture::setStorage()" calls, in * that case use @ref TextureFormat::SRGB8Alpha8 "TextureFormat::SRGB8Alpha8" instead. - * @requires_es_extension Extension @es_extension{EXT,sRGB} - * @requires_webgl_extension Extension @webgl_extension{EXT,sRGB} + * @requires_es_extension Extension @es_extension{EXT,sRGB} in OpenGL ES + * 2.0. Use @ref TextureFormat::SRGB8Alpha8 in OpenGL ES 3.0 instead. + * @requires_webgl_extension Extension @webgl_extension{EXT,sRGB} in WebGL + * 1.0. Use @ref TextureFormat::SRGB8Alpha8 in WebGL 2.0 instead. * @deprecated_gl Prefer to use the exactly specified version of this * format, i.e. @ref TextureFormat::SRGB8Alpha8. - * @todo is this allowed in core? */ #ifndef MAGNUM_TARGET_GLES SRGBAlpha = GL_SRGB_ALPHA, #else SRGBAlpha = GL_SRGB_ALPHA_EXT, #endif + #endif #ifndef MAGNUM_TARGET_GLES2 /** diff --git a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt index bebe2e14c..315891b14 100644 --- a/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt @@ -5,6 +5,7 @@ version 2.0 es extension ANGLE_instanced_arrays optional extension EXT_blend_minmax optional extension EXT_shader_texture_lod optional +extension EXT_sRGB optional extension OES_element_index_uint optional extension OES_texture_half_float_linear optional extension OES_texture_float_linear optional @@ -17,4 +18,3 @@ extension ANGLE_depth_texture optional extension EXT_draw_buffers optional extension EXT_texture_filter_anisotropic optional -extension EXT_sRGB optional diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index 29b418d03..cd2c669c0 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -16,6 +16,7 @@ extension EXT_shader_texture_lod optional extension EXT_occlusion_query_boolean optional extension EXT_shadow_samplers optional extension EXT_texture_rg optional +extension EXT_sRGB optional extension EXT_texture_storage optional extension EXT_map_buffer_range optional extension EXT_draw_buffers optional @@ -56,7 +57,6 @@ extension EXT_debug_marker optional extension EXT_disjoint_timer_query optional extension EXT_texture_sRGB_decode optional extension EXT_separate_shader_objects optional -extension EXT_sRGB optional extension EXT_multisampled_render_to_texture optional extension EXT_robustness optional extension KHR_debug optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index 2953dc805..45a205dad 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -468,6 +468,13 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_R8_EXT 0x8229 #define GL_RG8_EXT 0x822B +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + /* GL_EXT_texture_storage */ #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F @@ -762,13 +769,6 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_ACTIVE_PROGRAM_EXT 0x8259 #define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A -/* GL_EXT_sRGB */ - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 - /* GL_EXT_multisampled_render_to_texture */ #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C @@ -1116,6 +1116,9 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetQueryObjectuivEXT)(GLuint, GLenum, /* GL_EXT_texture_rg */ +/* GL_EXT_sRGB */ + + /* GL_EXT_texture_storage */ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexStorage1DEXT)(GLenum, GLsizei, GLenum, GLsizei); @@ -1407,9 +1410,6 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); #define glProgramUniformMatrix4x3fvEXT flextglProgramUniformMatrix4x3fvEXT -/* GL_EXT_sRGB */ - - /* GL_EXT_multisampled_render_to_texture */ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h index 1be76c68b..e96c50ca6 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h @@ -370,6 +370,13 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_FUNC_ADD_EXT 0x8006 #define GL_BLEND_EQUATION_EXT 0x8009 +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + /* GL_OES_element_index_uint */ #define GL_UNSIGNED_INT 0x1405 @@ -443,13 +450,6 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -/* GL_EXT_sRGB */ - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 - /* Function prototypes */ /* GL_ES_VERSION_2_0 */ @@ -610,6 +610,9 @@ GLAPI void glBlendEquationEXT(GLenum); /* GL_EXT_shader_texture_lod */ +/* GL_EXT_sRGB */ + + /* GL_OES_element_index_uint */ @@ -645,9 +648,6 @@ GLAPI void glDrawBuffersEXT(GLsizei, const GLenum *); /* GL_EXT_texture_filter_anisotropic */ -/* GL_EXT_sRGB */ - - #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h index 8bcba8b29..7bceb0ae1 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h @@ -443,6 +443,13 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_R8_EXT 0x8229 #define GL_RG8_EXT 0x822B +/* GL_EXT_sRGB */ + +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 + /* GL_EXT_texture_storage */ #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F @@ -737,13 +744,6 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_ACTIVE_PROGRAM_EXT 0x8259 #define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A -/* GL_EXT_sRGB */ - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 - /* GL_EXT_multisampled_render_to_texture */ #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C @@ -1263,6 +1263,11 @@ GL_APICALL void GL_APIENTRY GLES2GetQueryObjectuivEXT(GLuint, GLenum, GLuint *); #define GL_EXT_texture_rg 1 #endif +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + /* GL_EXT_texture_storage */ #ifndef GL_EXT_texture_storage #define GL_EXT_texture_storage 1 @@ -1632,11 +1637,6 @@ GL_APICALL void GL_APIENTRY GLES2ProgramUniformMatrix4x3fvEXT(GLuint, GLint, GLs #define glProgramUniformMatrix4x3fvEXT GLES2ProgramUniformMatrix4x3fvEXT #endif -/* GL_EXT_sRGB */ -#ifndef GL_EXT_sRGB -#define GL_EXT_sRGB 1 -#endif - /* GL_EXT_multisampled_render_to_texture */ #ifndef GL_EXT_multisampled_render_to_texture #define GL_EXT_multisampled_render_to_texture 1 diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp index d47d80113..65dd22e3e 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp @@ -52,6 +52,8 @@ void flextGLInit() { /* GL_EXT_texture_rg */ + /* GL_EXT_sRGB */ + /* GL_EXT_texture_storage */ flextglTexStorage1DEXT = reinterpret_cast(loader.load("glTexStorage1DEXT")); flextglTexStorage2DEXT = reinterpret_cast(loader.load("glTexStorage2DEXT")); @@ -217,8 +219,6 @@ void flextGLInit() { flextglProgramUniformMatrix3x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fvEXT")); flextglProgramUniformMatrix4x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fvEXT")); - /* GL_EXT_sRGB */ - /* GL_EXT_multisampled_render_to_texture */ flextglRenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); flextglFramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT")); diff --git a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt index a0e57d098..7d6ad2580 100644 --- a/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt @@ -3,4 +3,3 @@ version 3.0 es extension EXT_texture_filter_anisotropic optional -extension EXT_sRGB optional diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 5f4595a25..be21c509a 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -12,7 +12,6 @@ extension EXT_debug_marker optional extension EXT_disjoint_timer_query optional extension EXT_texture_sRGB_decode optional extension EXT_separate_shader_objects optional -extension EXT_sRGB optional extension EXT_multisampled_render_to_texture optional extension EXT_robustness optional extension KHR_debug optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index 738a58b6c..437812e84 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -953,13 +953,6 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_ACTIVE_PROGRAM_EXT 0x8259 #define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A -/* GL_EXT_sRGB */ - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 - /* GL_EXT_multisampled_render_to_texture */ #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C @@ -1639,9 +1632,6 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); #define glProgramUniformMatrix4x3fvEXT flextglProgramUniformMatrix4x3fvEXT -/* GL_EXT_sRGB */ - - /* GL_EXT_multisampled_render_to_texture */ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglRenderbufferStorageMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h index 8952bb66b..62e15f4f5 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h @@ -694,13 +694,6 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF -/* GL_EXT_sRGB */ - -#define GL_SRGB_EXT 0x8C40 -#define GL_SRGB_ALPHA_EXT 0x8C42 -#define GL_SRGB8_ALPHA8_EXT 0x8C43 -#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 - /* Function prototypes */ /* GL_ES_VERSION_2_0 */ @@ -958,9 +951,6 @@ GLAPI void glGetInternalformativ(GLenum, GLenum, GLenum, GLsizei, GLint *); /* GL_EXT_texture_filter_anisotropic */ -/* GL_EXT_sRGB */ - - #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp index eb13711c8..6e618bb1f 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -163,8 +163,6 @@ void flextGLInit() { flextglProgramUniformMatrix3x4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3x4fvEXT")); flextglProgramUniformMatrix4x3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4x3fvEXT")); - /* GL_EXT_sRGB */ - /* GL_EXT_multisampled_render_to_texture */ flextglRenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); flextglFramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT"));