diff --git a/Doxyfile b/Doxyfile index 5e25c0380..afcc8888b 100644 --- a/Doxyfile +++ b/Doxyfile @@ -268,6 +268,7 @@ ALIASES = \ "requires_gles20=@xrefitem requires-gles20 \"Requires OpenGL ES 2.0 / WebGL 1.0\" \"Functionality requiring OpenGL ES 2.0 or WebGL 1.0\"" \ "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_gles32=@xrefitem requires-gles32 \"Requires OpenGL ES 3.2\" \"Functionality requiring OpenGL ES 3.2\"" \ "requires_es_extension=@xrefitem requires-es-extension \"Requires OpenGL ES extension\" \"Functionality requiring specific OpenGL ES extension\"" \ "requires_gles=@xrefitem requires-gles \"Requires OpenGL ES or desktop OpenGL\" \"Functionality requiring OpenGL ES or desktop OpenGL\"" \ "requires_webgl20=@xrefitem requires-webgl20 \"Requires WebGL 2.0\" \"Functionality requiring WebGL 2.0\"" \ diff --git a/Doxyfile-mcss b/Doxyfile-mcss index c04498012..4a46522a6 100644 --- a/Doxyfile-mcss +++ b/Doxyfile-mcss @@ -47,6 +47,7 @@ ALIASES = \ "requires_gles20=@xrefitem requires-gles20 \"Requires OpenGL ES 2.0 / WebGL 1.0\" \"Functionality requiring OpenGL ES 2.0 or WebGL 1.0\"" \ "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_gles32=@xrefitem requires-gles32 \"Requires OpenGL ES 3.2\" \"Functionality requiring OpenGL ES 3.2\"" \ "requires_es_extension=@xrefitem requires-es-extension \"Requires OpenGL ES extension\" \"Functionality requiring specific OpenGL ES extension\"" \ "requires_gles=@xrefitem requires-gles \"Requires OpenGL ES or desktop OpenGL\" \"Functionality requiring OpenGL ES or desktop OpenGL\"" \ "requires_webgl20=@xrefitem requires-webgl20 \"Requires WebGL 2.0\" \"Functionality requiring WebGL 2.0\"" \ diff --git a/Doxyfile-public b/Doxyfile-public index 749fb28c5..d6e6c172d 100644 --- a/Doxyfile-public +++ b/Doxyfile-public @@ -44,6 +44,7 @@ ALIASES = \ "requires_gles20=@xrefitem requires-gles20 \"Requires OpenGL ES 2.0 / WebGL 1.0\" \"Functionality requiring OpenGL ES 2.0 or WebGL 1.0\"" \ "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_gles32=@xrefitem requires-gles32 \"Requires OpenGL ES 3.2\" \"Functionality requiring OpenGL ES 3.2\"" \ "requires_es_extension=@xrefitem requires-es-extension \"Requires OpenGL ES extension\" \"Functionality requiring specific OpenGL ES extension\"" \ "requires_gles=@xrefitem requires-gles \"Requires OpenGL ES or desktop OpenGL\" \"Functionality requiring OpenGL ES or desktop OpenGL\"" \ "requires_webgl20=@xrefitem requires-webgl20 \"Requires WebGL 2.0\" \"Functionality requiring WebGL 2.0\"" \ diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox index 00e078d64..0bc699bc3 100644 --- a/doc/opengl-support.dox +++ b/doc/opengl-support.dox @@ -256,7 +256,6 @@ GLSL 4.50 | done Extension | Status ------------------------------------------- | ------ @extension{ARB,robustness} | done -@extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | done @extension{KHR,texture_compression_astc_hdr} | done @extension{ARB,robustness_isolation} | done @extension{ARB,bindless_texture} | | @@ -269,6 +268,9 @@ Extension | Status @extension{ARB,pipeline_statistics_query} | | @extension{ARB,sparse_buffer} | | @extension{ARB,transform_feedback_overflow_query} | done +@extension{ARB,ES3_2_compatibility} | | +@extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | done +@extension{KHR,robust_buffer_access_behavior} | done (nothing to do) @extension{KHR,blend_equation_advanced} | done @extension2{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | done @extension{KHR,no_error} | done @@ -312,6 +314,37 @@ supported. ESSL 3.00 is supported. Features that have their equivalents implemented in desktop version are supported. ESSL 3.10 is supported. +@subsection opengl-support-es32 OpenGL ES 3.2 + +Features that have their equivalents implemented in desktop version are +supported. ESSL 3.20 is supported. + +Extension | Status +------------------------------------------- | ------ +@extension{EXT,color_buffer_half_float} | | +@extension{EXT,color_buffer_float} | | +@extension{EXT,copy_image} | | +@extension{EXT,draw_buffers_indexed} | | +@extension{EXT,geometry_shader} | missing some ES-specific limit queries +@extension{EXT,gpu_shader5} | done (shading language only) +@extension{EXT,shader_io_blocks} | done (shading language only) +@extension{EXT,tessellation_shader} | see above +@extension{EXT,texture_border_clamp} | done +@extension{EXT,texture_buffer} | done +@extension{EXT,texture_cube_map_array} | done +@extension{EXT,primitive_bounding_box} | | +@extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | done +@extension{KHR,debug} | see above +@extension2{KHR,blend_equation_advanced,blend_equation_advanced} | done +@extension{KHR,robustness} | | +@extension{KHR,robust_buffer_access_behavior} | done (nothing to do) +@extension{OES,sample_shading} | | +@extension{OES,sample_variables} | done (shading language only) +@extension{OES,shader_image_atomic} | done (shading language only) +@extension{OES,shader_multisample_interpolation} | | +@extension{OES,texture_stencil8} | done +@extension{OES,texture_storage_multisample_2d_array} | done + @subsection opengl-support-es30-extensions OpenGL ES 2.0 extensions to match ES 3.0 functionality @m_class{m-fullwidth} @@ -396,23 +429,8 @@ Extension | Status @extension{EXT,sRGB_write_control} | done @extension2{EXT,texture_compression_s3tc,texture_compression_s3tc} | done @extension{EXT,shader_integer_mix} | done (shading language only) -@extension{EXT,copy_image} | | -@extension{EXT,draw_buffers_indexed} | | -@extension{EXT,geometry_shader} | missing some ES-specific limit queries -@extension{EXT,gpu_shader5} | done (shading language only) -@extension{EXT,shader_io_blocks} | done (shading language only) -@extension{EXT,tessellation_shader} | see above -@extension{EXT,texture_border_clamp} | done -@extension{EXT,texture_buffer} | done -@extension{EXT,texture_cube_map_array} | done -@extension{EXT,primitive_bounding_box} | | -@extension2{KHR,texture_compression_astc_ldr,texture_compression_astc_hdr} | done @extension2{KHR,texture_compression_astc_hdr,texture_compression_astc_hdr} | done -@extension{KHR,debug} | see above -@extension2{KHR,blend_equation_advanced,blend_equation_advanced} | done @extension2{KHR,blend_equation_advanced_coherent,blend_equation_advanced} | done -@extension{KHR,robustness} | | -@extension{KHR,robust_buffer_access_behavior} | done (nothing to do) @extension{KHR,context_flush_control} | | @extension2{KHR,no_error,no_error} | done @extension2{NV,read_buffer_front,NV_read_buffer} | done @@ -426,12 +444,6 @@ Extension | Status @extension{OES,mapbuffer} | done @extension{OES,stencil1} | done @extension{OES,stencil4} | done -@extension{OES,sample_shading} | | -@extension{OES,sample_variables} | done (shading language only) -@extension{OES,shader_image_atomic} | done (shading language only) -@extension{OES,shader_multisample_interpolation} | | -@extension{OES,texture_stencil8} | done -@extension{OES,texture_storage_multisample_2d_array} | done @subsection opengl-support-webgl10 WebGL 1.0 @@ -450,6 +462,7 @@ supported. Extension | Status ------------------------------------------- | ------ @webgl_extension{ANGLE,instanced_arrays} | done +@webgl_extension{EXT,color_buffer_half_float} | | @webgl_extension{EXT,blend_minmax} | done @webgl_extension{EXT,shader_texture_lod} | done (shading language only) @webgl_extension{OES,texture_float} | done @@ -461,8 +474,14 @@ Extension | Status @webgl_extension{OES,texture_half_float_linear} | done @webgl_extension{OES,fbo_render_mipmap} | done @webgl_extension{WEBGL,depth_texture} | done +@webgl_extension{WEBGL,color_buffer_float} | | @webgl_extension{WEBGL,draw_buffers} | done +@attention @webgl_extension{EXT,color_buffer_half_float} and + @webgl_extension{WEBGL,color_buffer_float} are not part of WebGL 2.0, but + are included in this table because they are subsumed by + @webgl_extension{EXT,color_buffer_float} in WebGL 2.0. + @subsection opengl-support-webgl-extensions WebGL extensions to match desktop functionality @m_class{m-fullwidth} @@ -472,6 +491,7 @@ Extension | Status @webgl_extension{EXT,texture_filter_anisotropic} | done @webgl_extension{EXT,sRGB} | done @webgl_extension{EXT,disjoint_timer_query} | only time elapsed query +@webgl_extension{EXT,color_buffer_float} | | @webgl_extension{WEBGL,compressed_texture_s3tc} | done @section opengl-unsupported Unsupported OpenGL features diff --git a/doc/opengl.dox b/doc/opengl.dox index 8a84bc84a..f6913132d 100644 --- a/doc/opengl.dox +++ b/doc/opengl.dox @@ -67,6 +67,7 @@ is supported on older Intel GPUs even if they are capable of OpenGL 2.1 only). - @subpage requires-gles20 - @subpage requires-gles30 - @subpage requires-gles31 +- @subpage requires-gles32 - @subpage requires-es-extension - @subpage requires-gles - @subpage requires-webgl20 @@ -149,6 +150,12 @@ or desktop OpenGL. The following symbols are not defined when targeting OpenGL ES 2.0. */ +/** @page requires-gles32 Functionality requiring OpenGL ES 3.2 +@m_footernavigation + +The following symbols are not defined when targeting OpenGL ES 2.0. +*/ + /** @page requires-es-extension Functionality requiring specific OpenGL ES extension * @m_footernavigation */ diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index 7e4f5de85..17d452899 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -87,6 +87,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,ARB,pipeline_statistics_query), _extension(GL,ARB,sparse_buffer), _extension(GL,ARB,transform_feedback_overflow_query), + _extension(GL,ARB,ES3_2_compatibility), _extension(GL,ATI,texture_mirror_once), _extension(GL,EXT,texture_filter_anisotropic), _extension(GL,EXT,texture_compression_s3tc), @@ -235,10 +236,12 @@ const std::vector& Extension::extensions(Version version) { static const std::vector extensions{ _extension(GL,EXT,texture_filter_anisotropic), _extension(GL,EXT,disjoint_timer_query), + _extension(GL,EXT,color_buffer_float), _extension(GL,WEBGL,compressed_texture_s3tc)}; #ifdef MAGNUM_TARGET_GLES2 static const std::vector extensionsES300{ _extension(GL,ANGLE,instanced_arrays), + _extension(GL,EXT,color_buffer_half_float), _extension(GL,EXT,sRGB), _extension(GL,EXT,blend_minmax), _extension(GL,EXT,shader_texture_lod), @@ -251,6 +254,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,OES,texture_half_float_linear), _extension(GL,OES,fbo_render_mipmap), _extension(GL,WEBGL,depth_texture), + _extension(GL,WEBGL,color_buffer_float), _extension(GL,WEBGL,draw_buffers)}; #endif #else @@ -267,6 +271,9 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,multi_draw_arrays), _extension(GL,EXT,debug_label), _extension(GL,EXT,debug_marker), + _extension(GL,EXT,separate_shader_objects), + _extension(GL,EXT,multisampled_render_to_texture), + _extension(GL,EXT,robustness), _extension(GL,EXT,shader_framebuffer_fetch), _extension(GL,EXT,disjoint_timer_query), _extension(GL,EXT,texture_sRGB_decode), @@ -274,31 +281,9 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,EXT,texture_compression_s3tc), #ifndef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shader_integer_mix), - _extension(GL,EXT,copy_image), - #endif - _extension(GL,EXT,draw_buffers_indexed), - #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,EXT,geometry_shader), - _extension(GL,EXT,gpu_shader5), - _extension(GL,EXT,shader_io_blocks), - _extension(GL,EXT,tessellation_shader), #endif - _extension(GL,EXT,texture_border_clamp), - #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,EXT,texture_buffer), - _extension(GL,EXT,texture_cube_map_array), - _extension(GL,EXT,primitive_bounding_box), - #endif - _extension(GL,EXT,separate_shader_objects), - _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,blend_equation_advanced), _extension(GL,KHR,blend_equation_advanced_coherent), - _extension(GL,KHR,robustness), - _extension(GL,KHR,robust_buffer_access_behavior), _extension(GL,KHR,context_flush_control), _extension(GL,KHR,no_error), _extension(GL,NV,read_buffer_front), @@ -313,18 +298,7 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,OES,depth32), _extension(GL,OES,mapbuffer), _extension(GL,OES,stencil1), - _extension(GL,OES,stencil4), - #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,OES,sample_shading), - _extension(GL,OES,sample_variables), - _extension(GL,OES,shader_image_atomic), - _extension(GL,OES,shader_multisample_interpolation), - #endif - _extension(GL,OES,texture_stencil8), - #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,OES,texture_storage_multisample_2d_array) - #endif - }; + _extension(GL,OES,stencil4)}; #ifdef MAGNUM_TARGET_GLES2 static const std::vector extensionsES300{ _extension(GL,ANGLE,framebuffer_blit), @@ -376,6 +350,41 @@ const std::vector& Extension::extensions(Version version) { _extension(GL,OES,required_internalformat), _extension(GL,OES,surfaceless_context)}; #endif + static const std::vector extensionsES320{ + _extension(GL,EXT,color_buffer_half_float), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,color_buffer_float), + _extension(GL,EXT,copy_image), + #endif + _extension(GL,EXT,draw_buffers_indexed), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,geometry_shader), + _extension(GL,EXT,gpu_shader5), + _extension(GL,EXT,shader_io_blocks), + _extension(GL,EXT,tessellation_shader), + #endif + _extension(GL,EXT,texture_border_clamp), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,texture_buffer), + _extension(GL,EXT,texture_cube_map_array), + _extension(GL,EXT,primitive_bounding_box), + #endif + _extension(GL,KHR,texture_compression_astc_ldr), + _extension(GL,KHR,debug), + _extension(GL,KHR,blend_equation_advanced), + _extension(GL,KHR,robustness), + _extension(GL,KHR,robust_buffer_access_behavior), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,sample_shading), + _extension(GL,OES,sample_variables), + _extension(GL,OES,shader_image_atomic), + _extension(GL,OES,shader_multisample_interpolation), + #endif + _extension(GL,OES,texture_stencil8), + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,OES,texture_storage_multisample_2d_array) + #endif + }; #endif #undef _extension @@ -395,7 +404,8 @@ const std::vector& Extension::extensions(Version version) { case Version::GL450: return extensions450; case Version::GLES200: case Version::GLES300: - case Version::GLES310: return empty; + case Version::GLES310: + case Version::GLES320: return empty; #else case Version::GLES200: return empty; case Version::GLES300: @@ -406,6 +416,7 @@ const std::vector& Extension::extensions(Version version) { #endif #ifndef MAGNUM_TARGET_WEBGL case Version::GLES310: return empty; + case Version::GLES320: return extensionsES320; #endif #endif } @@ -612,6 +623,7 @@ bool Context::tryCreate() { Version::GLES300, #ifndef MAGNUM_TARGET_WEBGL Version::GLES310, + Version::GLES320, #endif #endif Version::None @@ -813,6 +825,8 @@ bool Context::isVersionSupported(Version version) const { return isExtensionSupported(); if(version == Version::GLES310) return isExtensionSupported(); + if(version == Version::GLES320) + return isExtensionSupported(); #endif return _version >= version; diff --git a/src/Magnum/Extensions.h b/src/Magnum/Extensions.h index 8a17046e8..eef7e989e 100644 --- a/src/Magnum/Extensions.h +++ b/src/Magnum/Extensions.h @@ -210,6 +210,7 @@ namespace GL { _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 + _extension(GL,ARB,ES3_2_compatibility, GL450, None) // #177 } namespace ATI { _extension(GL,ATI,texture_mirror_once, GL210, None) // #221 } namespace EXT { @@ -239,6 +240,7 @@ namespace GL { _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,robust_buffer_access_behavior, GL320, None) // #169 _extension(GL,KHR,robustness, GL320, GL450) // #170 _extension(GL,KHR,blend_equation_advanced, GL210, None) // #174 _extension(GL,KHR,blend_equation_advanced_coherent, GL210, None) // #174 @@ -259,6 +261,9 @@ namespace GL { } namespace EXT { _extension(GL,EXT,texture_filter_anisotropic, GLES200, None) // #11 #ifdef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,color_buffer_half_float, GLES200, None) // #14 + #endif + #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,sRGB, GLES200, GLES300) // #17 _extension(GL,EXT,blend_minmax, GLES200, GLES300) // #25 #endif @@ -266,6 +271,7 @@ namespace GL { #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shader_texture_lod, GLES200, GLES300) // #27 #endif + _extension(GL,EXT,color_buffer_float, GLES300, None) // #31 } namespace OES { #ifdef MAGNUM_TARGET_GLES2 _extension(GL,OES,texture_float, GLES200, GLES300) // #1 @@ -281,6 +287,7 @@ namespace GL { _extension(GL,WEBGL,compressed_texture_s3tc, GLES200, None) // #8 #ifdef MAGNUM_TARGET_GLES2 _extension(GL,WEBGL,depth_texture, GLES200, GLES300) // #9 + _extension(GL,WEBGL,color_buffer_float, GLES200, None) // #14 _extension(GL,WEBGL,draw_buffers, GLES200, GLES300) // #18 #endif } @@ -327,6 +334,7 @@ namespace GL { _extension(GL,EXT,shader_texture_lod, GLES200, GLES300) // #77 _extension(GL,EXT,unpack_subimage, GLES200, GLES300) // #90 #endif + _extension(GL,EXT,color_buffer_half_float, GLES200, GLES320) // #97 _extension(GL,EXT,debug_label, GLES200, None) // #98 _extension(GL,EXT,debug_marker, GLES200, None) // #99 #ifdef MAGNUM_TARGET_GLES2 @@ -345,6 +353,9 @@ namespace GL { _extension(GL,EXT,map_buffer_range, GLES200, GLES300) // #121 #endif _extension(GL,EXT,shader_framebuffer_fetch, GLES200, None) // #122 + #ifndef MAGNUM_TARGET_GLES2 + _extension(GL,EXT,color_buffer_float, GLES300, GLES320) // #137 + #endif _extension(GL,EXT,disjoint_timer_query, GLES200, None) // #150 #ifdef MAGNUM_TARGET_GLES2 _extension(GL,EXT,draw_buffers, GLES200, GLES300) // #151 @@ -358,29 +369,29 @@ namespace GL { #endif #ifndef MAGNUM_TARGET_GLES2 _extension(GL,EXT,shader_integer_mix, GLES300, None) // #161 - _extension(GL,EXT,copy_image, GLES300, None) // #175 + _extension(GL,EXT,copy_image, GLES300, GLES320) // #175 #endif - _extension(GL,EXT,draw_buffers_indexed, GLES200, None) // #176 + _extension(GL,EXT,draw_buffers_indexed, GLES200, GLES320) // #176 #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,EXT,geometry_shader, GLES310, None) // #177 - _extension(GL,EXT,gpu_shader5, GLES310, None) // #178 - _extension(GL,EXT,shader_io_blocks, GLES310, None) // #180 - _extension(GL,EXT,tessellation_shader, GLES310, None) // #181 + _extension(GL,EXT,geometry_shader, GLES310, GLES320) // #177 + _extension(GL,EXT,gpu_shader5, GLES310, GLES320) // #178 + _extension(GL,EXT,shader_io_blocks, GLES310, GLES320) // #180 + _extension(GL,EXT,tessellation_shader, GLES310, GLES320) // #181 #endif - _extension(GL,EXT,texture_border_clamp, GLES200, None) // #182 + _extension(GL,EXT,texture_border_clamp, GLES200, GLES320) // #182 #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,EXT,texture_buffer, GLES310, None) // #183 - _extension(GL,EXT,texture_cube_map_array, GLES310, None) // #184 - _extension(GL,EXT,primitive_bounding_box, GLES310, None) // #186 + _extension(GL,EXT,texture_buffer, GLES310, GLES320) // #183 + _extension(GL,EXT,texture_cube_map_array, GLES310, GLES320) // #184 + _extension(GL,EXT,primitive_bounding_box, GLES310, GLES320) // #186 #endif } namespace KHR { - _extension(GL,KHR,texture_compression_astc_ldr, GLES200, None) // #117 + _extension(GL,KHR,texture_compression_astc_ldr, GLES200, GLES320) // #117 _extension(GL,KHR,texture_compression_astc_hdr, GLES200, None) // #117 - _extension(GL,KHR,debug, GLES200, None) // #118 - _extension(GL,KHR,blend_equation_advanced, GLES200, None) // #168 + _extension(GL,KHR,debug, GLES200, GLES320) // #118 + _extension(GL,KHR,blend_equation_advanced, GLES200, GLES320) // #168 _extension(GL,KHR,blend_equation_advanced_coherent, GLES200, None) // #168 - _extension(GL,KHR,robustness, GLES200, None) // #170 - _extension(GL,KHR,robust_buffer_access_behavior, GLES200, None) // #189 + _extension(GL,KHR,robustness, GLES200, GLES320) // #170 + _extension(GL,KHR,robust_buffer_access_behavior, GLES200, GLES320) // #189 _extension(GL,KHR,context_flush_control, GLES200, None) // #191 _extension(GL,KHR,no_error, GLES200, None) // #243 } namespace NV { @@ -438,14 +449,14 @@ namespace GL { _extension(GL,OES,surfaceless_context, GLES200, GLES300) // #116 #endif #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,OES,sample_shading, GLES300, None) // #169 - _extension(GL,OES,sample_variables, GLES300, None) // #170 - _extension(GL,OES,shader_image_atomic, GLES310, None) // #171 - _extension(GL,OES,shader_multisample_interpolation, GLES300, None) // #172 + _extension(GL,OES,sample_shading, GLES300, GLES320) // #169 + _extension(GL,OES,sample_variables, GLES300, GLES320) // #170 + _extension(GL,OES,shader_image_atomic, GLES310, GLES320) // #171 + _extension(GL,OES,shader_multisample_interpolation, GLES300, GLES320) // #172 #endif - _extension(GL,OES,texture_stencil8, GLES200, None) // #173 + _extension(GL,OES,texture_stencil8, GLES200, GLES320) // #173 #ifndef MAGNUM_TARGET_GLES2 - _extension(GL,OES,texture_storage_multisample_2d_array, GLES310, None) // #174 + _extension(GL,OES,texture_storage_multisample_2d_array, GLES310, GLES320) // #174 #endif } #endif diff --git a/src/Magnum/Platform/magnum-info.cpp b/src/Magnum/Platform/magnum-info.cpp index f7fbeed6e..c66a224eb 100644 --- a/src/Magnum/Platform/magnum-info.cpp +++ b/src/Magnum/Platform/magnum-info.cpp @@ -299,6 +299,7 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat Version::GLES300, #ifndef MAGNUM_TARGET_WEBGL Version::GLES310, + Version::GLES320, #endif #endif Version::None diff --git a/src/Magnum/Shader.cpp b/src/Magnum/Shader.cpp index e18d4658c..d14bb868a 100644 --- a/src/Magnum/Shader.cpp +++ b/src/Magnum/Shader.cpp @@ -739,6 +739,7 @@ Shader::Shader(const Version version, const Type type): _type(type), _id(0) { case Version::GLES300: _sources.emplace_back("#version 300 es\n"); return; #ifndef MAGNUM_TARGET_WEBGL case Version::GLES310: _sources.emplace_back("#version 310 es\n"); return; + case Version::GLES320: _sources.emplace_back("#version 320 es\n"); return; #endif /* The user is responsible for (not) adding #version directive */ diff --git a/src/Magnum/Version.cpp b/src/Magnum/Version.cpp index 3b8938d30..138274293 100644 --- a/src/Magnum/Version.cpp +++ b/src/Magnum/Version.cpp @@ -55,6 +55,7 @@ Debug& operator<<(Debug& debug, Version value) { _c(GLES200, "OpenGL ES 2.0") _c(GLES300, "OpenGL ES 3.0") _c(GLES310, "OpenGL ES 3.1") + _c(GLES320, "OpenGL ES 3.2") #endif #undef _c /* LCOV_EXCL_STOP */ diff --git a/src/Magnum/Version.h b/src/Magnum/Version.h index d5a066bcf..3d2a704f8 100644 --- a/src/Magnum/Version.h +++ b/src/Magnum/Version.h @@ -103,7 +103,23 @@ enum class Version: Int { #ifndef MAGNUM_TARGET_GLES GLES310 = Implementation::VersionESMask|310, #else - GLES310 = 310 + GLES310 = 310, + #endif + #endif + + #ifndef MAGNUM_TARGET_WEBGL + /** + * OpenGL ES 3.2, GLSL ES 3.20. + * + * On desktop OpenGL, all related functionality is present in extension + * @extension{ARB,ES3_2_compatibility}, so testing for this version using + * @ref Context::isVersionSupported() is equivalent to testing for + * availability of that extension. + */ + #ifndef MAGNUM_TARGET_GLES + GLES320 = Implementation::VersionESMask|320, + #else + GLES320 = 320 #endif #endif };