Browse Source

GL: recognize 9 new WebGL extensions.

And 5 new ES extensions that they're based on.
pull/638/head
Vladimír Vondruš 2 years ago
parent
commit
7233be75a2
  1. 14
      doc/opengl-support.dox
  2. 18
      src/Magnum/GL/Context.cpp
  3. 233
      src/Magnum/GL/Extensions.h
  4. 2
      src/Magnum/GL/GL.h
  5. 20
      src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt
  6. 9
      src/MagnumExternal/OpenGL/GLES2/extensions.txt
  7. 29
      src/MagnumExternal/OpenGL/GLES2/flextGL.h
  8. 18
      src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h
  9. 3
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp
  10. 6
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp
  11. 3
      src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp
  12. 29
      src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h
  13. 24
      src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt
  14. 6
      src/MagnumExternal/OpenGL/GLES3/extensions.txt
  15. 57
      src/MagnumExternal/OpenGL/GLES3/flextGL.h
  16. 23
      src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h
  17. 12
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp
  18. 24
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp
  19. 12
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp
  20. 57
      src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h

14
doc/opengl-support.dox

@ -452,6 +452,9 @@ Extension | Status
@gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} | done @gl_extension2{ANGLE,texture_compression_dxt5,ANGLE_texture_compression_dxt} | done
@m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) (unlisted) | done @m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) (unlisted) | done
@m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_base_vertex_base_instance.txt) (unlisted) | done @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_base_vertex_base_instance.txt) (unlisted) | done
@m_class{m-doc-external} [ANGLE_provoking_vertex](https://chromium.googlesource.com/angle/angle/+/main/extensions/ANGLE_provoking_vertex.txt) (unlisted) | |
@m_class{m-doc-external} [ANGLE_polygon_mode](https://chromium.googlesource.com/angle/angle/+/HEAD/extensions/ANGLE_polygon_mode.txt) (unlisted) | |
@m_class{m-doc-external} [ANGLE_stencil_texturing](https://chromium.googlesource.com/angle/angle/+/HEAD/extensions/ANGLE_stencil_texturing.txt) (unlisted) | |
@gl_extension{APPLE,texture_format_BGRA8888} | done @gl_extension{APPLE,texture_format_BGRA8888} | done
@gl_extension{APPLE,clip_distance} | done @gl_extension{APPLE,clip_distance} | done
@gl_extension{ARM,shader_framebuffer_fetch} | missing renderer setup and limit query @gl_extension{ARM,shader_framebuffer_fetch} | missing renderer setup and limit query
@ -478,12 +481,14 @@ Extension | Status
@gl_extension{EXT,texture_norm16} | done @gl_extension{EXT,texture_norm16} | done
@gl_extension{EXT,texture_sRGB_R8} | done @gl_extension{EXT,texture_sRGB_R8} | done
@gl_extension{EXT,texture_sRGB_RG8} | done @gl_extension{EXT,texture_sRGB_RG8} | done
@gl_extension{EXT,blend_func_extended} | |
@gl_extension{EXT,polygon_offset_clamp} | | @gl_extension{EXT,polygon_offset_clamp} | |
@gl_extension{EXT,clip_cull_distance} | done @gl_extension{EXT,clip_cull_distance} | done
@gl_extension{EXT,texture_compression_rgtc} | done @gl_extension{EXT,texture_compression_rgtc} | done
@gl_extension{EXT,texture_compression_bptc} | done @gl_extension{EXT,texture_compression_bptc} | done
@gl_extension{EXT,texture_compression_s3tc_srgb} | done @gl_extension{EXT,texture_compression_s3tc_srgb} | done
@gl_extension{EXT,clip_control} | done @gl_extension{EXT,clip_control} | done
@gl_extension{EXT,texture_mirror_clamp_to_edge} | |
@gl_extension{EXT,depth_clamp} | done @gl_extension{EXT,depth_clamp} | done
@gl_extension{IMG,texture_compression_pvrtc} | done @gl_extension{IMG,texture_compression_pvrtc} | done
@gl_extension2{KHR,texture_compression_astc_hdr,KHR_texture_compression_astc_hdr} | done @gl_extension2{KHR,texture_compression_astc_hdr,KHR_texture_compression_astc_hdr} | done
@ -567,7 +572,12 @@ Extension | Status
@webgl_extension{EXT,texture_compression_rgtc} | done @webgl_extension{EXT,texture_compression_rgtc} | done
@webgl_extension{EXT,texture_compression_bptc} | done @webgl_extension{EXT,texture_compression_bptc} | done
@webgl_extension{EXT,texture_norm16} | done @webgl_extension{EXT,texture_norm16} | done
@webgl_extension{EXT,polygon_offset_clamp} | missing support in Emscripten
@webgl_extension{EXT,clip_control} | missing support in Emscripten
@webgl_extension{EXT,depth_clamp} | |
@webgl_extension{EXT,texture_mirror_clamp_to_edge} | |
@webgl_extension{KHR,parallel_shader_compile} | done @webgl_extension{KHR,parallel_shader_compile} | done
@webgl_extension{NV,shader_noperspective_interpolation} | done (shading language only)
@webgl_extension{OES,texture_float_linear} | done @webgl_extension{OES,texture_float_linear} | done
@webgl_extension{OES,draw_buffers_indexed} \n (originally named `EXT_draw_buffers_indexed`) | done @webgl_extension{OES,draw_buffers_indexed} \n (originally named `EXT_draw_buffers_indexed`) | done
@webgl_extension{OVR,multiview2} | | @webgl_extension{OVR,multiview2} | |
@ -584,6 +594,10 @@ Extension | Status
@webgl_extension{WEBGL,clip_cull_distance} \n (originally named `EXT_clip_cull_distance`) | done @webgl_extension{WEBGL,clip_cull_distance} \n (originally named `EXT_clip_cull_distance`) | done
@webgl_extension{WEBGL,draw_instanced_base_vertex_base_instance} | done @webgl_extension{WEBGL,draw_instanced_base_vertex_base_instance} | done
@webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} | done @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} | done
@webgl_extension{WEBGL,provoking_vertex} | missing support in Emscripten
@webgl_extension{WEBGL,polygon_mode} | missing support in Emscripten
@webgl_extension{WEBGL,blend_func_extended} | |
@webgl_extension{WEBGL,stencil_texturing} | |
@section opengl-unsupported Unsupported OpenGL features @section opengl-unsupported Unsupported OpenGL features

18
src/Magnum/GL/Context.cpp

@ -271,6 +271,7 @@ constexpr Extension ExtensionList460[]{
}; };
#elif defined(MAGNUM_TARGET_WEBGL) #elif defined(MAGNUM_TARGET_WEBGL)
constexpr Extension ExtensionList[]{ constexpr Extension ExtensionList[]{
Extensions::EXT::clip_control{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::clip_cull_distance{}, Extensions::EXT::clip_cull_distance{},
#endif #endif
@ -278,6 +279,7 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::color_buffer_float{}, Extensions::EXT::color_buffer_float{},
#endif #endif
Extensions::EXT::color_buffer_half_float{}, Extensions::EXT::color_buffer_half_float{},
Extensions::EXT::depth_clamp{},
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
Extensions::EXT::disjoint_timer_query{}, Extensions::EXT::disjoint_timer_query{},
#endif #endif
@ -288,14 +290,17 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::draw_buffers_indexed{}, Extensions::EXT::draw_buffers_indexed{},
#endif #endif
Extensions::EXT::float_blend{}, Extensions::EXT::float_blend{},
Extensions::EXT::polygon_offset_clamp{},
Extensions::EXT::texture_compression_bptc{}, Extensions::EXT::texture_compression_bptc{},
Extensions::EXT::texture_compression_rgtc{}, Extensions::EXT::texture_compression_rgtc{},
Extensions::EXT::texture_filter_anisotropic{}, Extensions::EXT::texture_filter_anisotropic{},
Extensions::EXT::texture_mirror_clamp_to_edge{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::texture_norm16{}, Extensions::EXT::texture_norm16{},
#endif #endif
Extensions::KHR::parallel_shader_compile{}, Extensions::KHR::parallel_shader_compile{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::NV::shader_noperspective_interpolation{},
Extensions::OES::draw_buffers_indexed{}, Extensions::OES::draw_buffers_indexed{},
#endif #endif
Extensions::OES::texture_float_linear{}, Extensions::OES::texture_float_linear{},
@ -303,6 +308,7 @@ constexpr Extension ExtensionList[]{
Extensions::OVR::multiview2{}, Extensions::OVR::multiview2{},
#endif #endif
Extensions::WEBGL::blend_equation_advanced_coherent{}, Extensions::WEBGL::blend_equation_advanced_coherent{},
Extensions::WEBGL::blend_func_extended{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::clip_cull_distance{}, Extensions::WEBGL::clip_cull_distance{},
#endif #endif
@ -321,6 +327,11 @@ constexpr Extension ExtensionList[]{
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::multi_draw_instanced_base_vertex_base_instance{}, Extensions::WEBGL::multi_draw_instanced_base_vertex_base_instance{},
#endif #endif
Extensions::WEBGL::polygon_mode{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::provoking_vertex{},
Extensions::WEBGL::stencil_texturing{},
#endif
}; };
constexpr Extension ExtensionListES300[]{ constexpr Extension ExtensionListES300[]{
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
@ -356,6 +367,11 @@ constexpr Extension ExtensionList[]{
#endif #endif
Extensions::ANGLE::compressed_texture_etc{}, Extensions::ANGLE::compressed_texture_etc{},
Extensions::ANGLE::multi_draw{}, Extensions::ANGLE::multi_draw{},
Extensions::ANGLE::polygon_mode{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::ANGLE::provoking_vertex{},
Extensions::ANGLE::stencil_texturing{},
#endif
Extensions::ANGLE::texture_compression_dxt1{}, Extensions::ANGLE::texture_compression_dxt1{},
Extensions::ANGLE::texture_compression_dxt3{}, Extensions::ANGLE::texture_compression_dxt3{},
Extensions::ANGLE::texture_compression_dxt5{}, Extensions::ANGLE::texture_compression_dxt5{},
@ -363,6 +379,7 @@ constexpr Extension ExtensionList[]{
Extensions::APPLE::texture_format_BGRA8888{}, Extensions::APPLE::texture_format_BGRA8888{},
Extensions::ARM::shader_framebuffer_fetch{}, Extensions::ARM::shader_framebuffer_fetch{},
Extensions::ARM::shader_framebuffer_fetch_depth_stencil{}, Extensions::ARM::shader_framebuffer_fetch_depth_stencil{},
Extensions::EXT::blend_func_extended{},
Extensions::EXT::clip_control{}, Extensions::EXT::clip_control{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::clip_cull_distance{}, Extensions::EXT::clip_cull_distance{},
@ -395,6 +412,7 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::texture_compression_s3tc_srgb{}, Extensions::EXT::texture_compression_s3tc_srgb{},
Extensions::EXT::texture_filter_anisotropic{}, Extensions::EXT::texture_filter_anisotropic{},
Extensions::EXT::texture_format_BGRA8888{}, Extensions::EXT::texture_format_BGRA8888{},
Extensions::EXT::texture_mirror_clamp_to_edge{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::texture_norm16{}, Extensions::EXT::texture_norm16{},
Extensions::EXT::texture_sRGB_R8{}, Extensions::EXT::texture_sRGB_R8{},

233
src/Magnum/GL/Extensions.h

@ -311,64 +311,82 @@ namespace ANGLE {
recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/00b799a56c90f94c1f4cc402f33a281ed9f43e31 */ recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/00b799a56c90f94c1f4cc402f33a281ed9f43e31 */
_extension(16,EXT,draw_buffers_indexed, GLES300, None) // #45 _extension(16,EXT,draw_buffers_indexed, GLES300, None) // #45
#endif #endif
_extension(17,EXT,polygon_offset_clamp, GLES200, None) // #50
_extension(18,EXT,clip_control, GLES200, None) // #51
_extension(19,EXT,depth_clamp, GLES200, None) // #52
/* EXT_conservative_depth (54) not exposed, as there's no corresponding ES
extension exposed yet either */
_extension(20,EXT,texture_mirror_clamp_to_edge, GLES200, None) // #62
} namespace KHR { } namespace KHR {
_extension(17,KHR,parallel_shader_compile, GLES200, None) // #37 _extension(21,KHR,parallel_shader_compile, GLES200, None) // #37
} namespace NV {
#ifndef MAGNUM_TARGET_GLES2
_extension(22,NV,shader_noperspective_interpolation, GLES300, None) // #55
#endif
} namespace OES { } namespace OES {
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension(20,OES,texture_float, GLES200, GLES300) // #1 _extension(30,OES,texture_float, GLES200, GLES300) // #1
_extension(21,OES,texture_half_float, GLES200, GLES300) // #2 _extension(31,OES,texture_half_float, GLES200, GLES300) // #2
_extension(22,OES,standard_derivatives, GLES200, GLES300) // #4 _extension(32,OES,standard_derivatives, GLES200, GLES300) // #4
_extension(23,OES,vertex_array_object, GLES200, GLES300) // #5 _extension(33,OES,vertex_array_object, GLES200, GLES300) // #5
_extension(24,OES,element_index_uint, GLES200, GLES300) // #10 _extension(34,OES,element_index_uint, GLES200, GLES300) // #10
#endif #endif
_extension(25,OES,texture_float_linear, GLES200, None) // #20 _extension(35,OES,texture_float_linear, GLES200, None) // #20
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension(26,OES,texture_half_float_linear, GLES200, GLES300) // #21 _extension(36,OES,texture_half_float_linear, GLES200, GLES300) // #21
_extension(27,OES,fbo_render_mipmap, GLES200, GLES300) // #28 _extension(37,OES,fbo_render_mipmap, GLES200, GLES300) // #28
#endif #endif
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
/* This one was renamed from EXT_draw_buffers_indexed in March 2020, /* This one was renamed from EXT_draw_buffers_indexed in March 2020,
recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/00b799a56c90f94c1f4cc402f33a281ed9f43e31 */ recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/00b799a56c90f94c1f4cc402f33a281ed9f43e31 */
_extension(28,OES,draw_buffers_indexed, GLES300, None) // #45 _extension(38,OES,draw_buffers_indexed, GLES300, None) // #45
#endif #endif
} namespace OVR { } namespace OVR {
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension(30,OVR,multiview2, GLES300, None) // #36 _extension(40,OVR,multiview2, GLES300, None) // #36
#endif #endif
} namespace WEBGL { } namespace WEBGL {
_extension(31,WEBGL,lose_context, GLES200, None) // #3 _extension(41,WEBGL,lose_context, GLES200, None) // #3
_extension(32,WEBGL,debug_renderer_info, GLES200, None) // #6 _extension(42,WEBGL,debug_renderer_info, GLES200, None) // #6
_extension(33,WEBGL,debug_shaders, GLES200, None) // #7 _extension(43,WEBGL,debug_shaders, GLES200, None) // #7
_extension(34,WEBGL,compressed_texture_s3tc, GLES200, None) // #8 _extension(44,WEBGL,compressed_texture_s3tc, GLES200, None) // #8
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension(35,WEBGL,depth_texture, GLES200, GLES300) // #9 _extension(45,WEBGL,depth_texture, GLES200, GLES300) // #9
#endif #endif
_extension(36,WEBGL,compressed_texture_pvrtc, GLES200, None) // #13 _extension(46,WEBGL,compressed_texture_pvrtc, GLES200, None) // #13
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
/* Subsumed by the EXT_color_buffer_float extension in WebGL 2, so /* Subsumed by the EXT_color_buffer_float extension in WebGL 2, so
not exposing it on WebGL 2 builds even though it's not in core */ not exposing it on WebGL 2 builds even though it's not in core */
_extension(37,WEBGL,color_buffer_float, GLES200, None) // #14 _extension(47,WEBGL,color_buffer_float, GLES200, None) // #14
_extension(38,WEBGL,draw_buffers, GLES200, GLES300) // #18 _extension(48,WEBGL,draw_buffers, GLES200, GLES300) // #18
#endif #endif
/* WEBGL_compressed_texture_etc1 (24) not exposed as the ES /* WEBGL_compressed_texture_etc1 (24) not exposed as the ES
OES_compressed_ETC1_RGB8_texture extension isn't exposed either */ OES_compressed_ETC1_RGB8_texture extension isn't exposed either */
_extension(39,WEBGL,compressed_texture_etc, GLES200, None) // #29 _extension(49,WEBGL,compressed_texture_etc, GLES200, None) // #29
_extension(40,WEBGL,compressed_texture_astc, GLES200, None) // #30 _extension(50,WEBGL,compressed_texture_astc, GLES200, None) // #30
_extension(41,WEBGL,compressed_texture_s3tc_srgb, GLES200, None) // #32 _extension(51,WEBGL,compressed_texture_s3tc_srgb, GLES200, None) // #32
_extension(42,WEBGL,multi_draw, GLES200, None) // #40 _extension(52,WEBGL,multi_draw, GLES200, None) // #40
_extension(43,WEBGL,blend_equation_advanced_coherent,GLES200,None) // #42 _extension(53,WEBGL,blend_equation_advanced_coherent,GLES200,None) // #42
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
/* This one was renamed from EXT_clip_cull_distance in January 2023, /* This one was renamed from EXT_clip_cull_distance in January 2023,
recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/c06fc8230ce4b1748be89ce3279cbe5348c9c9c9 */ recognizing both for compatibility: https://github.com/KhronosGroup/WebGL/commit/c06fc8230ce4b1748be89ce3279cbe5348c9c9c9 */
_extension(44,WEBGL,clip_cull_distance, GLES300, None) // #43 _extension(54,WEBGL,clip_cull_distance, GLES300, None) // #43
#endif
#ifndef MAGNUM_TARGET_GLES2
_extension(55,WEBGL,draw_instanced_base_vertex_base_instance,GLES300,None) // #46
_extension(56,WEBGL,multi_draw_instanced_base_vertex_base_instance,GLES300,None) // #47
_extension(57,WEBGL,provoking_vertex, GLES300, None) // #48
#endif #endif
_extension(58,WEBGL,polygon_mode, GLES200, None) // #53
_extension(59,WEBGL,blend_func_extended, GLES200, None) // #58
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension(45,WEBGL,draw_instanced_base_vertex_base_instance,GLES300,None) // #46 /* WEBGL_render_shared_exponent (60) not exposed, as the ES
_extension(46,WEBGL,multi_draw_instanced_base_vertex_base_instance,GLES300,None) // #47 QCOM_render_shared_exponent extension isn't exposed yet either */
_extension(60,WEBGL,stencil_texturing, GLES300, None) // #61
#endif #endif
} namespace MAGNUM { } namespace MAGNUM {
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension(47,MAGNUM,shader_vertex_id, GLES300, GLES300) _extension(61,MAGNUM,shader_vertex_id, GLES300, GLES300)
#endif #endif
} }
#else #else
@ -399,119 +417,128 @@ namespace ANDROID {
_extension( 10,ANGLE,base_vertex_base_instance, GLES300, None) // #??? _extension( 10,ANGLE,base_vertex_base_instance, GLES300, None) // #???
#endif #endif
_extension( 11,ANGLE,compressed_texture_etc, GLES200, None) // #??? _extension( 11,ANGLE,compressed_texture_etc, GLES200, None) // #???
#ifndef MAGNUM_TARGET_GLES2
_extension( 12,ANGLE,provoking_vertex, GLES300, None) // #???
#endif
_extension( 13,ANGLE,polygon_mode, GLES200, None) // #???
#ifndef MAGNUM_TARGET_GLES2
_extension( 14,ANGLE,stencil_texturing, GLES300, None) // #???
#endif
} namespace APPLE { } namespace APPLE {
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 12,APPLE,framebuffer_multisample, GLES200, GLES300) // #78 _extension( 20,APPLE,framebuffer_multisample, GLES200, GLES300) // #78
#endif #endif
_extension( 13,APPLE,texture_format_BGRA8888, GLES200, None) // #79 _extension( 21,APPLE,texture_format_BGRA8888, GLES200, None) // #79
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 14,APPLE,texture_max_level, GLES200, GLES300) // #80 _extension( 22,APPLE,texture_max_level, GLES200, GLES300) // #80
#endif #endif
_extension( 15,APPLE,clip_distance, GLES200, None) // #193 _extension( 23,APPLE,clip_distance, GLES200, None) // #193
} namespace ARM { } namespace ARM {
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 16,ARM,rgba8, GLES200, GLES300) // #82 _extension( 24,ARM,rgba8, GLES200, GLES300) // #82
#endif #endif
_extension( 17,ARM,shader_framebuffer_fetch, GLES200, None) // #165 _extension( 25,ARM,shader_framebuffer_fetch, GLES200, None) // #165
_extension( 18,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166 _extension( 26,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166
} namespace EXT { } namespace EXT {
_extension( 19,EXT,texture_filter_anisotropic, GLES200, None) // #41 _extension( 30,EXT,texture_filter_anisotropic, GLES200, None) // #41
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 20,EXT,texture_type_2_10_10_10_REV, GLES200, GLES300) // #42 _extension( 31,EXT,texture_type_2_10_10_10_REV, GLES200, GLES300) // #42
#endif #endif
_extension( 21,EXT,texture_compression_dxt1, GLES200, None) // #49 _extension( 32,EXT,texture_compression_dxt1, GLES200, None) // #49
_extension( 22,EXT,texture_format_BGRA8888, GLES200, None) // #51 _extension( 33,EXT,texture_format_BGRA8888, GLES200, None) // #51
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 23,EXT,discard_framebuffer, GLES200, GLES300) // #64 _extension( 34,EXT,discard_framebuffer, GLES200, GLES300) // #64
_extension( 24,EXT,blend_minmax, GLES200, GLES300) // #65 _extension( 35,EXT,blend_minmax, GLES200, GLES300) // #65
#endif #endif
_extension( 25,EXT,read_format_bgra, GLES200, None) // #66 _extension( 36,EXT,read_format_bgra, GLES200, None) // #66
_extension( 26,EXT,multi_draw_arrays, GLES200, None) // #67 _extension( 37,EXT,multi_draw_arrays, GLES200, None) // #67
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 27,EXT,shader_texture_lod, GLES200, GLES300) // #77 _extension( 38,EXT,shader_texture_lod, GLES200, GLES300) // #77
_extension( 28,EXT,unpack_subimage, GLES200, GLES300) // #90 _extension( 39,EXT,unpack_subimage, GLES200, GLES300) // #90
#endif #endif
_extension( 29,EXT,color_buffer_half_float, GLES200, GLES320) // #97 _extension( 40,EXT,color_buffer_half_float, GLES200, GLES320) // #97
_extension( 30,EXT,debug_label, GLES200, None) // #98 _extension( 41,EXT,debug_label, GLES200, None) // #98
_extension( 31,EXT,debug_marker, GLES200, None) // #99 _extension( 42,EXT,debug_marker, GLES200, None) // #99
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 32,EXT,occlusion_query_boolean, GLES200, GLES300) // #100 _extension( 43,EXT,occlusion_query_boolean, GLES200, GLES300) // #100
#endif #endif
_extension( 33,EXT,separate_shader_objects, GLES200, None) // #101 _extension( 44,EXT,separate_shader_objects, GLES200, None) // #101
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 34,EXT,shadow_samplers, GLES200, GLES300) // #102 _extension( 45,EXT,shadow_samplers, GLES200, GLES300) // #102
_extension( 35,EXT,texture_rg, GLES200, GLES300) // #103 _extension( 46,EXT,texture_rg, GLES200, GLES300) // #103
_extension( 36,EXT,sRGB, GLES200, GLES300) // #105 _extension( 47,EXT,sRGB, GLES200, GLES300) // #105
#endif #endif
_extension( 37,EXT,multisampled_render_to_texture, GLES200, None) // #106 _extension( 48,EXT,multisampled_render_to_texture, GLES200, None) // #106
_extension( 38,EXT,robustness, GLES200, None) // #107 _extension( 49,EXT,robustness, GLES200, None) // #107
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 39,EXT,texture_storage, GLES200, GLES300) // #108 _extension( 50,EXT,texture_storage, GLES200, GLES300) // #108
_extension( 40,EXT,map_buffer_range, GLES200, GLES300) // #121 _extension( 51,EXT,map_buffer_range, GLES200, GLES300) // #121
#endif #endif
_extension( 41,EXT,shader_framebuffer_fetch, GLES200, None) // #122 _extension( 52,EXT,shader_framebuffer_fetch, GLES200, None) // #122
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 42,EXT,color_buffer_float, GLES300, GLES320) // #137 _extension( 53,EXT,color_buffer_float, GLES300, GLES320) // #137
#endif #endif
_extension( 43,EXT,disjoint_timer_query, GLES200, None) // #150 _extension( 54,EXT,disjoint_timer_query, GLES200, None) // #150
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 44,EXT,draw_buffers, GLES200, GLES300) // #151 _extension( 55,EXT,draw_buffers, GLES200, GLES300) // #151
#endif #endif
_extension( 45,EXT,texture_sRGB_decode, GLES200, None) // #152 _extension( 56,EXT,texture_sRGB_decode, GLES200, None) // #152
_extension( 46,EXT,sRGB_write_control, GLES200, None) // #153 _extension( 57,EXT,sRGB_write_control, GLES200, None) // #153
_extension( 47,EXT,texture_compression_s3tc, GLES200, None) // #154 _extension( 58,EXT,texture_compression_s3tc, GLES200, None) // #154
_extension( 48,EXT,pvrtc_sRGB, GLES200, None) // #155 _extension( 59,EXT,pvrtc_sRGB, GLES200, None) // #155
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension( 49,EXT,instanced_arrays, GLES200, GLES300) // #156 _extension( 60,EXT,instanced_arrays, GLES200, GLES300) // #156
_extension( 50,EXT,draw_instanced, GLES200, GLES300) // #157 _extension( 61,EXT,draw_instanced, GLES200, GLES300) // #157
#endif #endif
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 51,EXT,shader_integer_mix, GLES300, None) // #161 _extension( 62,EXT,shader_integer_mix, GLES300, None) // #161
_extension( 52,EXT,copy_image, GLES300, GLES320) // #175 _extension( 63,EXT,copy_image, GLES300, GLES320) // #175
#endif #endif
_extension( 53,EXT,draw_buffers_indexed, GLES200, GLES320) // #176 _extension( 64,EXT,draw_buffers_indexed, GLES200, GLES320) // #176
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 54,EXT,geometry_shader, GLES310, GLES320) // #177 _extension( 65,EXT,geometry_shader, GLES310, GLES320) // #177
_extension( 55,EXT,gpu_shader5, GLES310, GLES320) // #178 _extension( 66,EXT,gpu_shader5, GLES310, GLES320) // #178
_extension( 56,EXT,shader_io_blocks, GLES310, GLES320) // #180 _extension( 67,EXT,shader_io_blocks, GLES310, GLES320) // #180
_extension( 57,EXT,tessellation_shader, GLES310, GLES320) // #181 _extension( 68,EXT,tessellation_shader, GLES310, GLES320) // #181
#endif #endif
_extension( 58,EXT,texture_border_clamp, GLES200, GLES320) // #182 _extension( 69,EXT,texture_border_clamp, GLES200, GLES320) // #182
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 59,EXT,texture_buffer, GLES310, GLES320) // #183 _extension( 70,EXT,texture_buffer, GLES310, GLES320) // #183
_extension( 60,EXT,texture_cube_map_array, GLES310, GLES320) // #184 _extension( 71,EXT,texture_cube_map_array, GLES310, GLES320) // #184
_extension( 61,EXT,texture_view, GLES310, None) // #185 _extension( 72,EXT,texture_view, GLES310, None) // #185
_extension( 62,EXT,primitive_bounding_box, GLES310, GLES320) // #186 _extension( 73,EXT,primitive_bounding_box, GLES310, GLES320) // #186
#endif #endif
_extension( 63,EXT,draw_elements_base_vertex, GLES200, None) // #204 _extension( 74,EXT,draw_elements_base_vertex, GLES200, None) // #204
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 64,EXT,texture_norm16, GLES310, None) // #207 _extension( 75,EXT,texture_norm16, GLES310, None) // #207
_extension( 65,EXT,texture_sRGB_R8, GLES300, None) // #221 _extension( 76,EXT,texture_sRGB_R8, GLES300, None) // #221
_extension( 66,EXT,texture_sRGB_RG8, GLES300, None) // #223 _extension( 77,EXT,texture_sRGB_RG8, GLES300, None) // #223
#endif #endif
_extension( 67,EXT,polygon_offset_clamp, GLES200, None) // #252 _extension( 78,EXT,blend_func_extended, GLES200, None) // #247
_extension( 79,EXT,polygon_offset_clamp, GLES200, None) // #252
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 68,EXT,clip_cull_distance, GLES300, None) // #257 _extension( 80,EXT,clip_cull_distance, GLES300, None) // #257
_extension( 69,EXT,texture_compression_rgtc, GLES300, None) // #286 _extension( 81,EXT,texture_compression_rgtc, GLES300, None) // #286
_extension( 70,EXT,texture_compression_bptc, GLES300, None) // #287 _extension( 82,EXT,texture_compression_bptc, GLES300, None) // #287
#endif #endif
_extension( 71,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289 _extension( 83,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289
_extension( 72,EXT,clip_control, GLES200, None) // #290 _extension( 84,EXT,clip_control, GLES200, None) // #290
_extension( 73,EXT,depth_clamp, GLES200, None) // #309 _extension( 85,EXT,texture_mirror_clamp_to_edge, GLES200, None) // #291
_extension( 86,EXT,depth_clamp, GLES200, None) // #309
} namespace IMG { } namespace IMG {
_extension( 74,IMG,texture_compression_pvrtc, GLES200, None) // #54 _extension( 87,IMG,texture_compression_pvrtc, GLES200, None) // #54
} namespace KHR { } namespace KHR {
_extension( 80,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117 _extension( 89,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117
_extension( 81,KHR,texture_compression_astc_hdr,GLES200, None) // #117 _extension( 90,KHR,texture_compression_astc_hdr,GLES200, None) // #117
_extension( 82,KHR,debug, GLES200, GLES320) // #118 _extension( 91,KHR,debug, GLES200, GLES320) // #118
_extension( 83,KHR,blend_equation_advanced, GLES200, GLES320) // #168 _extension( 92,KHR,blend_equation_advanced, GLES200, GLES320) // #168
_extension( 84,KHR,blend_equation_advanced_coherent, GLES200, None) // #168 _extension( 93,KHR,blend_equation_advanced_coherent, GLES200, None) // #168
_extension( 85,KHR,robustness, GLES200, GLES320) // #170 _extension( 94,KHR,robustness, GLES200, GLES320) // #170
_extension( 86,KHR,robust_buffer_access_behavior, GLES200, GLES320) // #189 _extension( 95,KHR,robust_buffer_access_behavior, GLES200, GLES320) // #189
_extension( 87,KHR,context_flush_control, GLES200, None) // #191 _extension( 96,KHR,context_flush_control, GLES200, None) // #191
_extension( 88,KHR,no_error, GLES200, None) // #243 _extension( 97,KHR,no_error, GLES200, None) // #243
_extension( 89,KHR,texture_compression_astc_sliced_3d, GLES200, None) // #249 _extension( 98,KHR,texture_compression_astc_sliced_3d, GLES200, None) // #249
_extension( 90,KHR,parallel_shader_compile, GLES200, None) // #288 _extension( 99,KHR,parallel_shader_compile, GLES200, None) // #288
} namespace NV { } namespace NV {
#ifdef MAGNUM_TARGET_GLES2 #ifdef MAGNUM_TARGET_GLES2
_extension(100,NV,draw_buffers, GLES200, GLES300) // #91 _extension(100,NV,draw_buffers, GLES200, GLES300) // #91

2
src/Magnum/GL/GL.h

@ -51,7 +51,7 @@ namespace Implementation {
#elif !defined(MAGNUM_TARGET_WEBGL) #elif !defined(MAGNUM_TARGET_WEBGL)
160 160
#else #else
48 64
#endif #endif
}; };
} }

20
src/MagnumExternal/OpenGL/GLES2/Emscripten/extensions.txt vendored

@ -29,10 +29,17 @@ extension EXT_texture_filter_anisotropic optional
extension EXT_disjoint_timer_query optional extension EXT_disjoint_timer_query optional
extension EXT_texture_compression_rgtc optional extension EXT_texture_compression_rgtc optional
extension EXT_texture_compression_bptc optional extension EXT_texture_compression_bptc optional
# These are used as a base for WEBGL_* extensions # These three are used as a base for WEBGL_* extensions
extension EXT_color_buffer_float optional extension EXT_color_buffer_float optional
extension EXT_texture_compression_s3tc optional extension EXT_texture_compression_s3tc optional
extension EXT_texture_compression_s3tc_srgb optional extension EXT_texture_compression_s3tc_srgb optional
# Entrypoints for these two not in Emscripten yet. Last checked on 2024-02-14.
# extension EXT_polygon_offset_clamp optional
# extension EXT_clip_control optional
extension EXT_depth_clamp optional
extension EXT_texture_mirror_clamp_to_edge optional
# These three are used as a base for WEBGL_* extensions
extension EXT_blend_func_extended optional
extension IMG_texture_compression_pvrtc optional extension IMG_texture_compression_pvrtc optional
extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_ldr optional
@ -53,7 +60,18 @@ extension ANGLE_base_vertex_base_instance optional
# GOOGLE!!! # GOOGLE!!!
# extension ANGLE_compressed_texture_etc optional # extension ANGLE_compressed_texture_etc optional
# These are based off ANGLE_ extensions, gl_angle_ext.xml has them but
# Emscripten not yet, and for Emscripten they'd need to get renamed from an
# ANGLE suffix to WEBGL. Last checked on 2024-02-14.
# extension WEBGL_provoking_vertex optional
# extension WEGBL_polygon_mode optional
begin functions blacklist begin functions blacklist
# Not present in WebGL variant of EXT_blend_func_extended
BindFragDataLocationEXT
BindFragDataLocationIndexedEXT
GetFragDataIndexEXT
GetProgramResourceLocationIndexEXT
# Not present in WEBGL_blend_equation_advanced_coherent # Not present in WEBGL_blend_equation_advanced_coherent
BlendBarrierKHR BlendBarrierKHR
# Not present in WebGL variant of KHR_parallel_shader_compile # Not present in WebGL variant of KHR_parallel_shader_compile

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

@ -91,9 +91,11 @@ extension EXT_sRGB_write_control optional
extension EXT_texture_compression_s3tc optional extension EXT_texture_compression_s3tc optional
extension EXT_pvrtc_sRGB optional extension EXT_pvrtc_sRGB optional
extension EXT_draw_elements_base_vertex optional extension EXT_draw_elements_base_vertex optional
extension EXT_blend_func_extended optional
extension EXT_polygon_offset_clamp optional extension EXT_polygon_offset_clamp optional
extension EXT_texture_compression_s3tc_srgb optional extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional extension EXT_clip_control optional
extension EXT_texture_mirror_clamp_to_edge optional
extension EXT_depth_clamp optional extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc optional extension IMG_texture_compression_pvrtc optional
# extension KHR_texture_compression_astc_hdr optional # extension KHR_texture_compression_astc_hdr optional
@ -120,6 +122,7 @@ extension ANGLE_multi_draw optional
# Haha you wish, OF COURSE it's not included in gl_angle_ext.xml so I have to # Haha you wish, OF COURSE it's not included in gl_angle_ext.xml so I have to
# hardcode the numeric values there. GOOGLE!!! # hardcode the numeric values there. GOOGLE!!!
# extension ANGLE_compressed_texture_etc optional # extension ANGLE_compressed_texture_etc optional
extension ANGLE_polygon_mode optional
begin functions blacklist begin functions blacklist
# These are listed in EXT_separate_shader_objects with only the comment # These are listed in EXT_separate_shader_objects with only the comment
@ -156,6 +159,12 @@ begin functions blacklist
TextureStorage2DEXT TextureStorage2DEXT
TextureStorage3DEXT TextureStorage3DEXT
# These are listed in EXT_blend_func_extended only for ES3+
BindFragDataLocationEXT
BindFragDataLocationIndexedEXT
GetFragDataIndexEXT
GetProgramResourceLocationIndexEXT
# EXT/OES_draw_elements_base_vertex lists those are only present in ES3 # EXT/OES_draw_elements_base_vertex lists those are only present in ES3
DrawRangeElementsBaseVertexEXT DrawRangeElementsBaseVertexEXT
DrawRangeElementsBaseVertexOES DrawRangeElementsBaseVertexOES

29
src/MagnumExternal/OpenGL/GLES2/flextGL.h vendored

@ -993,6 +993,16 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_EXT_polygon_offset_clamp */ /* GL_EXT_polygon_offset_clamp */
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B #define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
@ -1013,6 +1023,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_ORIGIN_EXT 0x935C #define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D #define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */ /* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F #define GL_DEPTH_CLAMP_EXT 0x864F
@ -1087,6 +1101,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_STENCIL_INDEX4_OES 0x8D47 #define GL_STENCIL_INDEX4_OES 0x8D47
/* GL_ANGLE_polygon_mode */
#define GL_POLYGON_MODE_ANGLE 0x0B40
#define GL_LINE_ANGLE 0x1B01
#define GL_FILL_ANGLE 0x1B02
#define GL_POLYGON_OFFSET_LINE_ANGLE 0x2A02
/* Function prototypes */ /* Function prototypes */
/* GL_ES_VERSION_2_0 */ /* GL_ES_VERSION_2_0 */
@ -1260,6 +1281,10 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei); void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei);
/* GL_ANGLE_polygon_mode */
void(APIENTRY *PolygonModeANGLE)(GLenum, GLenum);
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
@ -1518,6 +1543,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE #define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE #define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
#define glRenderbufferStorageMultisampleAPPLE flextGL.RenderbufferStorageMultisampleAPPLE #define glRenderbufferStorageMultisampleAPPLE flextGL.RenderbufferStorageMultisampleAPPLE

18
src/MagnumExternal/OpenGL/GLES2/flextGLEmscripten.h vendored

@ -520,6 +520,24 @@ typedef khronos_uint64_t GLuint64;
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_IMG_texture_compression_pvrtc */ /* GL_IMG_texture_compression_pvrtc */
#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00

3
src/MagnumExternal/OpenGL/GLES2/flextGLPlatform.cpp vendored

@ -50,6 +50,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE")); flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE"));
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE")); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE"));
/* GL_ANGLE_polygon_mode */
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glPolygonModeANGLE"));
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE")); flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE"));
flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glResolveMultisampleFramebufferAPPLE")); flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glResolveMultisampleFramebufferAPPLE"));

6
src/MagnumExternal/OpenGL/GLES2/flextGLPlatformIOS.cpp vendored

@ -34,6 +34,7 @@
#undef glMultiDrawArraysInstancedANGLE #undef glMultiDrawArraysInstancedANGLE
#undef glMultiDrawElementsANGLE #undef glMultiDrawElementsANGLE
#undef glMultiDrawElementsInstancedANGLE #undef glMultiDrawElementsInstancedANGLE
#undef glPolygonModeANGLE
#undef glRenderbufferStorageMultisampleAPPLE #undef glRenderbufferStorageMultisampleAPPLE
#undef glResolveMultisampleFramebufferAPPLE #undef glResolveMultisampleFramebufferAPPLE
#undef glClipControlEXT #undef glClipControlEXT
@ -197,6 +198,11 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(glMultiDrawElementsInstancedANGLE); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(glMultiDrawElementsInstancedANGLE);
#endif #endif
/* GL_ANGLE_polygon_mode */
#if GL_ANGLE_polygon_mode
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glPolygonModeANGLE);
#endif
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
#if GL_APPLE_framebuffer_multisample #if GL_APPLE_framebuffer_multisample
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(glRenderbufferStorageMultisampleAPPLE); flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(glRenderbufferStorageMultisampleAPPLE);

3
src/MagnumExternal/OpenGL/GLES2/flextGLPlatformWindowsDesktop.cpp vendored

@ -50,6 +50,9 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE")); flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE"));
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE")); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE"));
/* GL_ANGLE_polygon_mode */
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glPolygonModeANGLE"));
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE")); flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE"));
flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glResolveMultisampleFramebufferAPPLE")); flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glResolveMultisampleFramebufferAPPLE"));

29
src/MagnumExternal/OpenGL/GLES2/flextGLWindowsDesktop.h vendored

@ -989,6 +989,16 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_EXT_polygon_offset_clamp */ /* GL_EXT_polygon_offset_clamp */
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B #define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
@ -1009,6 +1019,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_ORIGIN_EXT 0x935C #define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D #define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */ /* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F #define GL_DEPTH_CLAMP_EXT 0x864F
@ -1083,6 +1097,13 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_STENCIL_INDEX4_OES 0x8D47 #define GL_STENCIL_INDEX4_OES 0x8D47
/* GL_ANGLE_polygon_mode */
#define GL_POLYGON_MODE_ANGLE 0x0B40
#define GL_LINE_ANGLE 0x1B01
#define GL_FILL_ANGLE 0x1B02
#define GL_POLYGON_OFFSET_LINE_ANGLE 0x2A02
/* Function prototypes. First an intersection of GL 1.0 / 1.1 functions that /* Function prototypes. First an intersection of GL 1.0 / 1.1 functions that
are also available in ES 2.0, which we can access directly. */ are also available in ES 2.0, which we can access directly. */
@ -1160,6 +1181,10 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei); void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei);
/* GL_ANGLE_polygon_mode */
void(APIENTRY *PolygonModeANGLE)(GLenum, GLenum);
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
@ -1518,6 +1543,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE #define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE #define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_APPLE_framebuffer_multisample */ /* GL_APPLE_framebuffer_multisample */
#define glRenderbufferStorageMultisampleAPPLE flextGL.RenderbufferStorageMultisampleAPPLE #define glRenderbufferStorageMultisampleAPPLE flextGL.RenderbufferStorageMultisampleAPPLE

24
src/MagnumExternal/OpenGL/GLES3/Emscripten/extensions.txt vendored

@ -19,11 +19,20 @@ extension EXT_draw_buffers_indexed optional
# WebGL has only OVR_multiview2, but we need the definitions from OVR_multiview # WebGL has only OVR_multiview2, but we need the definitions from OVR_multiview
extension OVR_multiview optional extension OVR_multiview optional
extension OVR_multiview2 optional extension OVR_multiview2 optional
# These are used as a base for WEBGL_* extensions # These two are used as a base for WEBGL_* extensions
extension EXT_texture_compression_s3tc optional extension EXT_texture_compression_s3tc optional
extension EXT_texture_compression_s3tc_srgb optional extension EXT_texture_compression_s3tc_srgb optional
# Entrypoints for these two not in Emscripten yet. Last checked on 2024-02-14.
# extension EXT_polygon_offset_clamp optional
# extension EXT_clip_control optional
extension EXT_depth_clamp optional
extension EXT_texture_mirror_clamp_to_edge optional
# These three are used as a base for WEBGL_* extensions
extension EXT_blend_func_extended optional
extension IMG_texture_compression_pvrtc optional extension IMG_texture_compression_pvrtc optional
extension KHR_texture_compression_astc_ldr optional extension KHR_texture_compression_astc_ldr optional
# GLSL-only extension, no actual API
extension NV_shader_noperspective_interpolation optional
# WEBGL_blend_equation_advanced_coherent includes just the enums but not the # WEBGL_blend_equation_advanced_coherent includes just the enums but not the
# barrier # barrier
@ -36,13 +45,26 @@ extension KHR_parallel_shader_compile optional
# From the gl_angle_ext file, base for WEBGL_multi_draw etc # From the gl_angle_ext file, base for WEBGL_multi_draw etc
extension ANGLE_multi_draw optional extension ANGLE_multi_draw optional
extension ANGLE_base_vertex_base_instance optional extension ANGLE_base_vertex_base_instance optional
# Base for WEBGL_stencil_texturing
extension ANGLE_stencil_texturing optional
# Haha you wish, OF COURSE it's not included in gl_angle_ext.xml. But # Haha you wish, OF COURSE it's not included in gl_angle_ext.xml. But
# fortunately ES3 defines these constants on its own so I don't need it anyway. # fortunately ES3 defines these constants on its own so I don't need it anyway.
# extension ANGLE_compressed_texture_etc optional # extension ANGLE_compressed_texture_etc optional
extension MAGNUM_what_webgl_has_but_es_not optional extension MAGNUM_what_webgl_has_but_es_not optional
# These are based off ANGLE_ extensions, gl_angle_ext.xml has them but
# Emscripten not yet, and for Emscripten they'd need to get renamed from an
# ANGLE suffix to WEBGL. Last checked on 2024-02-14.
# extension WEBGL_provoking_vertex optional
# extension WEGBL_polygon_mode optional
begin functions blacklist begin functions blacklist
# Not present in WebGL variant of EXT_blend_func_extended
BindFragDataLocationEXT
BindFragDataLocationIndexedEXT
GetFragDataIndexEXT
GetProgramResourceLocationIndexEXT
# Not present in WEBGL_blend_equation_advanced_coherent # Not present in WEBGL_blend_equation_advanced_coherent
BlendBarrierKHR BlendBarrierKHR
# Not present in WebGL variant of KHR_parallel_shader_compile # Not present in WebGL variant of KHR_parallel_shader_compile

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

@ -64,12 +64,14 @@ extension EXT_draw_elements_base_vertex optional
extension EXT_texture_norm16 optional extension EXT_texture_norm16 optional
extension EXT_texture_sRGB_R8 optional extension EXT_texture_sRGB_R8 optional
extension EXT_texture_sRGB_RG8 optional extension EXT_texture_sRGB_RG8 optional
extension EXT_blend_func_extended optional
extension EXT_polygon_offset_clamp optional extension EXT_polygon_offset_clamp optional
extension EXT_clip_cull_distance optional extension EXT_clip_cull_distance optional
extension EXT_texture_compression_rgtc optional extension EXT_texture_compression_rgtc optional
extension EXT_texture_compression_bptc optional extension EXT_texture_compression_bptc optional
extension EXT_texture_compression_s3tc_srgb optional extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional extension EXT_clip_control optional
extension EXT_texture_mirror_clamp_to_edge optional
extension EXT_depth_clamp optional extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc optional extension IMG_texture_compression_pvrtc optional
# extension KHR_texture_compression_astc_hdr optional # extension KHR_texture_compression_astc_hdr optional
@ -101,5 +103,9 @@ extension ANGLE_base_vertex_base_instance optional
# Haha you wish, OF COURSE it's not included in gl_angle_ext.xml. But # Haha you wish, OF COURSE it's not included in gl_angle_ext.xml. But
# fortunately ES3 defines these constants on its own so I don't need it anyway. # fortunately ES3 defines these constants on its own so I don't need it anyway.
# extension ANGLE_compressed_texture_etc optional # extension ANGLE_compressed_texture_etc optional
extension ANGLE_provoking_vertex optional
extension ANGLE_polygon_mode optional
# Definitions already present in ES 3.1
# extension ANGLE_stencil_texturing optional
# kate: hl python # kate: hl python

57
src/MagnumExternal/OpenGL/GLES3/flextGL.h vendored

@ -1590,6 +1590,16 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_SRG8_EXT 0x8FBE #define GL_SRG8_EXT 0x8FBE
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_EXT_polygon_offset_clamp */ /* GL_EXT_polygon_offset_clamp */
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B #define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
@ -1638,6 +1648,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_ORIGIN_EXT 0x935C #define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D #define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */ /* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F #define GL_DEPTH_CLAMP_EXT 0x864F
@ -1719,6 +1733,19 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_MAX_VIEWS_OVR 0x9631 #define GL_MAX_VIEWS_OVR 0x9631
#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 #define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
/* GL_ANGLE_provoking_vertex */
#define GL_FIRST_VERTEX_CONVENTION_ANGLE 0x8E4D
#define GL_LAST_VERTEX_CONVENTION_ANGLE 0x8E4E
#define GL_PROVOKING_VERTEX_ANGLE 0x8E4F
/* GL_ANGLE_polygon_mode */
#define GL_POLYGON_MODE_ANGLE 0x0B40
#define GL_LINE_ANGLE 0x1B01
#define GL_FILL_ANGLE 0x1B02
#define GL_POLYGON_OFFSET_LINE_ANGLE 0x2A02
/* Function prototypes */ /* Function prototypes */
/* GL_ES_VERSION_2_0 */ /* GL_ES_VERSION_2_0 */
@ -1992,6 +2019,14 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei); void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei);
/* GL_ANGLE_polygon_mode */
void(APIENTRY *PolygonModeANGLE)(GLenum, GLenum);
/* GL_ANGLE_provoking_vertex */
void(APIENTRY *ProvokingVertexANGLE)(GLenum);
/* GL_ES_VERSION_3_1 */ /* GL_ES_VERSION_3_1 */
void(APIENTRY *ActiveShaderProgram)(GLuint, GLuint); void(APIENTRY *ActiveShaderProgram)(GLuint, GLuint);
@ -2110,6 +2145,13 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *); void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean); void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
/* GL_EXT_blend_func_extended */
void(APIENTRY *BindFragDataLocationEXT)(GLuint, GLuint, const GLchar *);
void(APIENTRY *BindFragDataLocationIndexedEXT)(GLuint, GLuint, GLuint, const GLchar *);
GLint(APIENTRY *GetFragDataIndexEXT)(GLuint, const GLchar *);
GLint(APIENTRY *GetProgramResourceLocationIndexEXT)(GLuint, GLenum, const GLchar *);
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum); void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
@ -2347,6 +2389,14 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE #define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE #define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_ANGLE_provoking_vertex */
#define glProvokingVertexANGLE flextGL.ProvokingVertexANGLE
/* GL_ES_VERSION_3_1 */ /* GL_ES_VERSION_3_1 */
#define glActiveShaderProgram flextGL.ActiveShaderProgram #define glActiveShaderProgram flextGL.ActiveShaderProgram
@ -2465,6 +2515,13 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv #define glTexParameterIuiv flextGL.TexParameterIuiv
#define glTexStorage3DMultisample flextGL.TexStorage3DMultisample #define glTexStorage3DMultisample flextGL.TexStorage3DMultisample
/* GL_EXT_blend_func_extended */
#define glBindFragDataLocationEXT flextGL.BindFragDataLocationEXT
#define glBindFragDataLocationIndexedEXT flextGL.BindFragDataLocationIndexedEXT
#define glGetFragDataIndexEXT flextGL.GetFragDataIndexEXT
#define glGetProgramResourceLocationIndexEXT flextGL.GetProgramResourceLocationIndexEXT
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT #define glClipControlEXT flextGL.ClipControlEXT

23
src/MagnumExternal/OpenGL/GLES3/flextGLEmscripten.h vendored

@ -823,6 +823,24 @@ typedef struct __GLsync *GLsync;
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E
#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F
/* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_IMG_texture_compression_pvrtc */ /* GL_IMG_texture_compression_pvrtc */
#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
@ -884,6 +902,11 @@ typedef struct __GLsync *GLsync;
#define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0 #define GL_MAX_SHADER_COMPILER_THREADS_KHR 0x91B0
#define GL_COMPLETION_STATUS_KHR 0x91B1 #define GL_COMPLETION_STATUS_KHR 0x91B1
/* GL_ANGLE_stencil_texturing */
#define GL_DEPTH_STENCIL_TEXTURE_MODE_ANGLE 0x90EA
#define GL_STENCIL_INDEX_ANGLE 0x1901
/* Function prototypes */ /* Function prototypes */
/* GL_ANGLE_base_vertex_base_instance */ /* GL_ANGLE_base_vertex_base_instance */

12
src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp vendored

@ -45,6 +45,12 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE")); flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE"));
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE")); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE"));
/* GL_ANGLE_polygon_mode */
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glPolygonModeANGLE"));
/* GL_ANGLE_provoking_vertex */
flextGL.ProvokingVertexANGLE = reinterpret_cast<void(APIENTRY*)(GLenum)>(loader.load("glProvokingVertexANGLE"));
/* GL_ES_VERSION_3_1 */ /* GL_ES_VERSION_3_1 */
flextGL.ActiveShaderProgram = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgram")); flextGL.ActiveShaderProgram = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgram"));
flextGL.BindImageTexture = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum)>(loader.load("glBindImageTexture")); flextGL.BindImageTexture = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, GLint, GLboolean, GLint, GLenum, GLenum)>(loader.load("glBindImageTexture"));
@ -161,6 +167,12 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv")); flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv"));
flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample")); flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample"));
/* GL_EXT_blend_func_extended */
flextGL.BindFragDataLocationEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLchar *)>(loader.load("glBindFragDataLocationEXT"));
flextGL.BindFragDataLocationIndexedEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, GLuint, const GLchar *)>(loader.load("glBindFragDataLocationIndexedEXT"));
flextGL.GetFragDataIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, const GLchar *)>(loader.load("glGetFragDataIndexEXT"));
flextGL.GetProgramResourceLocationIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, GLenum, const GLchar *)>(loader.load("glGetProgramResourceLocationIndexEXT"));
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT")); flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));

24
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp vendored

@ -33,6 +33,12 @@
#undef glMultiDrawArraysInstancedANGLE #undef glMultiDrawArraysInstancedANGLE
#undef glMultiDrawElementsANGLE #undef glMultiDrawElementsANGLE
#undef glMultiDrawElementsInstancedANGLE #undef glMultiDrawElementsInstancedANGLE
#undef glPolygonModeANGLE
#undef glProvokingVertexANGLE
#undef glBindFragDataLocationEXT
#undef glBindFragDataLocationIndexedEXT
#undef glGetFragDataIndexEXT
#undef glGetProgramResourceLocationIndexEXT
#undef glClipControlEXT #undef glClipControlEXT
#undef glCopyImageSubDataEXT #undef glCopyImageSubDataEXT
#undef glGetObjectLabelEXT #undef glGetObjectLabelEXT
@ -185,6 +191,24 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(glMultiDrawElementsInstancedANGLE); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(glMultiDrawElementsInstancedANGLE);
#endif #endif
/* GL_ANGLE_polygon_mode */
#if GL_ANGLE_polygon_mode
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glPolygonModeANGLE);
#endif
/* GL_ANGLE_provoking_vertex */
#if GL_ANGLE_provoking_vertex
flextGL.ProvokingVertexANGLE = reinterpret_cast<void(APIENTRY*)(GLenum)>(glProvokingVertexANGLE);
#endif
/* GL_EXT_blend_func_extended */
#if GL_EXT_blend_func_extended
flextGL.BindFragDataLocationEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLchar *)>(glBindFragDataLocationEXT);
flextGL.BindFragDataLocationIndexedEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, GLuint, const GLchar *)>(glBindFragDataLocationIndexedEXT);
flextGL.GetFragDataIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, const GLchar *)>(glGetFragDataIndexEXT);
flextGL.GetProgramResourceLocationIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, GLenum, const GLchar *)>(glGetProgramResourceLocationIndexEXT);
#endif
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
#if GL_EXT_clip_control #if GL_EXT_clip_control
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glClipControlEXT); flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glClipControlEXT);

12
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp vendored

@ -45,6 +45,12 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE")); flextGL.MultiDrawElementsANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsANGLE"));
flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE")); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei)>(loader.load("glMultiDrawElementsInstancedANGLE"));
/* GL_ANGLE_polygon_mode */
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glPolygonModeANGLE"));
/* GL_ANGLE_provoking_vertex */
flextGL.ProvokingVertexANGLE = reinterpret_cast<void(APIENTRY*)(GLenum)>(loader.load("glProvokingVertexANGLE"));
/* GL_ES_VERSION_2_0 */ /* GL_ES_VERSION_2_0 */
flextGL.ActiveTexture = reinterpret_cast<void(APIENTRY*)(GLenum)>(loader.load("glActiveTexture")); flextGL.ActiveTexture = reinterpret_cast<void(APIENTRY*)(GLenum)>(loader.load("glActiveTexture"));
flextGL.AttachShader = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glAttachShader")); flextGL.AttachShader = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glAttachShader"));
@ -363,6 +369,12 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv")); flextGL.TexParameterIuiv = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const GLuint *)>(loader.load("glTexParameterIuiv"));
flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample")); flextGL.TexStorage3DMultisample = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean)>(loader.load("glTexStorage3DMultisample"));
/* GL_EXT_blend_func_extended */
flextGL.BindFragDataLocationEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLchar *)>(loader.load("glBindFragDataLocationEXT"));
flextGL.BindFragDataLocationIndexedEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, GLuint, const GLchar *)>(loader.load("glBindFragDataLocationIndexedEXT"));
flextGL.GetFragDataIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, const GLchar *)>(loader.load("glGetFragDataIndexEXT"));
flextGL.GetProgramResourceLocationIndexEXT = reinterpret_cast<GLint(APIENTRY*)(GLuint, GLenum, const GLchar *)>(loader.load("glGetProgramResourceLocationIndexEXT"));
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT")); flextGL.ClipControlEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(loader.load("glClipControlEXT"));

57
src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h vendored

@ -1583,6 +1583,16 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_SRG8_EXT 0x8FBE #define GL_SRG8_EXT 0x8FBE
/* GL_EXT_blend_func_extended */
#define GL_SRC1_COLOR_EXT 0x88F9
#define GL_SRC1_ALPHA_EXT 0x8589
#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA
#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB
#define GL_SRC_ALPHA_SATURATE_EXT 0x0308
#define GL_LOCATION_INDEX_EXT 0x930F
#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
/* GL_EXT_polygon_offset_clamp */ /* GL_EXT_polygon_offset_clamp */
#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B #define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B
@ -1631,6 +1641,10 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_ORIGIN_EXT 0x935C #define GL_CLIP_ORIGIN_EXT 0x935C
#define GL_CLIP_DEPTH_MODE_EXT 0x935D #define GL_CLIP_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */ /* GL_EXT_depth_clamp */
#define GL_DEPTH_CLAMP_EXT 0x864F #define GL_DEPTH_CLAMP_EXT 0x864F
@ -1712,6 +1726,19 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_MAX_VIEWS_OVR 0x9631 #define GL_MAX_VIEWS_OVR 0x9631
#define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633 #define GL_FRAMEBUFFER_INCOMPLETE_VIEW_TARGETS_OVR 0x9633
/* GL_ANGLE_provoking_vertex */
#define GL_FIRST_VERTEX_CONVENTION_ANGLE 0x8E4D
#define GL_LAST_VERTEX_CONVENTION_ANGLE 0x8E4E
#define GL_PROVOKING_VERTEX_ANGLE 0x8E4F
/* GL_ANGLE_polygon_mode */
#define GL_POLYGON_MODE_ANGLE 0x0B40
#define GL_LINE_ANGLE 0x1B01
#define GL_FILL_ANGLE 0x1B02
#define GL_POLYGON_OFFSET_LINE_ANGLE 0x2A02
/* Function prototypes. First an intersection of GL 1.0 / 1.1 functions that /* Function prototypes. First an intersection of GL 1.0 / 1.1 functions that
are also available in ES, which we can access directly. ES 3.2 doesn't add are also available in ES, which we can access directly. ES 3.2 doesn't add
anything new that would be in GL 1.1, so that section is omitted here. */ anything new that would be in GL 1.1, so that section is omitted here. */
@ -1792,6 +1819,14 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei); void(APIENTRY *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei);
/* GL_ANGLE_polygon_mode */
void(APIENTRY *PolygonModeANGLE)(GLenum, GLenum);
/* GL_ANGLE_provoking_vertex */
void(APIENTRY *ProvokingVertexANGLE)(GLenum);
/* GL_ES_VERSION_2_0 */ /* GL_ES_VERSION_2_0 */
void(APIENTRY *ActiveTexture)(GLenum); void(APIENTRY *ActiveTexture)(GLenum);
@ -2114,6 +2149,13 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *); void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean); void(APIENTRY *TexStorage3DMultisample)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
/* GL_EXT_blend_func_extended */
void(APIENTRY *BindFragDataLocationEXT)(GLuint, GLuint, const GLchar *);
void(APIENTRY *BindFragDataLocationIndexedEXT)(GLuint, GLuint, GLuint, const GLchar *);
GLint(APIENTRY *GetFragDataIndexEXT)(GLuint, const GLchar *);
GLint(APIENTRY *GetProgramResourceLocationIndexEXT)(GLuint, GLenum, const GLchar *);
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum); void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
@ -2351,6 +2393,14 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE #define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE #define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_ANGLE_provoking_vertex */
#define glProvokingVertexANGLE flextGL.ProvokingVertexANGLE
/* GL_ES_VERSION_2_0 */ /* GL_ES_VERSION_2_0 */
#define glActiveTexture flextGL.ActiveTexture #define glActiveTexture flextGL.ActiveTexture
@ -2673,6 +2723,13 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv #define glTexParameterIuiv flextGL.TexParameterIuiv
#define glTexStorage3DMultisample flextGL.TexStorage3DMultisample #define glTexStorage3DMultisample flextGL.TexStorage3DMultisample
/* GL_EXT_blend_func_extended */
#define glBindFragDataLocationEXT flextGL.BindFragDataLocationEXT
#define glBindFragDataLocationIndexedEXT flextGL.BindFragDataLocationIndexedEXT
#define glGetFragDataIndexEXT flextGL.GetFragDataIndexEXT
#define glGetProgramResourceLocationIndexEXT flextGL.GetProgramResourceLocationIndexEXT
/* GL_EXT_clip_control */ /* GL_EXT_clip_control */
#define glClipControlEXT flextGL.ClipControlEXT #define glClipControlEXT flextGL.ClipControlEXT

Loading…
Cancel
Save