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
@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_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,clip_distance} | done
@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_sRGB_R8} | done
@gl_extension{EXT,texture_sRGB_RG8} | done
@gl_extension{EXT,blend_func_extended} | |
@gl_extension{EXT,polygon_offset_clamp} | |
@gl_extension{EXT,clip_cull_distance} | done
@gl_extension{EXT,texture_compression_rgtc} | done
@gl_extension{EXT,texture_compression_bptc} | done
@gl_extension{EXT,texture_compression_s3tc_srgb} | done
@gl_extension{EXT,clip_control} | done
@gl_extension{EXT,texture_mirror_clamp_to_edge} | |
@gl_extension{EXT,depth_clamp} | done
@gl_extension{IMG,texture_compression_pvrtc} | 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_bptc} | 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{NV,shader_noperspective_interpolation} | done (shading language only)
@webgl_extension{OES,texture_float_linear} | done
@webgl_extension{OES,draw_buffers_indexed} \n (originally named `EXT_draw_buffers_indexed`) | done
@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,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

18
src/Magnum/GL/Context.cpp

@ -271,6 +271,7 @@ constexpr Extension ExtensionList460[]{
};
#elif defined(MAGNUM_TARGET_WEBGL)
constexpr Extension ExtensionList[]{
Extensions::EXT::clip_control{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::clip_cull_distance{},
#endif
@ -278,6 +279,7 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::color_buffer_float{},
#endif
Extensions::EXT::color_buffer_half_float{},
Extensions::EXT::depth_clamp{},
#ifdef MAGNUM_TARGET_GLES2
Extensions::EXT::disjoint_timer_query{},
#endif
@ -288,14 +290,17 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::draw_buffers_indexed{},
#endif
Extensions::EXT::float_blend{},
Extensions::EXT::polygon_offset_clamp{},
Extensions::EXT::texture_compression_bptc{},
Extensions::EXT::texture_compression_rgtc{},
Extensions::EXT::texture_filter_anisotropic{},
Extensions::EXT::texture_mirror_clamp_to_edge{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::texture_norm16{},
#endif
Extensions::KHR::parallel_shader_compile{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::NV::shader_noperspective_interpolation{},
Extensions::OES::draw_buffers_indexed{},
#endif
Extensions::OES::texture_float_linear{},
@ -303,6 +308,7 @@ constexpr Extension ExtensionList[]{
Extensions::OVR::multiview2{},
#endif
Extensions::WEBGL::blend_equation_advanced_coherent{},
Extensions::WEBGL::blend_func_extended{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::clip_cull_distance{},
#endif
@ -321,6 +327,11 @@ constexpr Extension ExtensionList[]{
#ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::multi_draw_instanced_base_vertex_base_instance{},
#endif
Extensions::WEBGL::polygon_mode{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::WEBGL::provoking_vertex{},
Extensions::WEBGL::stencil_texturing{},
#endif
};
constexpr Extension ExtensionListES300[]{
#ifdef MAGNUM_TARGET_GLES2
@ -356,6 +367,11 @@ constexpr Extension ExtensionList[]{
#endif
Extensions::ANGLE::compressed_texture_etc{},
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_dxt3{},
Extensions::ANGLE::texture_compression_dxt5{},
@ -363,6 +379,7 @@ constexpr Extension ExtensionList[]{
Extensions::APPLE::texture_format_BGRA8888{},
Extensions::ARM::shader_framebuffer_fetch{},
Extensions::ARM::shader_framebuffer_fetch_depth_stencil{},
Extensions::EXT::blend_func_extended{},
Extensions::EXT::clip_control{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::clip_cull_distance{},
@ -395,6 +412,7 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::texture_compression_s3tc_srgb{},
Extensions::EXT::texture_filter_anisotropic{},
Extensions::EXT::texture_format_BGRA8888{},
Extensions::EXT::texture_mirror_clamp_to_edge{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::texture_norm16{},
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 */
_extension(16,EXT,draw_buffers_indexed, GLES300, None) // #45
#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 {
_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 {
#ifdef MAGNUM_TARGET_GLES2
_extension(20,OES,texture_float, GLES200, GLES300) // #1
_extension(21,OES,texture_half_float, GLES200, GLES300) // #2
_extension(22,OES,standard_derivatives, GLES200, GLES300) // #4
_extension(23,OES,vertex_array_object, GLES200, GLES300) // #5
_extension(24,OES,element_index_uint, GLES200, GLES300) // #10
_extension(30,OES,texture_float, GLES200, GLES300) // #1
_extension(31,OES,texture_half_float, GLES200, GLES300) // #2
_extension(32,OES,standard_derivatives, GLES200, GLES300) // #4
_extension(33,OES,vertex_array_object, GLES200, GLES300) // #5
_extension(34,OES,element_index_uint, GLES200, GLES300) // #10
#endif
_extension(25,OES,texture_float_linear, GLES200, None) // #20
_extension(35,OES,texture_float_linear, GLES200, None) // #20
#ifdef MAGNUM_TARGET_GLES2
_extension(26,OES,texture_half_float_linear, GLES200, GLES300) // #21
_extension(27,OES,fbo_render_mipmap, GLES200, GLES300) // #28
_extension(36,OES,texture_half_float_linear, GLES200, GLES300) // #21
_extension(37,OES,fbo_render_mipmap, GLES200, GLES300) // #28
#endif
#ifndef MAGNUM_TARGET_GLES2
/* This one was renamed from EXT_draw_buffers_indexed in March 2020,
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
} namespace OVR {
#ifndef MAGNUM_TARGET_GLES2
_extension(30,OVR,multiview2, GLES300, None) // #36
_extension(40,OVR,multiview2, GLES300, None) // #36
#endif
} namespace WEBGL {
_extension(31,WEBGL,lose_context, GLES200, None) // #3
_extension(32,WEBGL,debug_renderer_info, GLES200, None) // #6
_extension(33,WEBGL,debug_shaders, GLES200, None) // #7
_extension(34,WEBGL,compressed_texture_s3tc, GLES200, None) // #8
_extension(41,WEBGL,lose_context, GLES200, None) // #3
_extension(42,WEBGL,debug_renderer_info, GLES200, None) // #6
_extension(43,WEBGL,debug_shaders, GLES200, None) // #7
_extension(44,WEBGL,compressed_texture_s3tc, GLES200, None) // #8
#ifdef MAGNUM_TARGET_GLES2
_extension(35,WEBGL,depth_texture, GLES200, GLES300) // #9
_extension(45,WEBGL,depth_texture, GLES200, GLES300) // #9
#endif
_extension(36,WEBGL,compressed_texture_pvrtc, GLES200, None) // #13
_extension(46,WEBGL,compressed_texture_pvrtc, GLES200, None) // #13
#ifdef MAGNUM_TARGET_GLES2
/* 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 */
_extension(37,WEBGL,color_buffer_float, GLES200, None) // #14
_extension(38,WEBGL,draw_buffers, GLES200, GLES300) // #18
_extension(47,WEBGL,color_buffer_float, GLES200, None) // #14
_extension(48,WEBGL,draw_buffers, GLES200, GLES300) // #18
#endif
/* WEBGL_compressed_texture_etc1 (24) not exposed as the ES
OES_compressed_ETC1_RGB8_texture extension isn't exposed either */
_extension(39,WEBGL,compressed_texture_etc, GLES200, None) // #29
_extension(40,WEBGL,compressed_texture_astc, GLES200, None) // #30
_extension(41,WEBGL,compressed_texture_s3tc_srgb, GLES200, None) // #32
_extension(42,WEBGL,multi_draw, GLES200, None) // #40
_extension(43,WEBGL,blend_equation_advanced_coherent,GLES200,None) // #42
_extension(49,WEBGL,compressed_texture_etc, GLES200, None) // #29
_extension(50,WEBGL,compressed_texture_astc, GLES200, None) // #30
_extension(51,WEBGL,compressed_texture_s3tc_srgb, GLES200, None) // #32
_extension(52,WEBGL,multi_draw, GLES200, None) // #40
_extension(53,WEBGL,blend_equation_advanced_coherent,GLES200,None) // #42
#ifndef MAGNUM_TARGET_GLES2
/* This one was renamed from EXT_clip_cull_distance in January 2023,
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
_extension(58,WEBGL,polygon_mode, GLES200, None) // #53
_extension(59,WEBGL,blend_func_extended, GLES200, None) // #58
#ifndef MAGNUM_TARGET_GLES2
_extension(45,WEBGL,draw_instanced_base_vertex_base_instance,GLES300,None) // #46
_extension(46,WEBGL,multi_draw_instanced_base_vertex_base_instance,GLES300,None) // #47
/* WEBGL_render_shared_exponent (60) not exposed, as the ES
QCOM_render_shared_exponent extension isn't exposed yet either */
_extension(60,WEBGL,stencil_texturing, GLES300, None) // #61
#endif
} namespace MAGNUM {
#ifndef MAGNUM_TARGET_GLES2
_extension(47,MAGNUM,shader_vertex_id, GLES300, GLES300)
_extension(61,MAGNUM,shader_vertex_id, GLES300, GLES300)
#endif
}
#else
@ -399,119 +417,128 @@ namespace ANDROID {
_extension( 10,ANGLE,base_vertex_base_instance, GLES300, None) // #???
#endif
_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 {
#ifdef MAGNUM_TARGET_GLES2
_extension( 12,APPLE,framebuffer_multisample, GLES200, GLES300) // #78
_extension( 20,APPLE,framebuffer_multisample, GLES200, GLES300) // #78
#endif
_extension( 13,APPLE,texture_format_BGRA8888, GLES200, None) // #79
_extension( 21,APPLE,texture_format_BGRA8888, GLES200, None) // #79
#ifdef MAGNUM_TARGET_GLES2
_extension( 14,APPLE,texture_max_level, GLES200, GLES300) // #80
_extension( 22,APPLE,texture_max_level, GLES200, GLES300) // #80
#endif
_extension( 15,APPLE,clip_distance, GLES200, None) // #193
_extension( 23,APPLE,clip_distance, GLES200, None) // #193
} namespace ARM {
#ifdef MAGNUM_TARGET_GLES2
_extension( 16,ARM,rgba8, GLES200, GLES300) // #82
_extension( 24,ARM,rgba8, GLES200, GLES300) // #82
#endif
_extension( 17,ARM,shader_framebuffer_fetch, GLES200, None) // #165
_extension( 18,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166
_extension( 25,ARM,shader_framebuffer_fetch, GLES200, None) // #165
_extension( 26,ARM,shader_framebuffer_fetch_depth_stencil, GLES200, None) // #166
} namespace EXT {
_extension( 19,EXT,texture_filter_anisotropic, GLES200, None) // #41
_extension( 30,EXT,texture_filter_anisotropic, GLES200, None) // #41
#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
_extension( 21,EXT,texture_compression_dxt1, GLES200, None) // #49
_extension( 22,EXT,texture_format_BGRA8888, GLES200, None) // #51
_extension( 32,EXT,texture_compression_dxt1, GLES200, None) // #49
_extension( 33,EXT,texture_format_BGRA8888, GLES200, None) // #51
#ifdef MAGNUM_TARGET_GLES2
_extension( 23,EXT,discard_framebuffer, GLES200, GLES300) // #64
_extension( 24,EXT,blend_minmax, GLES200, GLES300) // #65
_extension( 34,EXT,discard_framebuffer, GLES200, GLES300) // #64
_extension( 35,EXT,blend_minmax, GLES200, GLES300) // #65
#endif
_extension( 25,EXT,read_format_bgra, GLES200, None) // #66
_extension( 26,EXT,multi_draw_arrays, GLES200, None) // #67
_extension( 36,EXT,read_format_bgra, GLES200, None) // #66
_extension( 37,EXT,multi_draw_arrays, GLES200, None) // #67
#ifdef MAGNUM_TARGET_GLES2
_extension( 27,EXT,shader_texture_lod, GLES200, GLES300) // #77
_extension( 28,EXT,unpack_subimage, GLES200, GLES300) // #90
_extension( 38,EXT,shader_texture_lod, GLES200, GLES300) // #77
_extension( 39,EXT,unpack_subimage, GLES200, GLES300) // #90
#endif
_extension( 29,EXT,color_buffer_half_float, GLES200, GLES320) // #97
_extension( 30,EXT,debug_label, GLES200, None) // #98
_extension( 31,EXT,debug_marker, GLES200, None) // #99
_extension( 40,EXT,color_buffer_half_float, GLES200, GLES320) // #97
_extension( 41,EXT,debug_label, GLES200, None) // #98
_extension( 42,EXT,debug_marker, GLES200, None) // #99
#ifdef MAGNUM_TARGET_GLES2
_extension( 32,EXT,occlusion_query_boolean, GLES200, GLES300) // #100
_extension( 43,EXT,occlusion_query_boolean, GLES200, GLES300) // #100
#endif
_extension( 33,EXT,separate_shader_objects, GLES200, None) // #101
_extension( 44,EXT,separate_shader_objects, GLES200, None) // #101
#ifdef MAGNUM_TARGET_GLES2
_extension( 34,EXT,shadow_samplers, GLES200, GLES300) // #102
_extension( 35,EXT,texture_rg, GLES200, GLES300) // #103
_extension( 36,EXT,sRGB, GLES200, GLES300) // #105
_extension( 45,EXT,shadow_samplers, GLES200, GLES300) // #102
_extension( 46,EXT,texture_rg, GLES200, GLES300) // #103
_extension( 47,EXT,sRGB, GLES200, GLES300) // #105
#endif
_extension( 37,EXT,multisampled_render_to_texture, GLES200, None) // #106
_extension( 38,EXT,robustness, GLES200, None) // #107
_extension( 48,EXT,multisampled_render_to_texture, GLES200, None) // #106
_extension( 49,EXT,robustness, GLES200, None) // #107
#ifdef MAGNUM_TARGET_GLES2
_extension( 39,EXT,texture_storage, GLES200, GLES300) // #108
_extension( 40,EXT,map_buffer_range, GLES200, GLES300) // #121
_extension( 50,EXT,texture_storage, GLES200, GLES300) // #108
_extension( 51,EXT,map_buffer_range, GLES200, GLES300) // #121
#endif
_extension( 41,EXT,shader_framebuffer_fetch, GLES200, None) // #122
_extension( 52,EXT,shader_framebuffer_fetch, GLES200, None) // #122
#ifndef MAGNUM_TARGET_GLES2
_extension( 42,EXT,color_buffer_float, GLES300, GLES320) // #137
_extension( 53,EXT,color_buffer_float, GLES300, GLES320) // #137
#endif
_extension( 43,EXT,disjoint_timer_query, GLES200, None) // #150
_extension( 54,EXT,disjoint_timer_query, GLES200, None) // #150
#ifdef MAGNUM_TARGET_GLES2
_extension( 44,EXT,draw_buffers, GLES200, GLES300) // #151
_extension( 55,EXT,draw_buffers, GLES200, GLES300) // #151
#endif
_extension( 45,EXT,texture_sRGB_decode, GLES200, None) // #152
_extension( 46,EXT,sRGB_write_control, GLES200, None) // #153
_extension( 47,EXT,texture_compression_s3tc, GLES200, None) // #154
_extension( 48,EXT,pvrtc_sRGB, GLES200, None) // #155
_extension( 56,EXT,texture_sRGB_decode, GLES200, None) // #152
_extension( 57,EXT,sRGB_write_control, GLES200, None) // #153
_extension( 58,EXT,texture_compression_s3tc, GLES200, None) // #154
_extension( 59,EXT,pvrtc_sRGB, GLES200, None) // #155
#ifdef MAGNUM_TARGET_GLES2
_extension( 49,EXT,instanced_arrays, GLES200, GLES300) // #156
_extension( 50,EXT,draw_instanced, GLES200, GLES300) // #157
_extension( 60,EXT,instanced_arrays, GLES200, GLES300) // #156
_extension( 61,EXT,draw_instanced, GLES200, GLES300) // #157
#endif
#ifndef MAGNUM_TARGET_GLES2
_extension( 51,EXT,shader_integer_mix, GLES300, None) // #161
_extension( 52,EXT,copy_image, GLES300, GLES320) // #175
_extension( 62,EXT,shader_integer_mix, GLES300, None) // #161
_extension( 63,EXT,copy_image, GLES300, GLES320) // #175
#endif
_extension( 53,EXT,draw_buffers_indexed, GLES200, GLES320) // #176
_extension( 64,EXT,draw_buffers_indexed, GLES200, GLES320) // #176
#ifndef MAGNUM_TARGET_GLES2
_extension( 54,EXT,geometry_shader, GLES310, GLES320) // #177
_extension( 55,EXT,gpu_shader5, GLES310, GLES320) // #178
_extension( 56,EXT,shader_io_blocks, GLES310, GLES320) // #180
_extension( 57,EXT,tessellation_shader, GLES310, GLES320) // #181
_extension( 65,EXT,geometry_shader, GLES310, GLES320) // #177
_extension( 66,EXT,gpu_shader5, GLES310, GLES320) // #178
_extension( 67,EXT,shader_io_blocks, GLES310, GLES320) // #180
_extension( 68,EXT,tessellation_shader, GLES310, GLES320) // #181
#endif
_extension( 58,EXT,texture_border_clamp, GLES200, GLES320) // #182
_extension( 69,EXT,texture_border_clamp, GLES200, GLES320) // #182
#ifndef MAGNUM_TARGET_GLES2
_extension( 59,EXT,texture_buffer, GLES310, GLES320) // #183
_extension( 60,EXT,texture_cube_map_array, GLES310, GLES320) // #184
_extension( 61,EXT,texture_view, GLES310, None) // #185
_extension( 62,EXT,primitive_bounding_box, GLES310, GLES320) // #186
_extension( 70,EXT,texture_buffer, GLES310, GLES320) // #183
_extension( 71,EXT,texture_cube_map_array, GLES310, GLES320) // #184
_extension( 72,EXT,texture_view, GLES310, None) // #185
_extension( 73,EXT,primitive_bounding_box, GLES310, GLES320) // #186
#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
_extension( 64,EXT,texture_norm16, GLES310, None) // #207
_extension( 65,EXT,texture_sRGB_R8, GLES300, None) // #221
_extension( 66,EXT,texture_sRGB_RG8, GLES300, None) // #223
_extension( 75,EXT,texture_norm16, GLES310, None) // #207
_extension( 76,EXT,texture_sRGB_R8, GLES300, None) // #221
_extension( 77,EXT,texture_sRGB_RG8, GLES300, None) // #223
#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
_extension( 68,EXT,clip_cull_distance, GLES300, None) // #257
_extension( 69,EXT,texture_compression_rgtc, GLES300, None) // #286
_extension( 70,EXT,texture_compression_bptc, GLES300, None) // #287
#endif
_extension( 71,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289
_extension( 72,EXT,clip_control, GLES200, None) // #290
_extension( 73,EXT,depth_clamp, GLES200, None) // #309
_extension( 80,EXT,clip_cull_distance, GLES300, None) // #257
_extension( 81,EXT,texture_compression_rgtc, GLES300, None) // #286
_extension( 82,EXT,texture_compression_bptc, GLES300, None) // #287
#endif
_extension( 83,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289
_extension( 84,EXT,clip_control, GLES200, None) // #290
_extension( 85,EXT,texture_mirror_clamp_to_edge, GLES200, None) // #291
_extension( 86,EXT,depth_clamp, GLES200, None) // #309
} namespace IMG {
_extension( 74,IMG,texture_compression_pvrtc, GLES200, None) // #54
_extension( 87,IMG,texture_compression_pvrtc, GLES200, None) // #54
} namespace KHR {
_extension( 80,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117
_extension( 81,KHR,texture_compression_astc_hdr,GLES200, None) // #117
_extension( 82,KHR,debug, GLES200, GLES320) // #118
_extension( 83,KHR,blend_equation_advanced, GLES200, GLES320) // #168
_extension( 84,KHR,blend_equation_advanced_coherent, GLES200, None) // #168
_extension( 85,KHR,robustness, GLES200, GLES320) // #170
_extension( 86,KHR,robust_buffer_access_behavior, GLES200, GLES320) // #189
_extension( 87,KHR,context_flush_control, GLES200, None) // #191
_extension( 88,KHR,no_error, GLES200, None) // #243
_extension( 89,KHR,texture_compression_astc_sliced_3d, GLES200, None) // #249
_extension( 90,KHR,parallel_shader_compile, GLES200, None) // #288
_extension( 89,KHR,texture_compression_astc_ldr,GLES200, GLES320) // #117
_extension( 90,KHR,texture_compression_astc_hdr,GLES200, None) // #117
_extension( 91,KHR,debug, GLES200, GLES320) // #118
_extension( 92,KHR,blend_equation_advanced, GLES200, GLES320) // #168
_extension( 93,KHR,blend_equation_advanced_coherent, GLES200, None) // #168
_extension( 94,KHR,robustness, GLES200, GLES320) // #170
_extension( 95,KHR,robust_buffer_access_behavior, GLES200, GLES320) // #189
_extension( 96,KHR,context_flush_control, GLES200, None) // #191
_extension( 97,KHR,no_error, GLES200, None) // #243
_extension( 98,KHR,texture_compression_astc_sliced_3d, GLES200, None) // #249
_extension( 99,KHR,parallel_shader_compile, GLES200, None) // #288
} namespace NV {
#ifdef MAGNUM_TARGET_GLES2
_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)
160
#else
48
64
#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_texture_compression_rgtc 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_texture_compression_s3tc 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 KHR_texture_compression_astc_ldr optional
@ -53,7 +60,18 @@ extension ANGLE_base_vertex_base_instance optional
# GOOGLE!!!
# 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
# Not present in WebGL variant of EXT_blend_func_extended
BindFragDataLocationEXT
BindFragDataLocationIndexedEXT
GetFragDataIndexEXT
GetProgramResourceLocationIndexEXT
# Not present in WEBGL_blend_equation_advanced_coherent
BlendBarrierKHR
# 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_pvrtc_sRGB optional
extension EXT_draw_elements_base_vertex optional
extension EXT_blend_func_extended optional
extension EXT_polygon_offset_clamp optional
extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional
extension EXT_texture_mirror_clamp_to_edge optional
extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc 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
# hardcode the numeric values there. GOOGLE!!!
# extension ANGLE_compressed_texture_etc optional
extension ANGLE_polygon_mode optional
begin functions blacklist
# These are listed in EXT_separate_shader_objects with only the comment
@ -156,6 +159,12 @@ begin functions blacklist
TextureStorage2DEXT
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
DrawRangeElementsBaseVertexEXT
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_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 */
#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_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */
#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
/* 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 */
/* GL_ES_VERSION_2_0 */
@ -1260,6 +1281,10 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, 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 */
void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
@ -1518,6 +1543,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_APPLE_framebuffer_multisample */
#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_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 */
#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.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 */
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE"));
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 glMultiDrawElementsANGLE
#undef glMultiDrawElementsInstancedANGLE
#undef glPolygonModeANGLE
#undef glRenderbufferStorageMultisampleAPPLE
#undef glResolveMultisampleFramebufferAPPLE
#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);
#endif
/* GL_ANGLE_polygon_mode */
#if GL_ANGLE_polygon_mode
flextGL.PolygonModeANGLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum)>(glPolygonModeANGLE);
#endif
/* GL_APPLE_framebuffer_multisample */
#if GL_APPLE_framebuffer_multisample
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.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 */
flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleAPPLE"));
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_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 */
#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_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */
#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
/* 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
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 *MultiDrawElementsInstancedANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, const GLsizei*, GLsizei);
/* GL_ANGLE_polygon_mode */
void(APIENTRY *PolygonModeANGLE)(GLenum, GLenum);
/* GL_APPLE_framebuffer_multisample */
void(APIENTRY *RenderbufferStorageMultisampleAPPLE)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
@ -1518,6 +1543,10 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#define glMultiDrawElementsInstancedANGLE flextGL.MultiDrawElementsInstancedANGLE
/* GL_ANGLE_polygon_mode */
#define glPolygonModeANGLE flextGL.PolygonModeANGLE
/* GL_APPLE_framebuffer_multisample */
#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
extension OVR_multiview 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_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 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
# barrier
@ -36,13 +45,26 @@ extension KHR_parallel_shader_compile optional
# From the gl_angle_ext file, base for WEBGL_multi_draw etc
extension ANGLE_multi_draw 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
# fortunately ES3 defines these constants on its own so I don't need it anyway.
# extension ANGLE_compressed_texture_etc 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
# Not present in WebGL variant of EXT_blend_func_extended
BindFragDataLocationEXT
BindFragDataLocationIndexedEXT
GetFragDataIndexEXT
GetProgramResourceLocationIndexEXT
# Not present in WEBGL_blend_equation_advanced_coherent
BlendBarrierKHR
# 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_sRGB_R8 optional
extension EXT_texture_sRGB_RG8 optional
extension EXT_blend_func_extended optional
extension EXT_polygon_offset_clamp optional
extension EXT_clip_cull_distance optional
extension EXT_texture_compression_rgtc optional
extension EXT_texture_compression_bptc optional
extension EXT_texture_compression_s3tc_srgb optional
extension EXT_clip_control optional
extension EXT_texture_mirror_clamp_to_edge optional
extension EXT_depth_clamp optional
extension IMG_texture_compression_pvrtc 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
# fortunately ES3 defines these constants on its own so I don't need it anyway.
# 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

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
/* 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 */
#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_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */
#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_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 */
/* GL_ES_VERSION_2_0 */
@ -1992,6 +2019,14 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, 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 */
void(APIENTRY *ActiveShaderProgram)(GLuint, GLuint);
@ -2110,6 +2145,13 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
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 */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
@ -2347,6 +2389,14 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#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 */
#define glActiveShaderProgram flextGL.ActiveShaderProgram
@ -2465,6 +2515,13 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv
#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 */
#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_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 */
#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_COMPLETION_STATUS_KHR 0x91B1
/* GL_ANGLE_stencil_texturing */
#define GL_DEPTH_STENCIL_TEXTURE_MODE_ANGLE 0x90EA
#define GL_STENCIL_INDEX_ANGLE 0x1901
/* Function prototypes */
/* 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.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 */
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"));
@ -161,6 +167,12 @@ void flextGLInit(Magnum::GL::Context&) {
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"));
/* 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 */
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 glMultiDrawElementsANGLE
#undef glMultiDrawElementsInstancedANGLE
#undef glPolygonModeANGLE
#undef glProvokingVertexANGLE
#undef glBindFragDataLocationEXT
#undef glBindFragDataLocationIndexedEXT
#undef glGetFragDataIndexEXT
#undef glGetProgramResourceLocationIndexEXT
#undef glClipControlEXT
#undef glCopyImageSubDataEXT
#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);
#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 */
#if GL_EXT_clip_control
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.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 */
flextGL.ActiveTexture = reinterpret_cast<void(APIENTRY*)(GLenum)>(loader.load("glActiveTexture"));
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.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 */
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
/* 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 */
#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_DEPTH_MODE_EXT 0x935D
/* GL_EXT_texture_mirror_clamp_to_edge */
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
/* GL_EXT_depth_clamp */
#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_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
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. */
@ -1792,6 +1819,14 @@ struct FlextGL {
void(APIENTRY *MultiDrawElementsANGLE)(GLenum, const GLsizei *, GLenum, const void *const*, 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 */
void(APIENTRY *ActiveTexture)(GLenum);
@ -2114,6 +2149,13 @@ struct FlextGL {
void(APIENTRY *TexParameterIuiv)(GLenum, GLenum, const GLuint *);
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 */
void(APIENTRY *ClipControlEXT)(GLenum, GLenum);
@ -2351,6 +2393,14 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glMultiDrawElementsANGLE flextGL.MultiDrawElementsANGLE
#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 */
#define glActiveTexture flextGL.ActiveTexture
@ -2673,6 +2723,13 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glTexParameterIuiv flextGL.TexParameterIuiv
#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 */
#define glClipControlEXT flextGL.ClipControlEXT

Loading…
Cancel
Save