From 1d8b0ba26897e0619ce2078a4cd4ed101c66c3d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 14 Sep 2014 19:46:00 +0200 Subject: [PATCH] Added remaining non-core ARB/KHR extensions to the list. --- Doxyfile | 1 + doc/opengl-support.dox | 32 +++++++++++++++++++++++++++++--- src/Magnum/Context.cpp | 20 ++++++++++++++++++-- src/Magnum/Extensions.h | 20 +++++++++++++++++--- 4 files changed, 65 insertions(+), 8 deletions(-) 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