From d34cbb73b7bee644e4dcefd9df60beaf9b85908f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 27 May 2015 19:59:08 +0200 Subject: [PATCH] Clarified and cleaned up WebGL extension support list. For more clarity it's now better to explicitly list all extensions for each API even though they might get duplicated. For WebGL they also link to WebGL spec, which might contain a bit more info. --- doc/opengl-support.dox | 75 +++++++++++++++++++++++++---------------- src/Magnum/Context.cpp | 2 +- src/Magnum/Extensions.h | 10 +++--- 3 files changed, 53 insertions(+), 34 deletions(-) diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index ad3b0a638..0b7112fa0 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -177,7 +177,7 @@ GLSL 4.30 | done @extension{ARB,clear_buffer_object} | | @extension{ARB,compute_shader} | | @extension{ARB,copy_image} | | -@extension{KHR,debug} (also in ES) | missing log retrieval, sync, pipeline and sampler label +@extension{KHR,debug} | missing log retrieval, sync, pipeline and sampler label @extension{ARB,explicit_uniform_location} | done @extension{ARB,fragment_layer_viewport} | done (shading language only) @extension{ARB,framebuffer_no_attachments} | | @@ -227,16 +227,16 @@ GLSL 4.50 | done @extension{ARB,get_texture_sub_image} | missing compressed texture queries @extension{ARB,shader_texture_image_samples} | done (shading language only) @extension{ARB,texture_barrier} | | -@extension{KHR,context_flush_control} (also in ES) | | -@extension{KHR,robustness} (also in ES) | | +@extension{KHR,context_flush_control} | | +@extension{KHR,robustness} | | @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) | | +@extension3{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | | +@extension{KHR,texture_compression_astc_hdr} | | @extension{ARB,robustness_isolation} | done @extension{ARB,bindless_texture} | | @extension{ARB,compute_variable_group_size} | | @@ -260,13 +260,13 @@ Extension | Status @extension{AMD,vertex_shader_layer} | done (shading language only) @extension{AMD,shader_trinary_minmax} | done (shading language only) @extension{ATI,texture_mirror_once} | done (GL 4.4 subset) -@extension{EXT,texture_filter_anisotropic} (also in ES, WebGL) | done +@extension{EXT,texture_filter_anisotropic} | done @extension{EXT,texture_mirror_clamp} | only GL 4.4 subset @extension{EXT,direct_state_access} | done for implemented functionality -@extension{EXT,texture_sRGB_decode} (also in ES) | done -@extension{EXT,shader_integer_mix} (also in ES) | done (shading language only) -@extension2{EXT,debug_label} (also in ES) | missing pipeline and sampler label -@extension2{EXT,debug_marker} (also in ES) | done +@extension{EXT,texture_sRGB_decode} | done +@extension{EXT,shader_integer_mix} | done (shading language only) +@extension2{EXT,debug_label} | missing pipeline and sampler label +@extension2{EXT,debug_marker} | done @extension{GREMEDY,string_marker} | done @subsection opengl-support-es20 OpenGL ES 2.0 @@ -290,15 +290,15 @@ Extension | Status ------------------------------------------- | ------ @es_extension{ANGLE,framebuffer_blit} | done @es_extension{ANGLE,framebuffer_multisample} | done -@es_extension{ANGLE,instanced_arrays} (also in WebGL 1.0) | done +@es_extension{ANGLE,instanced_arrays} | done @es_extension{ANGLE,depth_texture} | done @es_extension{APPLE,framebuffer_multisample} | done (ES 3.0 subset) @es_extension{APPLE,texture_max_level} | done @es_extension{ARM,rgba8} | done @es_extension{EXT,texture_type_2_10_10_10_REV} | done @es_extension{EXT,discard_framebuffer} | done -@es_extension2{EXT,blend_minmax,blend_minmax} (also in WebGL 1.0) | done -@es_extension{EXT,shader_texture_lod} (also in WebGL 1.0) | done (shading language only) +@es_extension2{EXT,blend_minmax,blend_minmax} | done +@es_extension{EXT,shader_texture_lod} | done (shading language only) @es_extension{EXT,occlusion_query_boolean} | done @es_extension{EXT,shadow_samplers} | done @es_extension{EXT,texture_rg} | done @@ -317,27 +317,24 @@ Extension | Status @es_extension{NV,shadow_samplers_array} | done (shading language only) @es_extension{NV,shadow_samplers_cube} | done (shading language only) @es_extension{OES,depth24} | done -@es_extension{OES,element_index_uint} (also in WebGL 1.0) | done +@es_extension{OES,element_index_uint} | done @es_extension{OES,rgb8_rgba8} | done (desktop-compatible subset) @es_extension{OES,texture_3D} | done -@es_extension2{OES,texture_half_float_linear,OES_texture_float_linear} (also in WebGL 1.0) | done -@es_extension{OES,texture_float_linear} (also in WebGL 1.0) | done -@es_extension2{OES,texture_half_float,OES_texture_float} (also in WebGL 1.0) | done -@es_extension{OES,texture_float} (also in WebGL 1.0) | done +@es_extension2{OES,texture_half_float_linear,OES_texture_float_linear} | done +@es_extension{OES,texture_float_linear} | done +@es_extension2{OES,texture_half_float,OES_texture_float} | done +@es_extension{OES,texture_float} | done @es_extension{OES,texture_npot} | done (nothing to do) @es_extension{OES,vertex_half_float} | done @es_extension{OES,packed_depth_stencil} | done @es_extension{OES,depth_texture} | done -@es_extension{OES,standard_derivatives} (also in WebGL 1,0) | done -@es_extension{OES,vertex_array_object} (also in WebGL 1.0) | done +@es_extension{OES,standard_derivatives} | done +@es_extension{OES,vertex_array_object} | done @es_extension{OES,required_internalformat} | done (desktop-compatible subset) @es_extension{OES,surfaceless_context} | done @subsection opengl-support-es-extensions OpenGL ES extensions to match desktop functionality -Only extensions not already listed in above tables (marked with *also in ES*) -are included here. - @todo @es_extension{NV,non_square_matrices} @todo Support also IMG_multisampled_render_to_texture? It has different enum values (!) @@ -346,15 +343,25 @@ Extension | Status ------------------------------------------- | ------ @es_extension{APPLE,texture_format_BGRA8888} | done @es_extension{CHROMIUM,map_sub} (NaCl only) | only buffer mapping +@es_extension{EXT,texture_filter_anisotropic} | done @es_extension{EXT,texture_format_BGRA8888} | done @es_extension{EXT,read_format_bgra} | done @es_extension2{EXT,multi_draw_arrays,multi_draw_arrays} | done -@es_extension{EXT,disjoint_timer_query} | only time elapsed query +@es_extension{EXT,debug_label} | see above +@es_extension{EXT,debug_marker} | done @es_extension{EXT,separate_shader_objects} | only direct uniform binding @es_extension{EXT,sRGB} | done @es_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage @es_extension{EXT,robustness} | done +@es_extension{EXT,disjoint_timer_query} | only time elapsed query +@es_extension{EXT,texture_sRGB_decode} | done +@es_extension{EXT,shader_integer_mix} | done (shading language only) +@extension3{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | | +@extension{KHR,texture_compression_astc_hdr} | | +@es_extension{KHR,debug} | see above +@es_extension{KHR,robustness} | | @es_extension{KHR,robust_buffer_access_behavior} | done (nothing to do) +@es_extension{KHR,context_flush_control} | | @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 @@ -377,18 +384,28 @@ supported. @subsection opengl-support-webgl20-extensions WebGL 1.0 extensions to match WebGL 2.0 functionality -Only extensions not already listed in above tables (marked with *also in WebGL -1.0*) are included here. - Extension | Status ------------------------------------------- | ------ +@webgl_extension{ANGLE,instanced_arrays} | done +@webgl_extension{EXT,blend_minmax} | done +@webgl_extension{EXT,shader_texture_lod} | done (shading language only) +@webgl_extension{OES,texture_float} | done +@webgl_extension{OES,texture_half_float} | done +@webgl_extension{OES,standard_derivatives} | done +@webgl_extension{OES,vertex_array_object} | done +@webgl_extension{OES,element_index_uint} | done +@webgl_extension{OES,texture_float_linear} | done +@webgl_extension{OES,texture_half_float_linear} | done @webgl_extension{WEBGL,depth_texture} | done @webgl_extension{WEBGL,draw_buffers} | done @subsection opengl-support-webgl-extensions WebGL extensions to match desktop functionality -All currently implemented extensions are already listed in above tables (marked -with *also in WebGL*). +Extension | Status +------------------------------------------- | ------ +@webgl_extension{EXT,texture_filter_anisotropic} | done +@webgl_extension{EXT,sRGB} | done +@webgl_extension{EXT,disjoint_timer_query} | only time elapsed query @section opengl-unsupported Unsupported OpenGL features diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index dad746385..706bd2784 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -231,10 +231,10 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,OES,texture_float), _extension(GL,OES,texture_half_float), _extension(GL,OES,standard_derivatives), + _extension(GL,OES,vertex_array_object), _extension(GL,OES,element_index_uint), _extension(GL,OES,texture_float_linear), _extension(GL,OES,texture_half_float_linear), - _extension(GL,OES,vertex_array_object), _extension(GL,WEBGL,depth_texture), _extension(GL,WEBGL,draw_buffers)}; #endif diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index 514db2a28..d555844d5 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -240,23 +240,25 @@ namespace GL { _extension(GL,EXT,sRGB, GLES200, None) // #17 #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,blend_minmax, GLES200, GLES300) // #25 - _extension(GL,EXT,shader_texture_lod, GLES200, GLES300) // #27 #endif _extension(GL,EXT,disjoint_timer_query, GLES200, None) // #26 + #ifdef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,shader_texture_lod, GLES200, GLES300) // #27 + #endif } namespace OES { #ifdef MAGNUM_TARGET_GLES2 _extension(GL,OES,texture_float, GLES200, GLES300) // #1 _extension(GL,OES,texture_half_float, GLES200, GLES300) // #2 _extension(GL,OES,standard_derivatives, GLES200, GLES300) // #4 + _extension(GL,OES,vertex_array_object, GLES200, GLES300) // #5 _extension(GL,OES,element_index_uint, GLES200, GLES300) // #10 _extension(GL,OES,texture_float_linear, GLES200, GLES300) // #20 _extension(GL,OES,texture_half_float_linear, GLES200, GLES300) // #21 - _extension(GL,OES,vertex_array_object, GLES200, GLES300) // #5 #endif } namespace WEBGL { #ifdef MAGNUM_TARGET_GLES2 - _extension(GL,WEBGL,depth_texture, GLES200, GLES300) // #9, EXT - _extension(GL,WEBGL,draw_buffers, GLES200, GLES300) // #18, EXT + _extension(GL,WEBGL,depth_texture, GLES200, GLES300) // #9 + _extension(GL,WEBGL,draw_buffers, GLES200, GLES300) // #18 #endif } #else