diff --git a/doc/opengl-mapping.dox b/doc/opengl-mapping.dox index 30d01b244..a315f4e1a 100644 --- a/doc/opengl-mapping.dox +++ b/doc/opengl-mapping.dox @@ -68,6 +68,7 @@ OpenGL function | Matching API @fn_gl{BindTransformFeedback} | not needed, handled internally in @ref TransformFeedback @fn_gl{BindVertexArray} | not needed, handled internally in @ref Mesh @fn_gl{BindVertexBuffer}, \n `glVertexArrayVertexBuffer()`, \n @fn_gl_extension{VertexArrayBindVertexBuffer,EXT,direct_state_access} \n @fn_gl{BindVertexBuffers}, \n `glVertexArrayVertexBuffers()` | | +@fn_gl_extension{BlendBarrier,KHR,blend_equation_advanced} | | @fn_gl{BlendColor} | @ref Renderer::setBlendColor() @fn_gl{BlendEquation}, \n @fn_gl{BlendEquationSeparate} | @ref Renderer::setBlendEquation() @fn_gl{BlendFunc}, \n @fn_gl{BlendFuncSeparate} | @ref Renderer::setBlendFunction() diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index b5de2e4bf..6430aa245 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -248,6 +248,8 @@ Extension | Status @extension{ARB,pipeline_statistics_query} | | @extension{ARB,sparse_buffer} | | @extension{ARB,transform_feedback_overflow_query} | | +@extension{KHR,blend_equation_advanced} | | +@extension3{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | | @subsection opengl-support-extensions-vendor Vendor OpenGL extensions @@ -360,6 +362,8 @@ Extension | Status @es_extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | | @es_extension2{KHR,texture_compression_astc_hdr,texture_compression_astc_hdr} | | @es_extension{KHR,debug} | see above +@es_extension2{KHR,blend_equation_advanced,blend_equation_advanced} | | +@es_extension2{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | | @es_extension{KHR,robustness} | | @es_extension{KHR,robust_buffer_access_behavior} | done (nothing to do) @es_extension{KHR,context_flush_control} | | diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index d584263fd..4c3a84ecc 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -88,7 +88,9 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,debug_marker), _extension(GL,GREMEDY,string_marker), _extension(GL,KHR,texture_compression_astc_ldr), - _extension(GL,KHR,texture_compression_astc_hdr)}; + _extension(GL,KHR,texture_compression_astc_hdr), + _extension(GL,KHR,blend_equation_advanced), + _extension(GL,KHR,blend_equation_advanced_coherent)}; static const std::vector extensions300{ _extension(GL,ARB,map_buffer_range), _extension(GL,ARB,color_buffer_float), @@ -259,6 +261,8 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,KHR,texture_compression_astc_ldr), _extension(GL,KHR,texture_compression_astc_hdr), _extension(GL,KHR,debug), + _extension(GL,KHR,blend_equation_advanced), + _extension(GL,KHR,blend_equation_advanced_coherent), _extension(GL,KHR,robustness), _extension(GL,KHR,robust_buffer_access_behavior), _extension(GL,KHR,context_flush_control), diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index e22adbadc..8743105a4 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -222,6 +222,8 @@ namespace GL { _extension(GL,KHR,debug, GL210, GL430) // #119 _extension(GL,KHR,context_flush_control, GL210, GL450) // #168 _extension(GL,KHR,robustness, GL320, GL450) // #170 + _extension(GL,KHR,blend_equation_advanced, GL210, None) // #174 + _extension(GL,KHR,blend_equation_advanced_coherent, GL210, None) // #174 } namespace NV { _extension(GL,NV,primitive_restart, GL210, GL310) // #285 _extension(GL,NV,depth_buffer_float, GL210, GL300) // #334 @@ -335,6 +337,8 @@ namespace GL { _extension(GL,KHR,texture_compression_astc_ldr, GLES200, None) // #117 _extension(GL,KHR,texture_compression_astc_hdr, GLES200, None) // #117 _extension(GL,KHR,debug, GLES200, None) // #118 + _extension(GL,KHR,blend_equation_advanced, GLES200, None) // #168 + _extension(GL,KHR,blend_equation_advanced_coherent, GLES200, None) // #168 _extension(GL,KHR,robustness, GLES200, None) // #170 _extension(GL,KHR,robust_buffer_access_behavior, GLES200, None) // #189 _extension(GL,KHR,context_flush_control, GLES200, None) // #191 diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt index 8f02d5da5..8dca7c818 100644 --- a/src/MagnumExternal/OpenGL/GL/extensions.txt +++ b/src/MagnumExternal/OpenGL/GL/extensions.txt @@ -30,3 +30,5 @@ extension EXT_debug_marker optional extension GREMEDY_string_marker optional extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_hdr optional +extension KHR_blend_equation_advanced optional +extension KHR_blend_equation_advanced_coherent optional diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.cpp b/src/MagnumExternal/OpenGL/GL/flextGL.cpp index 5a5646ba0..a7414636a 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GL/flextGL.cpp @@ -952,6 +952,9 @@ FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void) = nullptr; /* GL_GREMEDY_string_marker */ FLEXTGL_EXPORT void(APIENTRY *flextglStringMarkerGREMEDY)(GLsizei, const void *) = nullptr; +/* GL_KHR_blend_equation_advanced */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void) = nullptr; + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h index e4e0bf4d0..46300fea9 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGL.h +++ b/src/MagnumExternal/OpenGL/GL/flextGL.h @@ -1720,6 +1720,28 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +/* GL_KHR_blend_equation_advanced */ + +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + +/* GL_KHR_blend_equation_advanced_coherent */ + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 + /* Function prototypes */ /* GL_VERSION_1_0 */ @@ -3704,6 +3726,14 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglStringMarkerGREMEDY)(GLsizei, const v /* GL_KHR_texture_compression_astc_hdr */ +/* GL_KHR_blend_equation_advanced */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void); +#define glBlendBarrierKHR flextglBlendBarrierKHR + +/* GL_KHR_blend_equation_advanced_coherent */ + + #ifdef __cplusplus } #endif diff --git a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp index b7abf63b6..7e58e9d75 100644 --- a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp @@ -985,4 +985,9 @@ void flextGLInit() { /* GL_KHR_texture_compression_astc_ldr */ /* GL_KHR_texture_compression_astc_hdr */ + + /* GL_KHR_blend_equation_advanced */ + flextglBlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); + + /* GL_KHR_blend_equation_advanced_coherent */ } diff --git a/src/MagnumExternal/OpenGL/GLES2/extensions.txt b/src/MagnumExternal/OpenGL/GLES2/extensions.txt index ce093beaa..e750227d1 100644 --- a/src/MagnumExternal/OpenGL/GLES2/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES2/extensions.txt @@ -64,6 +64,8 @@ extension EXT_robustness optional extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_hdr optional extension KHR_debug optional +extension KHR_blend_equation_advanced optional +extension KHR_blend_equation_advanced_coherent optional extension KHR_robustness optional extension KHR_robust_buffer_access_behavior optional extension KHR_context_flush_control optional diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp index 3fab2add5..da54958e9 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.cpp @@ -189,6 +189,9 @@ FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, c FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **) = nullptr; +/* GL_KHR_blend_equation_advanced */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void) = nullptr; + /* GL_KHR_robustness */ FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatus)(void) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *) = nullptr; diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGL.h b/src/MagnumExternal/OpenGL/GLES2/flextGL.h index 98bad833d..15075ee1e 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGL.h @@ -937,6 +937,28 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STACK_UNDERFLOW_KHR 0x0504 #define GL_DISPLAY_LIST 0x82E7 +/* GL_KHR_blend_equation_advanced */ + +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + +/* GL_KHR_blend_equation_advanced_coherent */ + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 + /* GL_KHR_robustness */ #define GL_NO_ERROR 0 @@ -1592,6 +1614,14 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, G GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **); #define glGetPointervKHR flextglGetPointervKHR +/* GL_KHR_blend_equation_advanced */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void); +#define glBlendBarrierKHR flextglBlendBarrierKHR + +/* GL_KHR_blend_equation_advanced_coherent */ + + /* GL_KHR_robustness */ GLAPI FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatus)(void); diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h index b68ddf30d..c6417751f 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLNaCl.h @@ -912,6 +912,28 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STACK_UNDERFLOW_KHR 0x0504 #define GL_DISPLAY_LIST 0x82E7 +/* GL_KHR_blend_equation_advanced */ + +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + +/* GL_KHR_blend_equation_advanced_coherent */ + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 + /* GL_KHR_robustness */ #define GL_NO_ERROR 0 @@ -1833,6 +1855,18 @@ GL_APICALL void GL_APIENTRY GLES2GetPointervKHR(GLenum, void **); #define glGetPointervKHR GLES2GetPointervKHR #endif +/* GL_KHR_blend_equation_advanced */ +#ifndef GL_KHR_blend_equation_advanced +#define GL_KHR_blend_equation_advanced 1 +GL_APICALL void GL_APIENTRY GLES2BlendBarrierKHR(void); +#define glBlendBarrierKHR GLES2BlendBarrierKHR +#endif + +/* GL_KHR_blend_equation_advanced_coherent */ +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#endif + /* GL_KHR_robustness */ #ifndef GL_KHR_robustness #define GL_KHR_robustness 1 diff --git a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp index ccf944fa5..968fc35fa 100644 --- a/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp @@ -261,6 +261,11 @@ void flextGLInit() { flextglGetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); flextglGetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); + /* GL_KHR_blend_equation_advanced */ + flextglBlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); + + /* GL_KHR_blend_equation_advanced_coherent */ + /* GL_KHR_robustness */ flextglGetGraphicsResetStatus = reinterpret_cast(loader.load("glGetGraphicsResetStatus")); flextglReadnPixels = reinterpret_cast(loader.load("glReadnPixels")); diff --git a/src/MagnumExternal/OpenGL/GLES3/extensions.txt b/src/MagnumExternal/OpenGL/GLES3/extensions.txt index 26e5fb2fb..15f9f3113 100644 --- a/src/MagnumExternal/OpenGL/GLES3/extensions.txt +++ b/src/MagnumExternal/OpenGL/GLES3/extensions.txt @@ -19,6 +19,8 @@ extension EXT_robustness optional extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_hdr optional extension KHR_debug optional +extension KHR_blend_equation_advanced optional +extension KHR_blend_equation_advanced_coherent optional extension KHR_robustness optional extension KHR_robust_buffer_access_behavior optional extension KHR_context_flush_control optional diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp index 5924c3fe3..e7fd33c01 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.cpp @@ -183,6 +183,9 @@ FLEXTGL_EXPORT void(APIENTRY *flextglObjectPtrLabelKHR)(const void *, GLsizei, c FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, GLsizei, GLsizei *, GLchar *) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **) = nullptr; +/* GL_KHR_blend_equation_advanced */ +FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void) = nullptr; + /* GL_KHR_robustness */ FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatus)(void) = nullptr; FLEXTGL_EXPORT void(APIENTRY *flextglReadnPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *) = nullptr; diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGL.h b/src/MagnumExternal/OpenGL/GLES3/flextGL.h index f186fd9f0..04c5a64df 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGL.h +++ b/src/MagnumExternal/OpenGL/GLES3/flextGL.h @@ -1121,6 +1121,28 @@ typedef khronos_ssize_t GLsizeiptr; #define GL_STACK_UNDERFLOW_KHR 0x0504 #define GL_DISPLAY_LIST 0x82E7 +/* GL_KHR_blend_equation_advanced */ + +#define GL_MULTIPLY_KHR 0x9294 +#define GL_SCREEN_KHR 0x9295 +#define GL_OVERLAY_KHR 0x9296 +#define GL_DARKEN_KHR 0x9297 +#define GL_LIGHTEN_KHR 0x9298 +#define GL_COLORDODGE_KHR 0x9299 +#define GL_COLORBURN_KHR 0x929A +#define GL_HARDLIGHT_KHR 0x929B +#define GL_SOFTLIGHT_KHR 0x929C +#define GL_DIFFERENCE_KHR 0x929E +#define GL_EXCLUSION_KHR 0x92A0 +#define GL_HSL_HUE_KHR 0x92AD +#define GL_HSL_SATURATION_KHR 0x92AE +#define GL_HSL_COLOR_KHR 0x92AF +#define GL_HSL_LUMINOSITY_KHR 0x92B0 + +/* GL_KHR_blend_equation_advanced_coherent */ + +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 + /* GL_KHR_robustness */ #define GL_NO_ERROR 0 @@ -1814,6 +1836,14 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetObjectPtrLabelKHR)(const void *, G GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointervKHR)(GLenum, void **); #define glGetPointervKHR flextglGetPointervKHR +/* GL_KHR_blend_equation_advanced */ + +GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBlendBarrierKHR)(void); +#define glBlendBarrierKHR flextglBlendBarrierKHR + +/* GL_KHR_blend_equation_advanced_coherent */ + + /* GL_KHR_robustness */ GLAPI FLEXTGL_EXPORT GLenum(APIENTRY *flextglGetGraphicsResetStatus)(void); diff --git a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp index 023804325..f40d5daa9 100644 --- a/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp +++ b/src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp @@ -205,6 +205,11 @@ void flextGLInit() { flextglGetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); flextglGetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); + /* GL_KHR_blend_equation_advanced */ + flextglBlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); + + /* GL_KHR_blend_equation_advanced_coherent */ + /* GL_KHR_robustness */ flextglGetGraphicsResetStatus = reinterpret_cast(loader.load("glGetGraphicsResetStatus")); flextglReadnPixels = reinterpret_cast(loader.load("glReadnPixels"));