diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h index 040b01b24..f73a60ffc 100644 --- a/src/Magnum/GL/AbstractShaderProgram.h +++ b/src/Magnum/GL/AbstractShaderProgram.h @@ -976,13 +976,18 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * @ref draw(Mesh&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&) without the * @p instanceOffsets parameter there instead. * @requires_es_extension Extension @m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) - * @requires_es_extension OpenGL ES 3.1 and extension + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) * if the mesh is indexed and the @p vertexOffsets view is not - * empty - * @requires_es_extension OpenGL ES 3.1 and extension + * empty. The extension says ES 3.1 is required, but since ANGLE + * is the only implementer of this extension and exposes just ES + * 3.0, there's no point in requiring 3.1. + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) - * if the @p instanceOffsets view is not empty + * if the @p instanceOffsets view is not empty. The extension says + * ES 3.1 is required, but since ANGLE is the only implementer of + * this extension and exposes just ES 3.0, there's no point in + * requiring 3.1. * @requires_webgl_extension Extension @webgl_extension{WEBGL,multi_draw}. * Note that this extension is only implemented since Emscripten * 2.0.0 and thus it's not even advertised on older versions. @@ -1015,13 +1020,18 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * @ref draw(Mesh&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&, const Containers::StridedArrayView1D&) without the * @p instanceOffsets parameter there instead. * @requires_es_extension Extension @m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) - * @requires_es_extension OpenGL ES 3.1 and extension + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) * if the mesh is indexed and the @p vertexOffsets view is not - * empty - * @requires_es_extension OpenGL ES 3.1 and extension + * empty. The extension says ES 3.1 is required, but since ANGLE + * is the only implementer of this extension and exposes only ES + * 3.0, there's no point in requiring 3.1. + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) - * if the @p instanceOffsets view is not empty + * if the @p instanceOffsets view is not empty. The extension says + * ES 3.1 is required, but since ANGLE is the only implementer of + * this extension and exposes only ES 3.0, there's no point in + * requiring 3.1. * @requires_webgl_extension Extension @webgl_extension{WEBGL,multi_draw} * @requires_webgl_extension WebGL 2.0 and extension * @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} @@ -1057,10 +1067,12 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * * @requires_gles_only Not available on desktop OpenGL. * @requires_es_extension Extension @m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) - * @requires_es_extension OpenGL ES 3.1 and extension + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) * if the mesh is indexed and the @p vertexOffsets view is not - * empty + * empty. The extension says ES 3.1 is required, but since ANGLE + * is the only implementer of this extension and exposes just ES + * 3.0, there's no point in requiring 3.1. * @requires_webgl_extension Extension @webgl_extension{WEBGL,multi_draw} * @requires_webgl_extension WebGL 2.0 and extension * @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} @@ -1084,10 +1096,12 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject { * it's contiguous. See the original overload for further information. * @requires_gles_only Not available on desktop OpenGL. * @requires_es_extension Extension @m_class{m-doc-external} [ANGLE_multi_draw](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_multi_draw.txt) - * @requires_es_extension OpenGL ES 3.1 and extension + * @requires_es_extension OpenGL ES 3.0 and extension * @m_class{m-doc-external} [ANGLE_base_vertex_base_instance](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_base_vertex_base_instance.txt) * if the mesh is indexed and the @p vertexOffsets view is not - * empty + * empty. The extension says ES 3.1 is required, but since ANGLE + * is the only implementer of this extension and exposes just ES + * 3.0, there's no point in requiring 3.1. * @requires_webgl_extension Extension @webgl_extension{WEBGL,multi_draw} * @requires_webgl_extension WebGL 2.0 and extension * @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h index 321dd9b0b..31f9b4cf4 100644 --- a/src/Magnum/GL/Extensions.h +++ b/src/Magnum/GL/Extensions.h @@ -374,7 +374,9 @@ namespace ANDROID { (which doesn't even follow the XML schema, so it had to be fixed). */ _extension( 9,ANGLE,multi_draw, GLES200, None) // #??? #ifndef MAGNUM_TARGET_GLES2 - _extension( 10,ANGLE,base_vertex_base_instance, GLES310, None) // #??? + /* The spec says ES 3.1 is required, but ANGLE itself reports just ES 3.0 + and this is THE ONLY SINGLE IMPLEMENTER so what gives?! */ + _extension( 10,ANGLE,base_vertex_base_instance, GLES300, None) // #??? #endif } namespace APPLE { #ifdef MAGNUM_TARGET_GLES2