diff --git a/Doxyfile b/Doxyfile
index 3cf913f0b..0335627a3 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -262,6 +262,7 @@ ALIASES = \
"requires_extension=@xrefitem requires-extension \"Requires OpenGL extension\" \"Functionality requiring specific OpenGL extension\"" \
"extension{2}=\1_\2" \
"extension2{2}=\1_\2" \
+ "extension3{3}=\1_\2" \
"requires_gles30=@xrefitem requires-gles30 \"Requires OpenGL ES 3.0\" \"Functionality requiring OpenGL ES 3.0\"" \
"requires_gles31=@xrefitem requires-gles31 \"Requires OpenGL ES 3.1\" \"Functionality requiring OpenGL ES 3.1\"" \
"requires_gl=@xrefitem requires-gl \"Requires desktop OpenGL\" \"Functionality requiring desktop OpenGL (not available in OpenGL ES)\"" \
diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox
index c41f88abe..3a3ad8c25 100644
--- a/doc/opengl-support.dox
+++ b/doc/opengl-support.dox
@@ -230,7 +230,26 @@ GLSL 4.50 | done
@extension{KHR,context_flush_control} (also in ES) | |
@extension{KHR,robustness} (also in ES) | |
-@subsection opengl-support-extensions OpenGL extensions
+@subsection opengl-support-extensions ARB / Khronos OpenGL extensions
+
+%Extension | Status
+------------------------------------------- | ------
+@extension{ARB,robustness} | done
+@extension3{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} (also in ES) | |
+@extension{KHR,texture_compression_astc_hdr} (also in ES) | |
+@extension{ARB,robustness_isolation} | |
+@extension{ARB,bindless_texture} | |
+@extension{ARB,compute_variable_group_size} | |
+@extension{ARB,indirect_parameters} | |
+@extension{ARB,seamless_cubemap_per_texture} | |
+@extension{ARB,shader_draw_parameters} | done (shading language only)
+@extension{ARB,shader_group_vote} | done (shading language only)
+@extension{ARB,sparse_texture} | |
+@extension{ARB,pipeline_statistics_query} | |
+@extension{ARB,sparse_buffer} | |
+@extension{ARB,transform_feedback_overflow_query} | |
+
+@subsection opengl-support-extensions-vendor Vendor OpenGL extensions
@todo @extension{ARB,sparse_texture}, @extension{ARB,bindless_texture} + their vendor equivalents
@todo @extension{ATI,meminfo}, @extension{NVX,gpu_memory_info}, GPU temperature
@@ -240,7 +259,6 @@ GLSL 4.50 | done
------------------------------------------- | ------
@extension{AMD,vertex_shader_layer} | done (shading language only)
@extension{AMD,shader_trinary_minmax} | done (shading language only)
-@extension{ARB,robustness} | done
@extension{ATI,texture_mirror_once} | done (GL 4.4 subset)
@extension{EXT,texture_filter_anisotropic} (also in ES) | done
@extension{EXT,texture_mirror_clamp} | only GL 4.4 subset
@@ -333,6 +351,7 @@ Only extensions not already listed in above tables are included here.
@es_extension{EXT,sRGB} | done
@es_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage
@es_extension{EXT,robustness} | done
+@es_extension{KHR,robust_buffer_access_behavior} | done (nothing to do)
@es_extension2{NV,read_buffer_front,NV_read_buffer} | done
@es_extension2{NV,read_depth,NV_read_depth_stencil} | done
@es_extension2{NV,read_stencil,NV_read_depth_stencil} | done
@@ -380,7 +399,14 @@ add any performance gains, is not supported in %Magnum. See also
- Direct vertex data specification (as opposed to using buffers) is not
supported, as it encourages bad practices.
-@subsection opengl-unsupported-extensions Unsupported extensions
+@subsection opengl-unsupported-extensions Unsupported ARB / Khronos extensions
+
+- @extension{ARB,shading_language_include} is overly complicated and
+ supported exclusively by NVidia
+- @extension{ARB,cl_event} seems to be not supported anywhere
+- @extension{ARB,shader_stencil_export} is supported exclusively by AMD
+
+@subsection opengl-unsupported-extensions-vendor Unsupported vendor extensions
- @extension{INTEL,map_texture} negatively affects texture access
performance. Combination of buffer mapping and pixel buffers might be of
diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp
index 9fd8c97c7..9e2062824 100644
--- a/src/Magnum/Context.cpp
+++ b/src/Magnum/Context.cpp
@@ -62,6 +62,17 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,AMD,vertex_shader_layer),
_extension(GL,AMD,shader_trinary_minmax),
_extension(GL,ARB,robustness),
+ _extension(GL,ARB,robustness_isolation),
+ _extension(GL,ARB,bindless_texture),
+ _extension(GL,ARB,compute_variable_group_size),
+ _extension(GL,ARB,indirect_parameters),
+ _extension(GL,ARB,seamless_cubemap_per_texture),
+ _extension(GL,ARB,shader_draw_parameters),
+ _extension(GL,ARB,shader_group_vote),
+ _extension(GL,ARB,sparse_texture),
+ _extension(GL,ARB,pipeline_statistics_query),
+ _extension(GL,ARB,sparse_buffer),
+ _extension(GL,ARB,transform_feedback_overflow_query),
_extension(GL,ATI,texture_mirror_once),
_extension(GL,EXT,texture_filter_anisotropic),
_extension(GL,EXT,texture_mirror_clamp),
@@ -70,7 +81,9 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,EXT,shader_integer_mix),
_extension(GL,EXT,debug_label),
_extension(GL,EXT,debug_marker),
- _extension(GL,GREMEDY,string_marker)};
+ _extension(GL,GREMEDY,string_marker),
+ _extension(GL,KHR,texture_compression_astc_ldr),
+ _extension(GL,KHR,texture_compression_astc_hdr)};
static const std::vector extensions300{
_extension(GL,ARB,map_buffer_range),
_extension(GL,ARB,color_buffer_float),
@@ -217,9 +230,12 @@ const std::vector& Extension::extensions(Version version) {
_extension(GL,EXT,sRGB),
_extension(GL,EXT,multisampled_render_to_texture),
_extension(GL,EXT,robustness),
+ _extension(GL,KHR,texture_compression_astc_ldr),
+ _extension(GL,KHR,texture_compression_astc_hdr),
_extension(GL,KHR,debug),
- _extension(GL,KHR,context_flush_control),
_extension(GL,KHR,robustness),
+ _extension(GL,KHR,robust_buffer_access_behavior),
+ _extension(GL,KHR,context_flush_control),
_extension(GL,NV,read_buffer_front),
_extension(GL,NV,read_depth),
_extension(GL,NV,read_stencil),
diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h
index bb2d8b7c3..262779e5d 100644
--- a/src/Magnum/Extensions.h
+++ b/src/Magnum/Extensions.h
@@ -145,6 +145,7 @@ namespace GL {
_extension(GL,ARB,copy_image, GL210, GL430) // #123
_extension(GL,ARB,texture_view, GL210, GL430) // #124
_extension(GL,ARB,vertex_attrib_binding, GL210, GL430) // #125
+ _extension(GL,ARB,robustness_isolation, GL210, None) // #126
_extension(GL,ARB,ES3_compatibility, GL330, GL430) // #127
_extension(GL,ARB,explicit_uniform_location, GL210, GL430) // #128
_extension(GL,ARB,fragment_layer_viewport, GL300, GL430) // #129
@@ -168,6 +169,13 @@ namespace GL {
_extension(GL,ARB,texture_mirror_clamp_to_edge, GL210, GL440) // #149
_extension(GL,ARB,texture_stencil8, GL210, GL440) // #150
_extension(GL,ARB,vertex_type_10f_11f_11f_rev, GL300, GL440) // #151
+ _extension(GL,ARB,bindless_texture, GL400, None) // #152
+ _extension(GL,ARB,compute_variable_group_size, GL420, None) // #153
+ _extension(GL,ARB,indirect_parameters, GL420, None) // #154
+ _extension(GL,ARB,seamless_cubemap_per_texture, GL320, None) // #155
+ _extension(GL,ARB,shader_draw_parameters, GL310, None) // #156
+ _extension(GL,ARB,shader_group_vote, GL420, None) // #157
+ _extension(GL,ARB,sparse_texture, GL210, None) // #158
_extension(GL,ARB,ES3_1_compatibility, GL440, GL450) // #159
_extension(GL,ARB,clip_control, GL210, GL450) // #160
_extension(GL,ARB,conditional_render_inverted, GL300, GL450) // #161
@@ -177,6 +185,9 @@ namespace GL {
_extension(GL,ARB,get_texture_sub_image, GL210, GL450) // #165
_extension(GL,ARB,shader_texture_image_samples, GL430, GL450) // #166
_extension(GL,ARB,texture_barrier, GL210, GL450) // #167
+ _extension(GL,ARB,pipeline_statistics_query, GL300, None) // #171
+ _extension(GL,ARB,sparse_buffer, GL210, None) // #172
+ _extension(GL,ARB,transform_feedback_overflow_query, GL300, None) // #173
} namespace ATI {
_extension(GL,ATI,texture_mirror_once, GL210, None) // #221
} namespace EXT {
@@ -201,9 +212,9 @@ namespace GL {
_extension(GL,EXT,debug_marker, GL210, None) // #440
} namespace GREMEDY {
_extension(GL,GREMEDY,string_marker, GL210, None) // #311
- } namespace INTEL {
- /* INTEL_map_texture not supported */ // #429
} namespace KHR {
+ _extension(GL,KHR,texture_compression_astc_ldr, GL210, None) // #118
+ _extension(GL,KHR,texture_compression_astc_hdr, GL210, None) // #118
_extension(GL,KHR,debug, GL210, GL430) // #119
_extension(GL,KHR,context_flush_control, GL210, GL450) // #168
_extension(GL,KHR,robustness, GL320, GL450) // #170
@@ -213,7 +224,7 @@ namespace GL {
_extension(GL,NV,conditional_render, GL210, GL300) // #346
/* NV_draw_texture not supported */ // #430
}
- /* IMPORTANT: if this line is > 226 (66 + size), don't forget to update array size in Context.h */
+ /* IMPORTANT: if this line is > 233 (73 + size), don't forget to update array size in Context.h */
#else
#line 1
namespace ANGLE {
@@ -279,8 +290,11 @@ namespace GL {
_extension(GL,EXT,shader_integer_mix, GLES300, None) // #161
#endif
} namespace KHR {
+ _extension(GL,KHR,texture_compression_astc_ldr, GLES200, None) // #117
+ _extension(GL,KHR,texture_compression_astc_hdr, GLES200, None) // #117
_extension(GL,KHR,debug, GLES200, None) // #118
_extension(GL,KHR,robustness, GLES200, None) // #170
+ _extension(GL,KHR,robust_buffer_access_behavior, GLES200, None) // #189
_extension(GL,KHR,context_flush_control, GLES200, None) // #191
} namespace NV {
#ifdef MAGNUM_TARGET_GLES2