diff --git a/doc/changelog.dox b/doc/changelog.dox
index e461dc07e..6ca91d830 100644
--- a/doc/changelog.dox
+++ b/doc/changelog.dox
@@ -126,6 +126,11 @@ See also:
@subsubsection changelog-latest-changes-gl GL library
+- Fully dropped support for @gl_extension{EXT,direct_state_access}. All
+ contemporary drivers supporting @gl_extension{EXT,direct_state_access}
+ support the (newer and better designed) @gl_extension{ARB,direct_state_access},
+ while drivers that don't support the ARB version don't support the EXT
+ flavor either.
- Reworked @ref GL::Mesh internals to make use of
@gl_extension{ARB,direct_state_access} instead of being the last code path
stuck on @gl_extension{EXT,direct_state_access}
@@ -215,7 +220,7 @@ See also:
creates the library output directory beforehand
- Fixed a bad interaction of @ref GL::Mesh and @ref GL::Buffer state trackers
resulting in corrupted rendering on ES/WebGL platforms and systems without
- @gl_extension{ARB,direct_state_access} / @gl_extension{EXT,direct_state_access}
+ @gl_extension{ARB,direct_state_access}
- Fixed @ref GL::Mesh instanced drawing to properly take into account all
five @gl_extension{ANGLE,instanced_arrays},
@gl_extension{EXT,instanced_arrays}, @gl_extension{EXT,draw_instanced},
diff --git a/doc/coding-style.dox b/doc/coding-style.dox
index 51b94d70d..7423f996c 100644
--- a/doc/coding-style.dox
+++ b/doc/coding-style.dox
@@ -203,7 +203,7 @@ are the same as in @c \@gl_extension command. It produced link to extension
specification, with function name as link text:
-@fn_gl_extension{NamedCopyBufferSubData,EXT,direct_state_access}
+@fn_gl_extension{LabelObject,EXT,debug_label}
For Vulkan, the commands are @c \@fn_vk, @c \@type_vk and @c \@def_vk. Example:
diff --git a/doc/method-chaining.dox b/doc/method-chaining.dox
index 910ac16d9..dbd9f3288 100644
--- a/doc/method-chaining.dox
+++ b/doc/method-chaining.dox
@@ -38,7 +38,7 @@ Magnum uses this feature mainly for configuring OpenGL objects (such as
various mesh and framebuffer options, shader uniforms etc.). Because OpenGL was
designed with "bind-to-modify" approach, most configuration calls internally
need to bind the object first and only after that change the parameters (unless
-@gl_extension{EXT,direct_state_access} extension is available to avoid this). To
+@gl_extension{ARB,direct_state_access} extension is available to avoid this). To
reduce unneeded bind calls, Magnum binds the object only if it is not already
bound somewhere. Method chaining encourages you to configure whole object in
one run, effectively reducing the number of needed bindings. Consider the
diff --git a/doc/opengl-mapping.dox b/doc/opengl-mapping.dox
index cb85c5de9..20abc04df 100644
--- a/doc/opengl-mapping.dox
+++ b/doc/opengl-mapping.dox
@@ -76,19 +76,19 @@ OpenGL function | Matching API
@fn_gl{BindProgramPipeline} | |
@fn_gl{BindRenderbuffer} | not needed, handled internally in @ref GL::Renderbuffer
@fn_gl{BindSampler}, \n @fn_gl{BindSamplers} | |
-@fn_gl{BindTexture}, \n @fn_gl{BindTextureUnit}, \n @fn_gl{BindTextures}, \n @fn_gl_extension{BindMultiTexture,EXT,direct_state_access} | @ref GL::AbstractTexture::bind()
+@fn_gl{BindTexture}, \n @fn_gl{BindTextureUnit}, \n @fn_gl{BindTextures} | @ref GL::AbstractTexture::bind()
@fn_gl{BindTransformFeedback} | not needed, handled internally in @ref GL::TransformFeedback
@fn_gl{BindVertexArray} | not needed, handled internally in @ref GL::Mesh
-@fn_gl{BindVertexBuffer}, \n `glVertexArrayVertexBuffer()`, \n @fn_gl_extension{VertexArrayBindVertexBuffer,EXT,direct_state_access} \n @fn_gl{BindVertexBuffers}, \n `glVertexArrayVertexBuffers()` | |
+@fn_gl{BindVertexBuffer}, \n `glVertexArrayVertexBuffer()`, \n @fn_gl{BindVertexBuffers}, \n `glVertexArrayVertexBuffers()` | |
@fn_gl_extension{BlendBarrier,KHR,blend_equation_advanced} | @ref GL::Renderer::blendBarrier()
@fn_gl{BlendColor} | @ref GL::Renderer::setBlendColor()
@fn_gl{BlendEquation}, \n @fn_gl{BlendEquationSeparate} | @ref GL::Renderer::setBlendEquation()
@fn_gl{BlendFunc}, \n @fn_gl{BlendFuncSeparate} | @ref GL::Renderer::setBlendFunction()
@fn_gl{BlitFramebuffer}, \n `glBlitNamedFramebuffer()` | @ref GL::AbstractFramebuffer::blit()
-@fn_gl{BufferData}, \n `glNamedBufferData()`, \n @fn_gl_extension{NamedBufferData,EXT,direct_state_access} | @ref GL::Buffer::setData()
+@fn_gl{BufferData}, \n `glNamedBufferData()` | @ref GL::Buffer::setData()
@fn_gl_extension{BufferPageCommitment,ARB,sparse_buffer}, \n `glNamedBufferPageCommitmentEXT()`, \n `glNamedBufferPageCommitmentARB()` | |
-@fn_gl{BufferStorage}, \n `glNamedBufferStorage()`, \n @fn_gl_extension{NamedBufferStorage,EXT,direct_state_access} | |
-@fn_gl{BufferSubData}, \n `glNamedBufferSubData()`, \n @fn_gl_extension{NamedBufferSubData,EXT,direct_state_access} | @ref GL::Buffer::setSubData()
+@fn_gl{BufferStorage}, \n `glNamedBufferStorage()` | |
+@fn_gl{BufferSubData}, \n `glNamedBufferSubData()` | @ref GL::Buffer::setSubData()
@subsection opengl-mapping-functions-c C
@@ -96,12 +96,12 @@ OpenGL function | Matching API
OpenGL function | Matching API
--------------------------------------- | ------------
-@fn_gl{CheckFramebufferStatus}, \n `glCheckNamedFramebufferStatus()`, \n @fn_gl_extension{CheckNamedFramebufferStatus,EXT,direct_state_access} | @ref GL::DefaultFramebuffer::checkStatus(), \n @ref GL::Framebuffer::checkStatus()
+@fn_gl{CheckFramebufferStatus}, \n `glCheckNamedFramebufferStatus()` | @ref GL::DefaultFramebuffer::checkStatus(), \n @ref GL::Framebuffer::checkStatus()
@fn_gl{ClampColor} | |
@fn_gl{Clear} | @ref GL::AbstractFramebuffer::clear()
@fn_gl{ClearBuffer}, \n `glClearNamedFramebuffer()` | @ref GL::AbstractFramebuffer::clearDepth(), @ref GL::AbstractFramebuffer::clearStencil(), @ref GL::AbstractFramebuffer::clearDepthStencil(), @ref GL::DefaultFramebuffer::clearColor(), @ref GL::Framebuffer::clearColor()
-@fn_gl{ClearBufferData}, \n `glClearNamedBufferData()`, \n @fn_gl_extension{ClearNamedBufferData,EXT,direct_state_access} | |
-@fn_gl{ClearBufferSubData}, \n `glClearNamedBufferSubData()`, \n @fn_gl_extension{ClearNamedBufferSubData,EXT,direct_state_access} | |
+@fn_gl{ClearBufferData}, \n `glClearNamedBufferData()` | |
+@fn_gl{ClearBufferSubData}, \n `glClearNamedBufferSubData()` | |
@fn_gl{ClearColor} | @ref GL::Renderer::setClearColor()
@fn_gl{ClearDepth} | @ref GL::Renderer::setClearDepth()
@fn_gl{ClearStencil} | @ref GL::Renderer::setClearStencil()
@@ -112,11 +112,11 @@ OpenGL function | Matching API
@fn_gl{ColorMask} | @ref GL::Renderer::setColorMask()
@fn_gl{CompileShader} | @ref GL::Shader::compile()
@fn_gl{CompressedTexImage1D}, \n @fn_gl{CompressedTexImage2D}, \n @fn_gl{CompressedTexImage3D} | @ref GL::Texture::setCompressedImage(), \n @ref GL::TextureArray::setCompressedImage(), \n @ref GL::CubeMapTexture::setCompressedImage(), \n @ref GL::CubeMapTextureArray::setCompressedImage(), \n @ref GL::RectangleTexture::setCompressedImage()
-@fn_gl{CompressedTexSubImage1D}, \n `glCompressedTextureSubImage1D()`, \n @fn_gl_extension{CompressedTextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{CompressedTexSubImage2D}, \n `glCompressedTextureSubImage2D()`, \n @fn_gl_extension{CompressedTextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{CompressedTexSubImage3D}, \n `glCompressedTextureSubImage3D()`, \n @fn_gl_extension{CompressedTextureSubImage3D,EXT,direct_state_access} | @ref GL::Texture::setCompressedSubImage(), \n @ref GL::TextureArray::setCompressedSubImage(), \n @ref GL::CubeMapTexture::setCompressedSubImage(), \n @ref GL::CubeMapTextureArray::setCompressedSubImage(), \n @ref GL::RectangleTexture::setCompressedSubImage()
-@fn_gl{CopyBufferSubData}, \n `glCopyNamedBufferSubData()`, \n @fn_gl_extension{NamedCopyBufferSubData,EXT,direct_state_access} | @ref GL::Buffer::copy()
+@fn_gl{CompressedTexSubImage1D}, \n `glCompressedTextureSubImage1D()`, \n @fn_gl{CompressedTexSubImage2D}, \n `glCompressedTextureSubImage2D()`, \n @fn_gl{CompressedTexSubImage3D}, \n `glCompressedTextureSubImage3D()` | @ref GL::Texture::setCompressedSubImage(), \n @ref GL::TextureArray::setCompressedSubImage(), \n @ref GL::CubeMapTexture::setCompressedSubImage(), \n @ref GL::CubeMapTextureArray::setCompressedSubImage(), \n @ref GL::RectangleTexture::setCompressedSubImage()
+@fn_gl{CopyBufferSubData}, \n `glCopyNamedBufferSubData()` | @ref GL::Buffer::copy()
@fn_gl{CopyImageSubData} | |
@fn_gl{CopyTexImage1D}, \n @fn_gl{CopyTexImage2D} | @ref GL::Framebuffer::copyImage()
-@fn_gl{CopyTexSubImage1D}, \n `glCopyTextureSubImage1D()`, \n @fn_gl_extension{CopyTextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{CopyTexSubImage2D}, \n `glCopyTextureSubImage2D()`, \n @fn_gl_extension{CopyTextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{CopyTexSubImage3D}, \n `glCopyTextureSubImage3D()`, \n @fn_gl_extension{CopyTextureSubImage3D,EXT,direct_state_access} | @ref GL::Framebuffer::copySubImage()
+@fn_gl{CopyTexSubImage1D}, \n `glCopyTextureSubImage1D()`, \n @fn_gl{CopyTexSubImage2D}, \n `glCopyTextureSubImage2D()`, \n @fn_gl{CopyTexSubImage3D}, \n `glCopyTextureSubImage3D()` | @ref GL::Framebuffer::copySubImage()
@fn_gl{CreateProgram}, @fn_gl{DeleteProgram} | @ref GL::AbstractShaderProgram constructor and destructor
@fn_gl{CreateShader}, @fn_gl{DeleteShader} | @ref GL::Shader constructor and destructor
@fn_gl{CreateShaderProgram} | |
@@ -142,7 +142,7 @@ OpenGL function | Matching API
@fn_gl{DispatchComputeIndirect} | |
@fn_gl{DrawArrays}, \n @fn_gl{DrawArraysInstanced}, \n @fn_gl{DrawArraysInstancedBaseInstance}, \n @fn_gl{DrawElements}, \n @fn_gl{DrawRangeElements}, \n @fn_gl{DrawElementsBaseVertex}, \n @fn_gl{DrawRangeElementsBaseVertex}, \n @fn_gl{DrawElementsInstanced}, \n @fn_gl{DrawElementsInstancedBaseInstance}, \n @fn_gl{DrawElementsInstancedBaseVertex}, \n @fn_gl{DrawElementsInstancedBaseVertexBaseInstance} | @ref GL::Mesh::draw(AbstractShaderProgram&), \n @ref GL::MeshView::draw(AbstractShaderProgram&)
@fn_gl{DrawArraysIndirect}, \n @fn_gl{DrawElementsIndirect}, \n @fn_gl{MultiDrawArraysIndirect}, \n @fn_gl{MultiDrawElementsIndirect} | |
-@fn_gl{DrawBuffer}, \n `glNamedFramebufferDrawBuffer()`, \n @fn_gl_extension{FramebufferDrawBuffer,EXT,direct_state_access}, \n @fn_gl{DrawBuffers}, \n `glNamedFramebufferDrawBuffers()`, \n @fn_gl_extension{FramebufferDrawBuffers,EXT,direct_state_access} | @ref GL::DefaultFramebuffer::mapForDraw(), \n @ref GL::Framebuffer::mapForDraw()
+@fn_gl{DrawBuffer}, \n `glNamedFramebufferDrawBuffer()`, \n @fn_gl{DrawBuffers}, \n `glNamedFramebufferDrawBuffers()` | @ref GL::DefaultFramebuffer::mapForDraw(), \n @ref GL::Framebuffer::mapForDraw()
@fn_gl{DrawTransformFeedback}, \n @fn_gl{DrawTransformFeedbackInstanced}, \n @fn_gl{DrawTransformFeedbackStream}, \n @fn_gl{DrawTransformFeedbackStreamInstanced} | @ref GL::Mesh::draw(AbstractShaderProgram&, TransformFeedback&, UnsignedInt), \n @ref GL::MeshView::draw(AbstractShaderProgram&, TransformFeedback&, UnsignedInt)
@subsection opengl-mapping-functions-e E
@@ -152,7 +152,7 @@ OpenGL function | Matching API
OpenGL function | Matching API
--------------------------------------- | ------------
@fn_gl{Enable}, `glDisable()` | @ref GL::Renderer::setFeature()
-@fn_gl{EnableVertexAttribArray}, \n `glEnableVertexArrayAttrib()`, \n @fn_gl_extension{EnableVertexArrayAttrib,EXT,direct_state_access}, \n `glDisableVertexAttribArray()`, \n `glDisableVertexArrayAttrib()`, \n `glDisableVertexArrayAttribEXT()` | @ref GL::Mesh::addVertexBuffer()
+@fn_gl{EnableVertexAttribArray}, \n `glEnableVertexArrayAttrib()`, \n `glDisableVertexAttribArray()`, \n `glDisableVertexArrayAttrib()`, \n `glDisableVertexArrayAttribEXT()` | @ref GL::Mesh::addVertexBuffer()
@subsection opengl-mapping-functions-f F
@@ -163,13 +163,13 @@ OpenGL function | Matching API
@fn_gl{FenceSync}, @fn_gl{DeleteSync} | |
@fn_gl{Finish} | @ref GL::Renderer::finish()
@fn_gl{Flush} | @ref GL::Renderer::flush()
-@fn_gl{FlushMappedBufferRange}, \n `glFlushMappedNamedBufferRange()`, \n @fn_gl_extension{FlushMappedNamedBufferRange,EXT,direct_state_access} | @ref GL::Buffer::flushMappedRange()
-@fn_gl2{FramebufferParameter,FramebufferParameteri}, \n `glNamedFramebufferParameter()`, \n @fn_gl_extension{NamedFramebufferParameter,EXT,direct_state_access} | |
-@fn_gl{FramebufferRenderbuffer}, \n `glNamedFramebufferRenderbuffer()`, \n @fn_gl_extension{NamedFramebufferRenderbuffer,EXT,direct_state_access} | @ref GL::Framebuffer::attachRenderbuffer(), \n @ref GL::Framebuffer::detach()
-@fn_gl{FramebufferTexture}, \n `glNamedFramebufferTexture()`, \n @fn_gl_extension{NamedFramebufferTexture,EXT,direct_state_access} | @ref GL::Framebuffer::attachLayeredTexture()
-@fn_gl2{FramebufferTexture1D,FramebufferTexture}, \n @fn_gl_extension{NamedFramebufferTexture1D,EXT,direct_state_access}, \n `glFramebufferTexture2D()`, \n `glNamedFramebufferTexture2DEXT()` | @ref GL::Framebuffer::attachTexture(), \n @ref GL::Framebuffer::attachCubeMapTexture()
+@fn_gl{FlushMappedBufferRange}, \n `glFlushMappedNamedBufferRange()` | @ref GL::Buffer::flushMappedRange()
+@fn_gl2{FramebufferParameter,FramebufferParameteri}, \n `glNamedFramebufferParameter()` | |
+@fn_gl{FramebufferRenderbuffer}, \n `glNamedFramebufferRenderbuffer()` | @ref GL::Framebuffer::attachRenderbuffer(), \n @ref GL::Framebuffer::detach()
+@fn_gl{FramebufferTexture}, \n `glNamedFramebufferTexture()` | @ref GL::Framebuffer::attachLayeredTexture()
+@fn_gl2{FramebufferTexture1D,FramebufferTexture}, \n `glFramebufferTexture2D()`, \n `glNamedFramebufferTexture2DEXT()` | @ref GL::Framebuffer::attachTexture(), \n @ref GL::Framebuffer::attachCubeMapTexture()
@fn_gl2{FramebufferTexture3D,FramebufferTexture} | not used, @fn_gl{FramebufferTextureLayer} has more complete features
-@fn_gl{FramebufferTextureLayer}, \n `glNamedFramebufferTextureLayer()`, \n @fn_gl_extension{NamedFramebufferTextureLayer,EXT,direct_state_access} | @ref GL::Framebuffer::attachTextureLayer(), \n @ref GL::Framebuffer::attachCubeMapTexture()
+@fn_gl{FramebufferTextureLayer}, \n `glNamedFramebufferTextureLayer()` | @ref GL::Framebuffer::attachTextureLayer(), \n @ref GL::Framebuffer::attachCubeMapTexture()
@fn_gl{FrontFace} | @ref GL::Renderer::setFrontFace()
@subsection opengl-mapping-functions-g G
@@ -187,22 +187,22 @@ OpenGL function | Matching API
@fn_gl{GenTextures}, \n @fn_gl{CreateTextures}, \n @fn_gl{DeleteTextures} | @ref GL::AbstractTexture constructor and destructor
@fn_gl{GenTransformFeedbacks}, \n @fn_gl{CreateTransformFeedbacks}, \n @fn_gl{DeleteTransformFeedbacks} | |
@fn_gl{GenVertexArrays}, \n @fn_gl{CreateVertexArrays}, \n @fn_gl{DeleteVertexArrays} | @ref GL::Mesh constructor and destructor
-@fn_gl{GenerateMipmap}, \n `glGenerateTextureMipmap()`, \n @fn_gl_extension{GenerateTextureMipmap,EXT,direct_state_access} | @ref GL::Texture::generateMipmap(), \n @ref GL::TextureArray::generateMipmap(), \n @ref GL::CubeMapTexture::generateMipmap(), \n @ref GL::CubeMapTextureArray::generateMipmap()
+@fn_gl{GenerateMipmap}, \n `glGenerateTextureMipmap()` | @ref GL::Texture::generateMipmap(), \n @ref GL::TextureArray::generateMipmap(), \n @ref GL::CubeMapTexture::generateMipmap(), \n @ref GL::CubeMapTextureArray::generateMipmap()
@fn_gl{Get} | see @ref opengl-mapping-state "table below"
@fn_gl2{GetActiveAtomicCounterBuffer,GetActiveAtomicCounterBufferiv} | not queryable
@fn_gl{GetActiveAttrib}, \n @fn_gl{GetActiveSubroutineName}, \n @fn_gl{GetActiveSubroutineUniform}, \n @fn_gl{GetActiveSubroutineUniformName}, \n @fn_gl{GetActiveUniform}, \n @fn_gl{GetActiveUniformBlock}, \n @fn_gl{GetActiveUniformBlockName}, \n @fn_gl{GetActiveUniformName}, \n @fn_gl{GetActiveUniforms} | not queryable
@fn_gl{GetAttachedShaders} | not queryable, @ref GL::AbstractShaderProgram::attachShader() setter only
@fn_gl{GetAttribLocation} | not queryable, @ref GL::AbstractShaderProgram::bindAttributeLocation() setter only
-@fn_gl{GetBufferParameter}, \n `glGetNamedBufferParameter()`, \n @fn_gl_extension{GetNamedBufferParameter,EXT,direct_state_access} | @ref GL::Buffer::size()
-@fn_gl2{GetBufferPointer,GetBufferPointerv}, \n `glGetNamedBufferPointer()`, \n @fn_gl_extension{GetNamedBufferPointer,EXT,direct_state_access} | not queryable, @ref GL::Buffer::map() setter only
-@fn_gl{GetBufferSubData}, \n `glGetNamedBufferSubData()`, \n @fn_gl_extension{GetNamedBufferSubData,EXT,direct_state_access} | @ref GL::Buffer::data(), \n @ref GL::Buffer::subData()
-@fn_gl{GetCompressedTexImage}, \n `glGetnCompressedTexImage()`, \n @fn_gl_extension{GetnCompressedTexImage,ARB,robustness}, \n `glGetCompressedTextureImage()`, \n @fn_gl_extension{GetCompressedTextureImage,EXT,direct_state_access} | @ref GL::Texture::compressedImage(), \n @ref GL::TextureArray::compressedImage(), \n @ref GL::CubeMapTexture::compressedImage(), \n @ref GL::CubeMapTextureArray::compressedImage(), \n @ref GL::RectangleTexture::compressedImage()
+@fn_gl{GetBufferParameter}, \n `glGetNamedBufferParameter()` | @ref GL::Buffer::size()
+@fn_gl2{GetBufferPointer,GetBufferPointerv}, \n `glGetNamedBufferPointer()` | not queryable, @ref GL::Buffer::map() setter only
+@fn_gl{GetBufferSubData}, \n `glGetNamedBufferSubData()` | @ref GL::Buffer::data(), \n @ref GL::Buffer::subData()
+@fn_gl{GetCompressedTexImage}, \n `glGetnCompressedTexImage()`, \n @fn_gl_extension{GetnCompressedTexImage,ARB,robustness}, \n `glGetCompressedTextureImage()` | @ref GL::Texture::compressedImage(), \n @ref GL::TextureArray::compressedImage(), \n @ref GL::CubeMapTexture::compressedImage(), \n @ref GL::CubeMapTextureArray::compressedImage(), \n @ref GL::RectangleTexture::compressedImage()
@fn_gl{GetCompressedTextureSubImage} | @ref GL::Texture::compressedSubImage(), \n @ref GL::TextureArray::compressedSubImage(), \n @ref GL::CubeMapTexture::compressedImage(), \n @ref GL::CubeMapTexture::compressedSubImage(), \n @ref GL::CubeMapTextureArray::compressedSubImage(), \n @ref GL::RectangleTexture::compressedSubImage()
@fn_gl{GetDebugMessageLog} | |
@fn_gl{GetError} | @ref GL::Renderer::error()
@fn_gl{GetFragDataIndex}, @fn_gl{GetFragDataLocation} | not queryable, @ref GL::AbstractShaderProgram::bindFragmentDataLocation() and \n @ref GL::AbstractShaderProgram::bindFragmentDataLocationIndexed() setters only
-@fn_gl{GetFramebufferAttachmentParameter}, \n `glGetNamedFramebufferAttachmentParameter()`, \n @fn_gl_extension{GetNamedFramebufferAttachmentParameter,EXT,direct_state_access} | not queryable, @ref GL::Framebuffer setters only
-@fn_gl{GetFramebufferParameter}, \n `glGetNamedFramebufferParameter()`, \n @fn_gl_extension{GetNamedFramebufferParameter,EXT,direct_state_access} | not queryable, @ref GL::DefaultFramebuffer and \n @ref GL::Framebuffer setters only
+@fn_gl{GetFramebufferAttachmentParameter}, \n `glGetNamedFramebufferAttachmentParameter()` | not queryable, @ref GL::Framebuffer setters only
+@fn_gl{GetFramebufferParameter}, \n `glGetNamedFramebufferParameter()` | not queryable, @ref GL::DefaultFramebuffer and \n @ref GL::Framebuffer setters only
@fn_gl{GetGraphicsResetStatus}, \n @fn_gl_extension{GetGraphicsResetStatus,ARB,robustness} | @ref GL::Renderer::graphicsResetStatus()
@fn_gl_extension{GetImageHandle,ARB,bindless_texture} | |
@fn_gl{GetInternalformat} | |
@@ -219,7 +219,7 @@ OpenGL function | Matching API
@fn_gl{GetQueryObject} | @ref GL::AbstractQuery::result()
@fn_gl{GetQueryBufferObject} | |
@fn_gl2{GetQuery,GetQueryiv} | |
-@fn_gl{GetRenderbufferParameter}, \n `glGetNamedRenderbufferParameter()`, \n @fn_gl_extension{GetNamedRenderbufferParameter,EXT,direct_state_access} | not queryable, @ref GL::Renderbuffer::setStorage() and \n @ref GL::Renderbuffer::setStorageMultisample() setter only
+@fn_gl{GetRenderbufferParameter}, \n `glGetNamedRenderbufferParameter()` | not queryable, @ref GL::Renderbuffer::setStorage() and \n @ref GL::Renderbuffer::setStorageMultisample() setter only
@fn_gl{GetSamplerParameter} | |
@fn_gl{GetShader}, \n @fn_gl{GetShaderInfoLog} | @ref GL::Shader::compile()
@fn_gl{GetShaderPrecisionFormat} | |
@@ -228,9 +228,9 @@ OpenGL function | Matching API
@fn_gl{GetSubroutineIndex} | |
@fn_gl{GetSubroutineUniformLocation} | |
@fn_gl{GetSync} | |
-@fn_gl{GetTexImage}, \n `glGetnTexImage()`, \n @fn_gl_extension{GetnTexImage,ARB,robustness}, \n `glGetTextureImage()`, \n @fn_gl_extension{GetTextureImage,EXT,direct_state_access} | @ref GL::Texture::image(), \n @ref GL::TextureArray::image(), \n @ref GL::CubeMapTexture::image(), \n @ref GL::CubeMapTextureArray::image(), \n @ref GL::RectangleTexture::image()
-@fn_gl{GetTexLevelParameter}, \n `glGetTextureLevelParameter()`, \n @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} | @ref GL::Texture::imageSize(), \n @ref GL::TextureArray::imageSize(), \n @ref GL::CubeMapTexture::imageSize(), \n @ref GL::CubeMapTextureArray::imageSize(), \n @ref GL::RectangleTexture::imageSize()
-@fn_gl{GetTexParameter}, \n `glGetTextureParameter()`, \n @fn_gl_extension{GetTextureParameter,EXT,direct_state_access} | |
+@fn_gl{GetTexImage}, \n `glGetnTexImage()`, \n @fn_gl_extension{GetnTexImage,ARB,robustness}, \n `glGetTextureImage()` | @ref GL::Texture::image(), \n @ref GL::TextureArray::image(), \n @ref GL::CubeMapTexture::image(), \n @ref GL::CubeMapTextureArray::image(), \n @ref GL::RectangleTexture::image()
+@fn_gl{GetTexLevelParameter}, \n `glGetTextureLevelParameter()` | @ref GL::Texture::imageSize(), \n @ref GL::TextureArray::imageSize(), \n @ref GL::CubeMapTexture::imageSize(), \n @ref GL::CubeMapTextureArray::imageSize(), \n @ref GL::RectangleTexture::imageSize()
+@fn_gl{GetTexParameter}, \n `glGetTextureParameter()` | |
@fn_gl_extension{GetTextureHandle,ARB,bindless_texture} | |
@fn_gl_extension{GetTextureSamplerHandle,ARB,bindless_texture} | |
@fn_gl{GetTextureSubImage} | @ref GL::Texture::subImage(), \n @ref GL::TextureArray::subImage(), \n @ref GL::CubeMapTexture::image(), \n @ref GL::CubeMapTexture::subImage(), \n @ref GL::CubeMapTextureArray::subImage(), \n @ref GL::RectangleTexture::subImage()
@@ -241,7 +241,7 @@ OpenGL function | Matching API
@fn_gl{GetUniformIndices} | |
@fn_gl{GetUniformLocation} | @ref GL::AbstractShaderProgram::uniformLocation()
@fn_gl{GetUniformSubroutine} | |
-@fn_gl{GetVertexAttrib}, \n @fn_gl{GetVertexArray}, \n @fn_gl_extension{GetVertexArray,EXT,direct_state_access} | not queryable, @ref GL::Mesh::addVertexBuffer() setter only
+@fn_gl{GetVertexAttrib}, \n @fn_gl{GetVertexArray} | not queryable, @ref GL::Mesh::addVertexBuffer() setter only
@subsection opengl-mapping-functions-h H
@@ -288,7 +288,7 @@ OpenGL function | Matching API
@fn_gl_extension{MakeImageHandleNonResident,ARB,bindless_texture} | |
@fn_gl_extension{MakeTextureHandleResident,ARB,bindless_texture} | |
@fn_gl_extension{MakeTextureHandleNonResident,ARB,bindless_texture} | |
-@fn_gl{MapBuffer}, \n `glMapNamedBuffer()`, \n @fn_gl_extension{MapNamedBuffer,EXT,direct_state_access}, \n @fn_gl{MapBufferRange}, \n `glMapNamedBufferRange()`, \n @fn_gl_extension{MapNamedBufferRange,EXT,direct_state_access}, \n @fn_gl{UnmapBuffer}, \n `glUnmapNamedBuffer()`, \n @fn_gl_extension{UnmapNamedBuffer,EXT,direct_state_access} | @ref GL::Buffer::map(), @ref GL::Buffer::unmap()
+@fn_gl{MapBuffer}, \n `glMapNamedBuffer()`, \n @fn_gl{MapBufferRange}, \n `glMapNamedBufferRange()`, \n @fn_gl{UnmapBuffer}, \n `glUnmapNamedBuffer()` | @ref GL::Buffer::map(), @ref GL::Buffer::unmap()
@fn_gl{MemoryBarrier}, \n `glMemoryBarrierByRegion()` | @ref GL::Renderer::setMemoryBarrier(), \n @ref GL::Renderer::setMemoryBarrierByRegion()
@fn_gl{MinSampleShading} | @ref GL::Renderer::setMinSampleShading()
@fn_gl{MultiDrawArrays}, \n @fn_gl{MultiDrawElements}, \n @fn_gl{MultiDrawElementsBaseVertex} | @ref GL::MeshView::draw(AbstractShaderProgram&, std::initializer_list>)
@@ -338,11 +338,11 @@ OpenGL function | Matching API
OpenGL function | Matching API
--------------------------------------- | ------------
-@fn_gl{ReadBuffer}, \n `glNamedFramebufferReadBuffer()`, \n @fn_gl_extension{FramebufferReadBuffer,EXT,direct_state_access} | @ref GL::DefaultFramebuffer::mapForRead(), \n @ref GL::Framebuffer::mapForRead()
+@fn_gl{ReadBuffer}, \n `glNamedFramebufferReadBuffer()` | @ref GL::DefaultFramebuffer::mapForRead(), \n @ref GL::Framebuffer::mapForRead()
@fn_gl{ReadPixels}, \n `glReadnPixels()`, \n @fn_gl_extension{ReadnPixels,ARB,robustness} | @ref GL::DefaultFramebuffer::read(), \n @ref GL::Framebuffer::read()
@fn_gl{ReleaseShaderCompiler} | |
-@fn_gl{RenderbufferStorage}, \n `glNamedRenderbufferStorage()`, \n @fn_gl_extension{NamedRenderbufferStorage,EXT,direct_state_access} | @ref GL::Renderbuffer::setStorage()
-@fn_gl{RenderbufferStorageMultisample}, \n `glNamedRenderbufferStorageMultisample()`, \n @fn_gl_extension{NamedRenderbufferStorageMultisample,EXT,direct_state_access} | @ref GL::Renderbuffer::setStorageMultisample()
+@fn_gl{RenderbufferStorage}, \n `glNamedRenderbufferStorage()` | @ref GL::Renderbuffer::setStorage()
+@fn_gl{RenderbufferStorageMultisample}, \n `glNamedRenderbufferStorageMultisample()` | @ref GL::Renderbuffer::setStorageMultisample()
@subsection opengl-mapping-functions-s S
@@ -370,14 +370,14 @@ OpenGL function | Matching API
OpenGL function | Matching API
--------------------------------------- | ------------
-@fn_gl{TexBuffer}, \n `glTextureBuffer()`, \n @fn_gl_extension{TextureBuffer,EXT,direct_state_access}, \n @fn_gl{TexBufferRange}, \n `glTextureBufferRange()`, \n @fn_gl_extension{TextureBufferRange,EXT,direct_state_access} | @ref GL::BufferTexture::setBuffer()
+@fn_gl{TexBuffer}, \n `glTextureBuffer()`, \n @fn_gl{TexBufferRange}, \n `glTextureBufferRange()` | @ref GL::BufferTexture::setBuffer()
@fn_gl{TexImage1D}, \n @fn_gl{TexImage2D}, \n @fn_gl{TexImage3D} | @ref GL::Texture::setImage(), \n @ref GL::TextureArray::setImage(), \n @ref GL::CubeMapTexture::setImage(), \n @ref GL::CubeMapTextureArray::setImage(), \n @ref GL::RectangleTexture::setImage()
@fn_gl{TexImage2DMultisample}, \n @fn_gl{TexImage3DMultisample} | @ref GL::MultisampleTexture::setStorage()
@fn_gl_extension{TexPageCommitment,ARB,sparse_texture} | |
-@fn_gl{TexParameter}, \n `glTextureParameter()`, \n @fn_gl_extension{TextureParameter,EXT,direct_state_access} | @ref GL::Texture::setBaseLevel() "*Texture::setBaseLevel()", \n @ref GL::Texture::setMaxLevel() "*Texture::setMaxLevel()", \n @ref GL::Texture::setMinificationFilter() "*Texture::setMinificationFilter()", \n @ref GL::Texture::setMagnificationFilter() "*Texture::setMagnificationFilter()", \n @ref GL::Texture::setMinLod() "*Texture::setMinLod()", \n @ref GL::Texture::setMaxLod() "*Texture::setMaxLod()", \n @ref GL::Texture::setLodBias() "*Texture::setLodBias()", \n @ref GL::Texture::setWrapping() "*Texture::setWrapping()", \n @ref GL::Texture::setBorderColor() "*Texture::setBorderColor()", \n @ref GL::Texture::setMaxAnisotropy() "*Texture::setMaxAnisotropy()", \n @ref GL::Texture::setSrgbDecode() "*Texture::setSrgbDecode()", \n @ref GL::Texture::setSwizzle() "*Texture::setSwizzle()", \n @ref GL::Texture::setCompareMode() "*Texture::setCompareMode()", \n @ref GL::Texture::setCompareFunction() "*Texture::setCompareFunction()", \n @ref GL::Texture::setDepthStencilMode() "*Texture::setDepthStencilMode()"
-@fn_gl{TexStorage1D}, \n `glTextureStorage1D()`, \n @fn_gl_extension{TextureStorage1D,EXT,direct_state_access}, \n @fn_gl{TexStorage2D}, \n `glTextureStorage2D()`, \n @fn_gl_extension{TextureStorage2D,EXT,direct_state_access}, \n @fn_gl{TexStorage3D}, \n `glTextureStorage3D()`, \n @fn_gl_extension{TextureStorage3D,EXT,direct_state_access} | @ref GL::Texture::setStorage(), \n @ref GL::TextureArray::setStorage(), \n @ref GL::CubeMapTexture::setStorage(), \n @ref GL::CubeMapTextureArray::setStorage(), \n @ref GL::RectangleTexture::setStorage()
-@fn_gl{TexStorage2DMultisample}, \n `glTextureStorage2DMultisample()`, \n @fn_gl_extension{TextureStorage2DMultisample,EXT,direct_state_access}, \n @fn_gl{TexStorage3DMultisample}, \n `glTextureStorage3DMultisample()`, \n @fn_gl_extension{TextureStorage3DMultisample,EXT,direct_state_access} | @ref GL::MultisampleTexture::setStorage()
-@fn_gl{TexSubImage1D}, \n `glTextureSubImage1D()`, \n @fn_gl_extension{TextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{TexSubImage2D}, \n `glTextureSubImage2D()`, \n @fn_gl_extension{TextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{TexSubImage3D}, \n `glTextureSubImage3D()`, \n @fn_gl_extension{TextureSubImage3D,EXT,direct_state_access} | @ref GL::Texture::setSubImage(), \n @ref GL::TextureArray::setSubImage(), \n @ref GL::CubeMapTexture::setSubImage(), \n @ref GL::CubeMapTextureArray::setSubImage(), \n @ref GL::RectangleTexture::setSubImage()
+@fn_gl{TexParameter}, \n `glTextureParameter()` | @ref GL::Texture::setBaseLevel() "*Texture::setBaseLevel()", \n @ref GL::Texture::setMaxLevel() "*Texture::setMaxLevel()", \n @ref GL::Texture::setMinificationFilter() "*Texture::setMinificationFilter()", \n @ref GL::Texture::setMagnificationFilter() "*Texture::setMagnificationFilter()", \n @ref GL::Texture::setMinLod() "*Texture::setMinLod()", \n @ref GL::Texture::setMaxLod() "*Texture::setMaxLod()", \n @ref GL::Texture::setLodBias() "*Texture::setLodBias()", \n @ref GL::Texture::setWrapping() "*Texture::setWrapping()", \n @ref GL::Texture::setBorderColor() "*Texture::setBorderColor()", \n @ref GL::Texture::setMaxAnisotropy() "*Texture::setMaxAnisotropy()", \n @ref GL::Texture::setSrgbDecode() "*Texture::setSrgbDecode()", \n @ref GL::Texture::setSwizzle() "*Texture::setSwizzle()", \n @ref GL::Texture::setCompareMode() "*Texture::setCompareMode()", \n @ref GL::Texture::setCompareFunction() "*Texture::setCompareFunction()", \n @ref GL::Texture::setDepthStencilMode() "*Texture::setDepthStencilMode()"
+@fn_gl{TexStorage1D}, \n `glTextureStorage1D()`, \n @fn_gl{TexStorage2D}, \n `glTextureStorage2D()`, \n @fn_gl{TexStorage3D}, \n `glTextureStorage3D()` | @ref GL::Texture::setStorage(), \n @ref GL::TextureArray::setStorage(), \n @ref GL::CubeMapTexture::setStorage(), \n @ref GL::CubeMapTextureArray::setStorage(), \n @ref GL::RectangleTexture::setStorage()
+@fn_gl{TexStorage2DMultisample}, \n `glTextureStorage2DMultisample()`, \n @fn_gl{TexStorage3DMultisample}, \n `glTextureStorage3DMultisample()` | @ref GL::MultisampleTexture::setStorage()
+@fn_gl{TexSubImage1D}, \n `glTextureSubImage1D()`, \n @fn_gl{TexSubImage2D}, \n `glTextureSubImage2D()`, \n @fn_gl{TexSubImage3D}, \n `glTextureSubImage3D()` | @ref GL::Texture::setSubImage(), \n @ref GL::TextureArray::setSubImage(), \n @ref GL::CubeMapTexture::setSubImage(), \n @ref GL::CubeMapTextureArray::setSubImage(), \n @ref GL::RectangleTexture::setSubImage()
@fn_gl{TextureBarrier} | @ref GL::Renderer::setTextureBarrier()
@fn_gl{TextureView} | |
@fn_gl{TransformFeedbackBufferBase}, \n @fn_gl{TransformFeedbackBufferRange} | @ref GL::TransformFeedback::attachBuffer(), \n @ref GL::TransformFeedback::attachBuffers()
@@ -389,7 +389,7 @@ OpenGL function | Matching API
OpenGL function | Matching API
--------------------------------------- | ------------
-@fn_gl{Uniform}, \n @fn_gl{ProgramUniform}, \n @fn_gl_extension{ProgramUniform,EXT,direct_state_access} | @ref GL::AbstractShaderProgram::setUniform()
+@fn_gl{Uniform}, \n @fn_gl{ProgramUniform} | @ref GL::AbstractShaderProgram::setUniform()
@fn_gl_extension{UniformHandle,ARB,bindless_texture}, \n @fn_gl_extension{ProgramUniformHandle,ARB,bindless_texture} | |
@fn_gl{UniformBlockBinding} | @ref GL::AbstractShaderProgram::setUniformBlockBinding()
@fn_gl{UniformSubroutines} | |
@@ -406,11 +406,11 @@ OpenGL function | Matching API
@fn_gl{ValidateProgramPipeline} | |
@fn_gl{VertexArrayElementBuffer} | |
@fn_gl{VertexAttrib} | not supported (@ref opengl-unsupported "details")
-@fn_gl{VertexAttribBinding}, \n `glVertexArrayAttribBinding()`, \n @fn_gl_extension{VertexArrayVertexAttribBinding,EXT,direct_state_access} | |
-@fn_gl{VertexAttribDivisor}, \n @fn_gl_extension{VertexArrayVertexAttribDivisor,EXT,direct_state_access} | @ref GL::Mesh::addVertexBufferInstanced()
-@fn_gl{VertexAttribFormat}, \n `glVertexArrayAttribFormat()`, \n @fn_gl_extension{VertexArrayVertexAttribFormat,EXT,direct_state_access} | |
-@fn_gl{VertexAttribPointer}, \n @fn_gl_extension{VertexArrayVertexAttribOffset,EXT,direct_state_access} | @ref GL::Mesh::addVertexBuffer()
-@fn_gl{VertexBindingDivisor}, \n `glVertexArrayBindingDivisor()`, \n @fn_gl_extension{VertexArrayVertexBindingDivisor,EXT,direct_state_access} | |
+@fn_gl{VertexAttribBinding}, \n `glVertexArrayAttribBinding()` | |
+@fn_gl{VertexAttribDivisor} | @ref GL::Mesh::addVertexBufferInstanced()
+@fn_gl{VertexAttribFormat}, \n `glVertexArrayAttribFormat()` | |
+@fn_gl{VertexAttribPointer} | @ref GL::Mesh::addVertexBuffer()
+@fn_gl{VertexBindingDivisor}, \n `glVertexArrayBindingDivisor()` | |
@fn_gl{Viewport} | @ref GL::DefaultFramebuffer::setViewport(), \n @ref GL::Framebuffer::setViewport()
@fn_gl{ViewportArray} | |
@fn_gl{ViewportIndexed} | |
diff --git a/doc/opengl-support.dox b/doc/opengl-support.dox
index c2d603bea..df70b992a 100644
--- a/doc/opengl-support.dox
+++ b/doc/opengl-support.dox
@@ -315,7 +315,6 @@ Extension | Status
@gl_extension{EXT,texture_filter_anisotropic} | done
@gl_extension{EXT,texture_compression_s3tc} | done
@gl_extension{EXT,texture_mirror_clamp} | only GL 4.4 subset
-@gl_extension{EXT,direct_state_access} | done for implemented functionality
@gl_extension{EXT,texture_sRGB_decode} | done
@gl_extension{EXT,shader_integer_mix} | done (shading language only)
@gl_extension{EXT,debug_label} | missing pipeline and sampler label
diff --git a/doc/opengl-wrapping.dox b/doc/opengl-wrapping.dox
index 1903f8d1a..7ae7a8076 100644
--- a/doc/opengl-wrapping.dox
+++ b/doc/opengl-wrapping.dox
@@ -124,16 +124,16 @@ Some functionality can be emulated by Magnum --- it detects available extensions
and selects best possible code path for optimal performance. On startup, the
application prints list of extensions that were used to improve the default
functionality. The most prominent feature is @gl_extension{ARB,direct_state_access}
-(part of OpenGL 4.3) and its predecessor @gl_extension{EXT,direct_state_access}.
-These extensions make it possible to modify OpenGL objects without explicitly
-binding them, reducing the amount of needed API calls. Magnum API is designed
-around direct state access as it is far easier to use and less error-prone, but
-if these extensions are not available, the functionality is emulated through
-classic bind-to-edit approach. Other examples of extension-dependent
-functionality is @ref GL::DebugMessage "debug output" which is simply no-op
-when required extensions are not available, @ref GL::Texture::setStorage()
-emulation on platforms that don't support it etc. The goal is to abstract away
-the (mostly unimportant) differences for easier porting.
+(part of OpenGL 4.3). This extension makes it possible to modify OpenGL objects
+without explicitly binding them, reducing the amount of needed API calls.
+Magnum API is designed around direct state access as it is far easier to use
+and less error-prone, but if this extension is not available, the functionality
+is emulated through classic bind-to-edit approach. Other examples of
+extension-dependent functionality is @ref GL::DebugMessage "debug output" which
+is simply no-op when required extensions are not available,
+@ref GL::Texture::setStorage() emulation on platforms that don't support it
+etc. The goal is to abstract away the (mostly unimportant) differences for
+easier porting.
@snippet MagnumGL.cpp opengl-wrapping-dsa
diff --git a/doc/snippets/MagnumGL.cpp b/doc/snippets/MagnumGL.cpp
index 77448c46e..2e874df00 100644
--- a/doc/snippets/MagnumGL.cpp
+++ b/doc/snippets/MagnumGL.cpp
@@ -201,7 +201,6 @@ static_cast(format);
GL::Texture2D texture;
/* - on OpenGL 4.5+/ARB_direct_state_access this calls glTextureStorage2D()
- - if EXT_direct_state_access is available, calls glTextureStorage2DEXT()
- on OpenGL 4.2+/ARB_texture_storage and OpenGL ES 3.0+ calls glTexStorage2D()
- on OpenGL ES 2.0 with EXT_texture_storage calls glTexStorage2DEXT()
- otherwise emulated using a sequence of four glTexImage2D() calls */
diff --git a/doc/snippets/coding-style.h b/doc/snippets/coding-style.h
index 18c4ad7c2..4e30dc423 100644
--- a/doc/snippets/coding-style.h
+++ b/doc/snippets/coding-style.h
@@ -53,7 +53,7 @@ static void setSeamless(bool enabled) {
/* [fn_gl2] */
/* [fn_gl_extension] */
-/** @fn_gl_extension{NamedCopyBufferSubData,EXT,direct_state_access} */
+/** @fn_gl_extension{LabelObject,EXT,debug_label} */
/* [fn_gl_extension] */
/* [fn_vk] */
diff --git a/package/archlinux/PKGBUILD b/package/archlinux/PKGBUILD
index c901b0e9f..fef3ba2cc 100644
--- a/package/archlinux/PKGBUILD
+++ b/package/archlinux/PKGBUILD
@@ -63,7 +63,6 @@ check() {
CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_invalidate_subdata GL_ARB_multi_bind GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_shading_language_420pack GL_ARB_explicit_uniform_location GL_ARB_explicit_attrib_location GL_ARB_texture_filter_anisotropic" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_direct_state_access" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
- MAGNUM_DISABLE_EXTENSIONS="GL_EXT_direct_state_access" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_get_texture_sub_image" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_vertex_array_object" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
MAGNUM_DISABLE_EXTENSIONS="GL_KHR_debug" CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest
diff --git a/package/archlinux/PKGBUILD-coverage b/package/archlinux/PKGBUILD-coverage
index aa7e0df34..73df06338 100644
--- a/package/archlinux/PKGBUILD-coverage
+++ b/package/archlinux/PKGBUILD-coverage
@@ -65,7 +65,6 @@ check() {
CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 || true
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_invalidate_subdata GL_ARB_multi_bind GL_ARB_robustness GL_ARB_separate_shader_objects GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_shading_language_420pack GL_ARB_explicit_uniform_location GL_ARB_explicit_attrib_location GL_ARB_texture_filter_anisotropic" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_direct_state_access" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
- MAGNUM_DISABLE_EXTENSIONS="GL_EXT_direct_state_access" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_get_texture_sub_image" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
MAGNUM_DISABLE_EXTENSIONS="GL_ARB_vertex_array_object" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
MAGNUM_DISABLE_EXTENSIONS="GL_KHR_debug" CORRADE_SKIP_BENCHMARKS=ON CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5 -R GLTest || true
diff --git a/src/Magnum/GL/AbstractFramebuffer.cpp b/src/Magnum/GL/AbstractFramebuffer.cpp
index ead656af2..9da1b8e7f 100644
--- a/src/Magnum/GL/AbstractFramebuffer.cpp
+++ b/src/Magnum/GL/AbstractFramebuffer.cpp
@@ -524,11 +524,6 @@ GLenum AbstractFramebuffer::checkStatusImplementationSingle(FramebufferTarget) {
GLenum AbstractFramebuffer::checkStatusImplementationDSA(const FramebufferTarget target) {
return glCheckNamedFramebufferStatus(_id, GLenum(target));
}
-
-GLenum AbstractFramebuffer::checkStatusImplementationDSAEXT(const FramebufferTarget target) {
- _flags |= ObjectFlag::Created;
- return glCheckNamedFramebufferStatusEXT(_id, GLenum(target));
-}
#endif
#ifndef MAGNUM_TARGET_GLES2
@@ -582,11 +577,6 @@ void AbstractFramebuffer::drawBuffersImplementationDefault(GLsizei count, const
void AbstractFramebuffer::drawBuffersImplementationDSA(const GLsizei count, const GLenum* const buffers) {
glNamedFramebufferDrawBuffers(_id, count, buffers);
}
-
-void AbstractFramebuffer::drawBuffersImplementationDSAEXT(GLsizei count, const GLenum* buffers) {
- _flags |= ObjectFlag::Created;
- glFramebufferDrawBuffersEXT(_id, count, buffers);
-}
#endif
#else
void AbstractFramebuffer::drawBuffersImplementationEXT(GLsizei count, const GLenum* buffers) {
@@ -612,11 +602,6 @@ void AbstractFramebuffer::drawBufferImplementationDefault(GLenum buffer) {
void AbstractFramebuffer::drawBufferImplementationDSA(const GLenum buffer) {
glNamedFramebufferDrawBuffer(_id, buffer);
}
-
-void AbstractFramebuffer::drawBufferImplementationDSAEXT(GLenum buffer) {
- _flags |= ObjectFlag::Created;
- glFramebufferDrawBufferEXT(_id, buffer);
-}
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -635,11 +620,6 @@ void AbstractFramebuffer::readBufferImplementationDefault(GLenum buffer) {
void AbstractFramebuffer::readBufferImplementationDSA(const GLenum buffer) {
glNamedFramebufferReadBuffer(_id, buffer);
}
-
-void AbstractFramebuffer::readBufferImplementationDSAEXT(GLenum buffer) {
- _flags |= ObjectFlag::Created;
- glFramebufferReadBufferEXT(_id, buffer);
-}
#endif
void AbstractFramebuffer::readImplementationDefault(const Range2Di& rectangle, const PixelFormat format, const PixelType type, const std::size_t, GLvoid* const data) {
@@ -665,11 +645,6 @@ void AbstractFramebuffer::copySub1DImplementationDefault(const Range2Di& rectang
void AbstractFramebuffer::copySub1DImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, const Int level, const Int offset) {
glCopyTextureSubImage1D(texture._id, level, offset, rectangle.min().x(), rectangle.min().y(), rectangle.sizeX());
}
-
-void AbstractFramebuffer::copySub1DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, const Int level, const Int offset) {
- texture._flags |= ObjectFlag::Created;
- glCopyTextureSubImage1DEXT(texture._id, texture._target, level, offset, rectangle.min().x(), rectangle.min().y(), rectangle.sizeX());
-}
#endif
void AbstractFramebuffer::copySub2DImplementationDefault(const Range2Di& rectangle, AbstractTexture& texture, const GLenum target, const Int level, const Vector2i& offset) {
@@ -685,11 +660,6 @@ void AbstractFramebuffer::copySub2DImplementationDSA(const Range2Di& rectangle,
void AbstractFramebuffer::copySubCubeMapImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, const GLenum target, const Int level, const Vector2i& offset) {
glCopyTextureSubImage3D(texture._id, level, offset.x(), offset.y(), target - GL_TEXTURE_CUBE_MAP_POSITIVE_X, rectangle.min().x(), rectangle.min().y(), rectangle.sizeX(), rectangle.sizeY());
}
-
-void AbstractFramebuffer::copySub2DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, const GLenum target, const Int level, const Vector2i& offset) {
- texture._flags |= ObjectFlag::Created;
- glCopyTextureSubImage2DEXT(texture._id, target, level, offset.x(), offset.y(), rectangle.min().x(), rectangle.min().y(), rectangle.sizeX(), rectangle.sizeY());
-}
#endif
#if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL))
@@ -708,11 +678,6 @@ void AbstractFramebuffer::copySub3DImplementationDefault(const Range2Di& rectang
void AbstractFramebuffer::copySub3DImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, const Int level, const Vector3i& offset) {
glCopyTextureSubImage3D(texture._id, level, offset.x(), offset.y(), offset.z(), rectangle.min().x(), rectangle.min().y(), rectangle.sizeX(), rectangle.sizeY());
}
-
-void AbstractFramebuffer::copySub3DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, const Int level, const Vector3i& offset) {
- texture._flags |= ObjectFlag::Created;
- glCopyTextureSubImage3DEXT(texture._id, texture._target, level, offset.x(), offset.y(), offset.z(), rectangle.min().x(), rectangle.min().y(), rectangle.sizeX(), rectangle.sizeY());
-}
#endif
}}
diff --git a/src/Magnum/GL/AbstractFramebuffer.h b/src/Magnum/GL/AbstractFramebuffer.h
index ab0576662..22be82dad 100644
--- a/src/Magnum/GL/AbstractFramebuffer.h
+++ b/src/Magnum/GL/AbstractFramebuffer.h
@@ -560,13 +560,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param level Texture mip level
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref Texture1D::setStorage(), @fn_gl{BindFramebuffer}, then
* @fn_gl2_keyword{CopyTextureSubImage1D,CopyTexSubImage1D},
- * @fn_gl_extension_keyword{CopyTextureSubImage1D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage1D}
* @requires_gl 1D textures are not available in OpenGL ES or WebGL.
@@ -581,13 +579,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param level Texture mip level
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref Texture2D::setStorage(), @fn_gl{BindFramebuffer}, then
* @fn_gl2_keyword{CopyTextureSubImage2D,CopyTexSubImage2D},
- * @fn_gl_extension_keyword{CopyTextureSubImage2D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl{CopyTexSubImage2D}
*/
@@ -600,13 +596,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param texture Texture where to put the data
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref RectangleTexture::setStorage(), @fn_gl{BindFramebuffer},
* then @fn_gl2_keyword{CopyTextureSubImage2D,CopyTexSubImage2D},
- * @fn_gl_extension_keyword{CopyTextureSubImage2D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage2D}
* @requires_gl Rectangle textures are not available in OpenGL ES and
@@ -624,12 +618,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
*
* Z coordinate of the offset is equivalent to number of texture face,
* i.e. +X is `0` and so on, in order of (+X, -X, +Y, -Y, +Z, -Z). If
- * neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already).
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already).
* @see @ref CubeMapTexture::setStorage(), @fn_gl{BindFramebuffer},
* then @fn_gl2_keyword{CopyTextureSubImage3D,CopyTexSubImage3D},
- * @fn_gl_extension_keyword{CopyTextureSubImage2D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage2D}
*/
@@ -643,13 +636,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param level Texture mip level
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref Texture3D::setStorage(), @fn_gl{BindFramebuffer}, then
* @fn_gl2_keyword{CopyTextureSubImage3D,CopyTexSubImage3D},
- * @fn_gl_extension_keyword{CopyTextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage3D}
* @requires_gles30 Extension @gl_extension{OES,texture_3D} in OpenGL
@@ -667,13 +658,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param level Texture mip level
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref Texture1DArray::setStorage(), @fn_gl{BindFramebuffer},
* then @fn_gl2_keyword{CopyTextureSubImage2D,CopyTexSubImage2D},
- * @fn_gl_extension_keyword{CopyTextureSubImage2D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage2D}
* @requires_gl 1D array textures are not available in OpenGL ES or
@@ -690,13 +679,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
* @param level Texture mip level
* @param offset Offset inside the texture
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref Texture2DArray::setStorage(), @fn_gl{BindFramebuffer},
* then @fn_gl2_keyword{CopyTextureSubImage3D,CopyTexSubImage3D},
- * @fn_gl_extension_keyword{CopyTextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage3D}
* @requires_gl30 Extension @gl_extension{EXT,texture_array}
@@ -716,13 +703,11 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
*
* Z coordinate of the offset is equivalent to layer * 6 + number of
* texture face, i.e. +X is `0` and so on, in order of (+X, -X, +Y, -Y,
- * +Z, -Z). If neither @gl_extension{ARB,direct_state_access} (part of
- * OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * available, the texture is bound before the operation (if not
- * already).
+ * +Z, -Z). If @gl_extension{ARB,direct_state_access} (part of OpenGL
+ * 4.5) is not available, the texture is bound before the operation (if
+ * not already).
* @see @ref CubeMapTextureArray::setStorage(), @fn_gl{BindFramebuffer},
* then @fn_gl2_keyword{CopyTextureSubImage3D,CopyTexSubImage3D},
- * @fn_gl_extension_keyword{CopyTextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CopyTexSubImage3D}
* @requires_gl40 Extension @gl_extension{ARB,texture_cube_map_array}
@@ -802,7 +787,6 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
#endif
#ifndef MAGNUM_TARGET_GLES
GLenum MAGNUM_GL_LOCAL checkStatusImplementationDSA(FramebufferTarget target);
- GLenum MAGNUM_GL_LOCAL checkStatusImplementationDSAEXT(FramebufferTarget target);
#endif
#ifndef MAGNUM_TARGET_GLES2
@@ -822,7 +806,6 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
void MAGNUM_GL_LOCAL drawBuffersImplementationDefault(GLsizei count, const GLenum* buffers);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL drawBuffersImplementationDSA(GLsizei count, const GLenum* buffers);
- void MAGNUM_GL_LOCAL drawBuffersImplementationDSAEXT(GLsizei count, const GLenum* buffers);
#endif
#else
void MAGNUM_GL_LOCAL drawBuffersImplementationEXT(GLsizei count, const GLenum* buffers);
@@ -834,7 +817,6 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL drawBufferImplementationDefault(GLenum buffer);
void MAGNUM_GL_LOCAL drawBufferImplementationDSA(GLenum buffer);
- void MAGNUM_GL_LOCAL drawBufferImplementationDSAEXT(GLenum buffer);
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -842,7 +824,6 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL readBufferImplementationDSA(GLenum buffer);
- void MAGNUM_GL_LOCAL readBufferImplementationDSAEXT(GLenum buffer);
#endif
static void MAGNUM_GL_LOCAL readImplementationDefault(const Range2Di& rectangle, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
@@ -853,14 +834,12 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
#ifndef MAGNUM_TARGET_GLES
static void MAGNUM_GL_LOCAL copySub1DImplementationDefault(const Range2Di& rectangle, AbstractTexture& texture, Int level, Int offset);
static void MAGNUM_GL_LOCAL copySub1DImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, Int level, Int offset);
- static void MAGNUM_GL_LOCAL copySub1DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, Int level, Int offset);
#endif
static void MAGNUM_GL_LOCAL copySub2DImplementationDefault(const Range2Di& rectangle, AbstractTexture& texture, GLenum textureTarget, Int level, const Vector2i& offset);
#ifndef MAGNUM_TARGET_GLES
static void MAGNUM_GL_LOCAL copySub2DImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, GLenum textureTarget, Int level, const Vector2i& offset);
static void MAGNUM_GL_LOCAL copySubCubeMapImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, GLenum textureTarget, Int level, const Vector2i& offset);
- static void MAGNUM_GL_LOCAL copySub2DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, GLenum textureTarget, Int level, const Vector2i& offset);
#endif
#if !(defined(MAGNUM_TARGET_GLES2) && defined(MAGNUM_TARGET_WEBGL))
@@ -868,7 +847,6 @@ class MAGNUM_GL_EXPORT AbstractFramebuffer {
#endif
#ifndef MAGNUM_TARGET_GLES
static void MAGNUM_GL_LOCAL copySub3DImplementationDSA(const Range2Di& rectangle, AbstractTexture& texture, Int level, const Vector3i& offset);
- static void MAGNUM_GL_LOCAL copySub3DImplementationDSAEXT(const Range2Di& rectangle, AbstractTexture& texture, Int level, const Vector3i& offset);
#endif
void MAGNUM_GL_LOCAL invalidateImplementationNoOp(GLsizei, const GLenum*);
diff --git a/src/Magnum/GL/AbstractShaderProgram.cpp b/src/Magnum/GL/AbstractShaderProgram.cpp
index 2e37632aa..cd831eb99 100644
--- a/src/Magnum/GL/AbstractShaderProgram.cpp
+++ b/src/Magnum/GL/AbstractShaderProgram.cpp
@@ -471,8 +471,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const GLfloat* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const GLfloat* const values) {
glProgramUniform1fvEXT(_id, location, count, values);
}
#endif
@@ -492,8 +492,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLfloat>* const values) {
glProgramUniform2fvEXT(_id, location, count, values[0].data());
}
#endif
@@ -513,8 +513,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLfloat>* const values) {
glProgramUniform3fvEXT(_id, location, count, values[0].data());
}
#endif
@@ -534,8 +534,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLfloat>* const values) {
glProgramUniform4fvEXT(_id, location, count, values[0].data());
}
#endif
@@ -555,8 +555,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const GLint* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const GLint* const values) {
glProgramUniform1ivEXT(_id, location, count, values);
}
#endif
@@ -576,8 +576,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLint>* const values) {
glProgramUniform2ivEXT(_id, location, count, values[0].data());
}
#endif
@@ -597,8 +597,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLint>* const values) {
glProgramUniform3ivEXT(_id, location, count, values[0].data());
}
#endif
@@ -618,8 +618,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLint>* const values) {
glProgramUniform4ivEXT(_id, location, count, values[0].data());
}
#endif
@@ -638,8 +638,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const GLuint* const values) {
glProgramUniform1uiv(_id, location, count, values);
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const GLuint* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const GLuint* const values) {
glProgramUniform1uivEXT(_id, location, count, values);
}
#endif
@@ -657,8 +659,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<2, GLuint>* const values) {
glProgramUniform2uiv(_id, location, count, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLuint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLuint>* const values) {
glProgramUniform2uivEXT(_id, location, count, values[0].data());
}
#endif
@@ -676,8 +680,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<3, GLuint>* const values) {
glProgramUniform3uiv(_id, location, count, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLuint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLuint>* const values) {
glProgramUniform3uivEXT(_id, location, count, values[0].data());
}
#endif
@@ -695,8 +701,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<4, GLuint>* const values) {
glProgramUniform4uiv(_id, location, count, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLuint>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLuint>* const values) {
glProgramUniform4uivEXT(_id, location, count, values[0].data());
}
#endif
@@ -716,10 +724,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniform1dv(_id, location, count, values);
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const GLdouble* const values) {
- glProgramUniform1dvEXT(_id, location, count, values);
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniform2dvImplementation)(location, values.size(), values);
}
@@ -733,10 +737,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniform2dv(_id, location, count, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::Vector<2, GLdouble>* const values) {
- glProgramUniform2dvEXT(_id, location, count, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniform3dvImplementation)(location, values.size(), values);
}
@@ -750,10 +750,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniform3dv(_id, location, count, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::Vector<3, GLdouble>* const values) {
- glProgramUniform3dvEXT(_id, location, count, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniform4dvImplementation)(location, values.size(), values);
}
@@ -766,10 +762,6 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::Vector<4, GLdouble>* const values) {
glProgramUniform4dv(_id, location, count, values[0].data());
}
-
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::Vector<4, GLdouble>* const values) {
- glProgramUniform4dvEXT(_id, location, count, values[0].data());
-}
#endif
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
@@ -787,8 +779,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* const values) {
glProgramUniformMatrix2fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -808,8 +800,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 3, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 3, GLfloat>* const values) {
glProgramUniformMatrix3fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -829,8 +821,8 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
}
#endif
-#ifndef MAGNUM_TARGET_WEBGL
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 4, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 4, GLfloat>* const values) {
glProgramUniformMatrix4fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -849,8 +841,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* const values) {
glProgramUniformMatrix2x3fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* const values) {
glProgramUniformMatrix2x3fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -868,8 +862,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* const values) {
glProgramUniformMatrix3x2fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* const values) {
glProgramUniformMatrix3x2fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -887,8 +883,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* const values) {
glProgramUniformMatrix2x4fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* const values) {
glProgramUniformMatrix2x4fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -906,8 +904,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* const values) {
glProgramUniformMatrix4x2fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* const values) {
glProgramUniformMatrix4x2fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -925,8 +925,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* const values) {
glProgramUniformMatrix3x4fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* const values) {
glProgramUniformMatrix3x4fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -944,8 +946,10 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* const values) {
glProgramUniformMatrix4x3fv(_id, location, count, GL_FALSE, values[0].data());
}
+#endif
-void AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* const values) {
+#if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+void AbstractShaderProgram::uniformImplementationSSOEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* const values) {
glProgramUniformMatrix4x3fvEXT(_id, location, count, GL_FALSE, values[0].data());
}
#endif
@@ -965,10 +969,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix2dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 2, GLdouble>* const values) {
- glProgramUniformMatrix2dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix3dvImplementation)(location, values.size(), values);
}
@@ -982,10 +982,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix3dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 3, GLdouble>* const values) {
- glProgramUniformMatrix3dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix4dvImplementation)(location, values.size(), values);
}
@@ -999,10 +995,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix4dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 4, GLdouble>* const values) {
- glProgramUniformMatrix4dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix2x3dvImplementation)(location, values.size(), values);
}
@@ -1016,10 +1008,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix2x3dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 3, GLdouble>* const values) {
- glProgramUniformMatrix2x3dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix3x2dvImplementation)(location, values.size(), values);
}
@@ -1033,10 +1021,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix3x2dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 2, GLdouble>* const values) {
- glProgramUniformMatrix3x2dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix2x4dvImplementation)(location, values.size(), values);
}
@@ -1050,10 +1034,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix2x4dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<2, 4, GLdouble>* const values) {
- glProgramUniformMatrix2x4dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix4x2dvImplementation)(location, values.size(), values);
}
@@ -1067,10 +1047,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix4x2dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 2, GLdouble>* const values) {
- glProgramUniformMatrix4x2dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix3x4dvImplementation)(location, values.size(), values);
}
@@ -1084,10 +1060,6 @@ void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const
glProgramUniformMatrix3x4dv(_id, location, count, GL_FALSE, values[0].data());
}
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<3, 4, GLdouble>* const values) {
- glProgramUniformMatrix3x4dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
-
void AbstractShaderProgram::setUniform(const Int location, const Containers::ArrayView> values) {
(this->*Context::current().state().shaderProgram->uniformMatrix4x3dvImplementation)(location, values.size(), values);
}
@@ -1100,10 +1072,6 @@ void AbstractShaderProgram::uniformImplementationDefault(const GLint location, c
void AbstractShaderProgram::uniformImplementationSSO(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLdouble>* const values) {
glProgramUniformMatrix4x3dv(_id, location, count, GL_FALSE, values[0].data());
}
-
-void AbstractShaderProgram::uniformImplementationDSAEXT(const GLint location, const GLsizei count, const Math::RectangularMatrix<4, 3, GLdouble>* const values) {
- glProgramUniformMatrix4x3dvEXT(_id, location, count, GL_FALSE, values[0].data());
-}
#endif
}}
diff --git a/src/Magnum/GL/AbstractShaderProgram.h b/src/Magnum/GL/AbstractShaderProgram.h
index b44cf6dc4..2faeb1586 100644
--- a/src/Magnum/GL/AbstractShaderProgram.h
+++ b/src/Magnum/GL/AbstractShaderProgram.h
@@ -406,7 +406,6 @@ are cached, so repeated queries don't result in repeated @fn_gl{Get} calls. See
also @ref Context::resetState() and @ref Context::State::Shaders.
If extension @gl_extension{ARB,separate_shader_objects} (part of OpenGL 4.1),
-@gl_extension{EXT,direct_state_access} desktop extension,
@gl_extension2{EXT,separate_shader_objects,EXT_separate_shader_objects.gles}
OpenGL ES extension or OpenGL ES 3.1 is available, uniform setting functions
use DSA functions to avoid unnecessary calls to @fn_gl{UseProgram}. See
@@ -1026,15 +1025,13 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject {
* @param location Uniform location
* @param values Values
*
- * If neither @gl_extension{ARB,separate_shader_objects} (part of OpenGL
- * 4.1) nor @gl_extension{EXT,direct_state_access} desktop extension nor
- * @gl_extension{EXT,separate_shader_objects} OpenGL ES extension nor
- * OpenGL ES 3.1 is available, the shader is marked for use before the
- * operation.
+ * If neither @gl_extension{ARB,separate_shader_objects} (part of
+ * OpenGL 4.1) nor @gl_extension{EXT,separate_shader_objects} OpenGL ES
+ * extension nor OpenGL ES 3.1 is available, the shader is marked for
+ * use before the operation.
* @see @ref setUniform(Int, const T&), @ref uniformLocation(),
* @fn_gl{UseProgram}, @fn_gl_keyword{Uniform} or
- * @fn_gl_keyword{ProgramUniform} /
- * @fn_gl_extension_keyword{ProgramUniform,EXT,direct_state_access}.
+ * @fn_gl_keyword{ProgramUniform}
*/
void setUniform(Int location, Containers::ArrayView values);
void setUniform(Int location, Containers::ArrayView> values); /**< @overload */
@@ -1150,9 +1147,8 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject {
void use();
/*
- Currently, there are four supported ways to call glProgramUniform():
+ Currently, there are three supported ways to call glProgramUniform():
- - EXT_direct_state_access (desktop GL only, EXT suffix)
- EXT_separate_shader_objects (OpenGL ES extension, EXT suffix)
- ARB_separate_shader_objects (desktop GL only, no suffix)
- OpenGL ES 3.1, no suffix
@@ -1160,14 +1156,12 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject {
To avoid copypasta and filesize bloat, this is merged to just two
variants of implementation functions:
- - uniformImplementationSSO() - functions without suffix, used if
+ - uniformImplementationSSO() -- functions without suffix, used if
ARB_separate_shader_objects desktop extension or OpenGL ES 3.1
is available, completely disabled for ES2
- - uniformImplementationDSAEXT_SSOEXT() / uniformImplementationDSAEXT() --
- functions with EXT suffix, used if EXT_direct_state_access
- desktop exttension or EXT_separate_shader_objects ES 2.0 / ES 3.0
- extension is available, functions which don't have equivalents
- on ES (double arguments) don't have the _SSOEXT suffix
+ - uniformImplementationSSOEXT() -- functions with EXT suffix, used
+ if EXT_separate_shader_objects ES 2.0 / ES 3.0 extension is
+ available
*/
void MAGNUM_GL_LOCAL uniformImplementationDefault(GLint location, GLsizei count, const GLfloat* values);
@@ -1210,27 +1204,21 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject {
void MAGNUM_GL_LOCAL uniformImplementationSSO(GLint location, GLsizei count, const Math::Vector<3, GLdouble>* values);
void MAGNUM_GL_LOCAL uniformImplementationSSO(GLint location, GLsizei count, const Math::Vector<4, GLdouble>* values);
#endif
- #ifndef MAGNUM_TARGET_WEBGL
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const GLfloat* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const GLint* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLint>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLint>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLint>* values);
+ #if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const GLfloat* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const GLint* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLint>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLint>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLint>* values);
#ifndef MAGNUM_TARGET_GLES2
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const GLuint* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLuint>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLuint>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLuint>* values);
- #endif
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const GLuint* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<2, GLuint>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<3, GLuint>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::Vector<4, GLuint>* values);
#endif
- #ifndef MAGNUM_TARGET_GLES
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const GLdouble* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::Vector<2, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::Vector<3, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::Vector<4, GLdouble>* values);
#endif
void MAGNUM_GL_LOCAL uniformImplementationDefault(GLint location, GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* values);
@@ -1277,29 +1265,18 @@ class MAGNUM_GL_EXPORT AbstractShaderProgram: public AbstractObject {
void MAGNUM_GL_LOCAL uniformImplementationSSO(GLint location, GLsizei count, const Math::RectangularMatrix<3, 4, GLdouble>* values);
void MAGNUM_GL_LOCAL uniformImplementationSSO(GLint location, GLsizei count, const Math::RectangularMatrix<4, 3, GLdouble>* values);
#endif
- #ifndef MAGNUM_TARGET_WEBGL
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 3, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 4, GLfloat>* values);
+ #if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 2, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 3, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 4, GLfloat>* values);
#ifndef MAGNUM_TARGET_GLES2
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT_SSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* values);
- #endif
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 3, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 2, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 4, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 2, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 4, GLfloat>* values);
+ void MAGNUM_GL_LOCAL uniformImplementationSSOEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 3, GLfloat>* values);
#endif
- #ifndef MAGNUM_TARGET_GLES
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 2, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 3, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 4, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 3, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 2, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<2, 4, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 2, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<3, 4, GLdouble>* values);
- void MAGNUM_GL_LOCAL uniformImplementationDSAEXT(GLint location, GLsizei count, const Math::RectangularMatrix<4, 3, GLdouble>* values);
#endif
GLuint _id;
diff --git a/src/Magnum/GL/AbstractTexture.cpp b/src/Magnum/GL/AbstractTexture.cpp
index 21f405ac2..a521faed6 100644
--- a/src/Magnum/GL/AbstractTexture.cpp
+++ b/src/Magnum/GL/AbstractTexture.cpp
@@ -146,13 +146,6 @@ void AbstractTexture::unbindImplementationDSA(const GLint textureUnit) {
CORRADE_INTERNAL_ASSERT(Context::current().state().texture->bindings[textureUnit].first != 0);
glBindTextureUnit(textureUnit, 0);
}
-
-void AbstractTexture::unbindImplementationDSAEXT(const GLint textureUnit) {
- Implementation::TextureState& textureState = *Context::current().state().texture;
-
- CORRADE_INTERNAL_ASSERT(textureState.bindings[textureUnit].first != 0);
- glBindMultiTextureEXT(GL_TEXTURE0 + textureUnit, textureState.bindings[textureUnit].first, 0);
-}
#endif
void AbstractTexture::unbind(const Int firstTextureUnit, const std::size_t count) {
@@ -368,11 +361,6 @@ void AbstractTexture::bindImplementationMulti(GLint textureUnit) {
void AbstractTexture::bindImplementationDSA(const GLint textureUnit) {
glBindTextureUnit(textureUnit, _id);
}
-
-void AbstractTexture::bindImplementationDSAEXT(GLint textureUnit) {
- _flags |= ObjectFlag::Created;
- glBindMultiTextureEXT(GL_TEXTURE0 + textureUnit, _target, _id);
-}
#endif
#ifndef MAGNUM_TARGET_GLES2
@@ -509,11 +497,6 @@ void AbstractTexture::mipmapImplementationDefault() {
void AbstractTexture::mipmapImplementationDSA() {
glGenerateTextureMipmap(_id);
}
-
-void AbstractTexture::mipmapImplementationDSAEXT() {
- _flags |= ObjectFlag::Created;
- glGenerateTextureMipmapEXT(_id, _target);
-}
#endif
void AbstractTexture::bindInternal() {
@@ -1074,11 +1057,6 @@ void AbstractTexture::parameterImplementationDefault(GLenum parameter, GLint val
void AbstractTexture::parameterImplementationDSA(const GLenum parameter, const GLint value) {
glTextureParameteri(_id, parameter, value);
}
-
-void AbstractTexture::parameterImplementationDSAEXT(GLenum parameter, GLint value) {
- _flags |= ObjectFlag::Created;
- glTextureParameteriEXT(_id, _target, parameter, value);
-}
#endif
void AbstractTexture::parameterImplementationDefault(GLenum parameter, GLfloat value) {
@@ -1090,11 +1068,6 @@ void AbstractTexture::parameterImplementationDefault(GLenum parameter, GLfloat v
void AbstractTexture::parameterImplementationDSA(const GLenum parameter, const GLfloat value) {
glTextureParameterf(_id, parameter, value);
}
-
-void AbstractTexture::parameterImplementationDSAEXT(GLenum parameter, GLfloat value) {
- _flags |= ObjectFlag::Created;
- glTextureParameterfEXT(_id, _target, parameter, value);
-}
#endif
#ifndef MAGNUM_TARGET_GLES2
@@ -1107,11 +1080,6 @@ void AbstractTexture::parameterImplementationDefault(GLenum parameter, const GLi
void AbstractTexture::parameterImplementationDSA(const GLenum parameter, const GLint* const values) {
glTextureParameteriv(_id, parameter, values);
}
-
-void AbstractTexture::parameterImplementationDSAEXT(GLenum parameter, const GLint* values) {
- _flags |= ObjectFlag::Created;
- glTextureParameterivEXT(_id, _target, parameter, values);
-}
#endif
#endif
@@ -1124,11 +1092,6 @@ void AbstractTexture::parameterImplementationDefault(GLenum parameter, const GLf
void AbstractTexture::parameterImplementationDSA(const GLenum parameter, const GLfloat* const values) {
glTextureParameterfv(_id, parameter, values);
}
-
-void AbstractTexture::parameterImplementationDSAEXT(GLenum parameter, const GLfloat* values) {
- _flags |= ObjectFlag::Created;
- glTextureParameterfvEXT(_id, _target, parameter, values);
-}
#endif
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
@@ -1148,11 +1111,6 @@ void AbstractTexture::parameterIImplementationEXT(GLenum parameter, const GLuint
void AbstractTexture::parameterIImplementationDSA(const GLenum parameter, const GLuint* const values) {
glTextureParameterIuiv(_id, parameter, values);
}
-
-void AbstractTexture::parameterIImplementationDSAEXT(GLenum parameter, const GLuint* values) {
- _flags |= ObjectFlag::Created;
- glTextureParameterIuivEXT(_id, _target, parameter, values);
-}
#endif
void AbstractTexture::parameterIImplementationDefault(GLenum parameter, const GLint* values) {
@@ -1171,11 +1129,6 @@ void AbstractTexture::parameterIImplementationEXT(GLenum parameter, const GLint*
void AbstractTexture::parameterIImplementationDSA(const GLenum parameter, const GLint* const values) {
glTextureParameterIiv(_id, parameter, values);
}
-
-void AbstractTexture::parameterIImplementationDSAEXT(GLenum parameter, const GLint* values) {
- _flags |= ObjectFlag::Created;
- glTextureParameterIivEXT(_id, _target, parameter, values);
-}
#endif
#endif
@@ -1201,11 +1154,6 @@ void AbstractTexture::getLevelParameterImplementationDefault(const GLint level,
void AbstractTexture::getLevelParameterImplementationDSA(const GLint level, const GLenum parameter, GLint* const values) {
glGetTextureLevelParameteriv(_id, level, parameter, values);
}
-
-void AbstractTexture::getLevelParameterImplementationDSAEXT(const GLint level, const GLenum parameter, GLint* const values) {
- _flags |= ObjectFlag::Created;
- glGetTextureLevelParameterivEXT(_id, _target, level, parameter, values);
-}
#endif
#endif
@@ -1227,11 +1175,6 @@ void AbstractTexture::storageImplementationDefault(GLsizei levels, TextureFormat
void AbstractTexture::storageImplementationDSA(const GLsizei levels, const TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size) {
glTextureStorage1D(_id, levels, GLenum(internalFormat), size[0]);
}
-
-void AbstractTexture::storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size) {
- _flags |= ObjectFlag::Created;
- glTextureStorage1DEXT(_id, _target, levels, GLenum(internalFormat), size[0]);
-}
#endif
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2)
@@ -1300,11 +1243,6 @@ void AbstractTexture::storageImplementationDefault(GLsizei levels, TextureFormat
void AbstractTexture::storageImplementationDSA(const GLsizei levels, const TextureFormat internalFormat, const Vector2i& size) {
glTextureStorage2D(_id, levels, GLenum(internalFormat), size.x(), size.y());
}
-
-void AbstractTexture::storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Vector2i& size) {
- _flags |= ObjectFlag::Created;
- glTextureStorage2DEXT(_id, _target, levels, GLenum(internalFormat), size.x(), size.y());
-}
#endif
#if !defined(MAGNUM_TARGET_GLES) || (defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL))
@@ -1366,11 +1304,6 @@ void AbstractTexture::storageImplementationDefault(GLsizei levels, TextureFormat
void AbstractTexture::storageImplementationDSA(const GLsizei levels, const TextureFormat internalFormat, const Vector3i& size) {
glTextureStorage3D(_id, levels, GLenum(internalFormat), size.x(), size.y(), size.z());
}
-
-void AbstractTexture::storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Vector3i& size) {
- _flags |= ObjectFlag::Created;
- glTextureStorage3DEXT(_id, _target, levels, GLenum(internalFormat), size.x(), size.y(), size.z());
-}
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -1392,11 +1325,6 @@ void AbstractTexture::storageMultisampleImplementationDSA(const GLsizei samples,
glTextureStorage2DMultisample(_id, samples, GLenum(internalFormat), size.x(), size.y(), fixedSampleLocations);
}
-void AbstractTexture::storageMultisampleImplementationDSAEXT(const GLsizei samples, const TextureFormat internalFormat, const Vector2i& size, const GLboolean fixedSampleLocations) {
- _flags |= ObjectFlag::Created;
- glTextureStorage2DMultisampleEXT(_id, _target, samples, GLenum(internalFormat), size.x(), size.y(), fixedSampleLocations);
-}
-
void AbstractTexture::storageMultisampleImplementationFallback(const GLsizei samples, const TextureFormat internalFormat, const Vector3i& size, const GLboolean fixedSampleLocations) {
bindInternal();
glTexImage3DMultisample(_target, samples, GLenum(internalFormat), size.x(), size.y(), size.z(), fixedSampleLocations);
@@ -1421,11 +1349,6 @@ void AbstractTexture::storageMultisampleImplementationOES(const GLsizei samples,
void AbstractTexture::storageMultisampleImplementationDSA(const GLsizei samples, const TextureFormat internalFormat, const Vector3i& size, const GLboolean fixedSampleLocations) {
glTextureStorage3DMultisample(_id, samples, GLenum(internalFormat), size.x(), size.y(), size.z(), fixedSampleLocations);
}
-
-void AbstractTexture::storageMultisampleImplementationDSAEXT(const GLsizei samples, const TextureFormat internalFormat, const Vector3i& size, const GLboolean fixedSampleLocations) {
- _flags |= ObjectFlag::Created;
- glTextureStorage3DMultisampleEXT(_id, _target, samples, GLenum(internalFormat), size.x(), size.y(), size.z(), fixedSampleLocations);
-}
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -1447,16 +1370,6 @@ void AbstractTexture::getCompressedImageImplementationDSA(const GLint level, con
glGetCompressedTextureImage(_id, level, dataSize, data);
}
-void AbstractTexture::getImageImplementationDSAEXT(const GLint level, const PixelFormat format, const PixelType type, const std::size_t, GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glGetTextureImageEXT(_id, _target, level, GLenum(format), GLenum(type), data);
-}
-
-void AbstractTexture::getCompressedImageImplementationDSAEXT(const GLint level, std::size_t, GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glGetCompressedTextureImageEXT(_id, _target, level, data);
-}
-
void AbstractTexture::getImageImplementationRobustness(const GLint level, const PixelFormat format, const PixelType type, const std::size_t dataSize, GLvoid* const data) {
bindInternal();
glGetnTexImageARB(_target, level, GLenum(format), GLenum(type), dataSize, data);
@@ -1486,16 +1399,6 @@ void AbstractTexture::subImageImplementationDSA(const GLint level, const Math::V
void AbstractTexture::compressedSubImageImplementationDSA(const GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
glCompressedTextureSubImage1D(_id, level, offset[0], size[0], GLenum(format), dataSize, data);
}
-
-void AbstractTexture::subImageImplementationDSAEXT(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, PixelFormat format, PixelType type, const GLvoid* data) {
- _flags |= ObjectFlag::Created;
- glTextureSubImage1DEXT(_id, _target, level, offset[0], size[0], GLenum(format), GLenum(type), data);
-}
-
-void AbstractTexture::compressedSubImageImplementationDSAEXT(const GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
- _flags |= ObjectFlag::Created;
- glCompressedTextureSubImage1DEXT(_id, _target, level, offset[0], size[0], GLenum(format), dataSize, data);
-}
#endif
void AbstractTexture::imageImplementationDefault(const GLenum target, const GLint level, const TextureFormat internalFormat, const Vector2i& size, const PixelFormat format, const PixelType type, const GLvoid* const data, const PixelStorage&) {
@@ -1556,16 +1459,6 @@ void AbstractTexture::subImage2DImplementationDSA(const GLint level, const Vecto
void AbstractTexture::compressedSubImageImplementationDSA(const GLint level, const Vector2i& offset, const Vector2i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
glCompressedTextureSubImage2D(_id, level, offset.x(), offset.y(), size.x(), size.y(), GLenum(format), dataSize, data);
}
-
-void AbstractTexture::subImageImplementationDSAEXT(GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&) {
- _flags |= ObjectFlag::Created;
- glTextureSubImage2DEXT(_id, _target, level, offset.x(), offset.y(), size.x(), size.y(), GLenum(format), GLenum(type), data);
-}
-
-void AbstractTexture::compressedSubImageImplementationDSAEXT(GLint level, const Vector2i& offset, const Vector2i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
- _flags |= ObjectFlag::Created;
- glCompressedTextureSubImage2DEXT(_id, _target, level, offset.x(), offset.y(), size.x(), size.y(), GLenum(format), dataSize, data);
-}
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -1658,16 +1551,6 @@ void AbstractTexture::subImage3DImplementationDSA(const GLint level, const Vecto
void AbstractTexture::compressedSubImageImplementationDSA(const GLint level, const Vector3i& offset, const Vector3i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
glCompressedTextureSubImage3D(_id, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), dataSize, data);
}
-
-void AbstractTexture::subImageImplementationDSAEXT(GLint level, const Vector3i& offset, const Vector3i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&) {
- _flags |= ObjectFlag::Created;
- glTextureSubImage3DEXT(_id, _target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), GLenum(type), data);
-}
-
-void AbstractTexture::compressedSubImageImplementationDSAEXT(const GLint level, const Vector3i& offset, const Vector3i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
- _flags |= ObjectFlag::Created;
- glCompressedTextureSubImage3DEXT(_id, _target, level, offset.x(), offset.y(), offset.z(), size.x(), size.y(), size.z(), GLenum(format), dataSize, data);
-}
#endif
void AbstractTexture::invalidateImageImplementationNoOp(GLint) {}
diff --git a/src/Magnum/GL/AbstractTexture.h b/src/Magnum/GL/AbstractTexture.h
index 89e214a8e..db3cce964 100644
--- a/src/Magnum/GL/AbstractTexture.h
+++ b/src/Magnum/GL/AbstractTexture.h
@@ -80,16 +80,13 @@ result in repeated @fn_gl{Get} calls. See also @ref Context::resetState() and
If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is available,
@ref bind(Int) and @ref unbind(Int) use @fn_gl{BindTextureUnit}. Otherwise, if
@gl_extension{ARB,multi_bind} (part of OpenGL 4.4) is available, @ref bind(Int)
-and @ref unbind() uses @fn_gl{BindTextures}. Lastly, if
-@gl_extension{EXT,direct_state_access} desktop extension is available,
-@fn_gl_extension{BindNamedTexture,EXT,direct_state_access} function is used to
-avoid unnecessary calls to @fn_gl{ActiveTexture}.
+and @ref unbind() uses @fn_gl{BindTextures}.
-In addition, if either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
-or @gl_extension{EXT,direct_state_access} desktop extension is available, also all
-texture configuration and data updating functions use DSA functions to avoid
-unnecessary calls to @fn_gl{ActiveTexture} and @fn_gl{BindTexture}. See
-respective function documentation for more information.
+In addition, if @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+available, also all texture configuration and data updating functions use DSA
+functions to avoid unnecessary calls to @fn_gl{ActiveTexture} and
+@fn_gl{BindTexture}. See respective function documentation for more
+information.
If @gl_extension{ARB,multi_bind} (part of OpenGL 4.5) is available,
@ref bind(Int, std::initializer_list) and @ref unbind(Int, std::size_t)
@@ -100,9 +97,6 @@ calls.
If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
@gl_extension{ARB,robustness} desktop extension is available, image reading
operations (such as @ref Texture::image()) are protected from buffer overflow.
-However, if @gl_extension{ARB,direct_state_access} is not available and both
-@gl_extension{EXT,direct_state_access} and @gl_extension{ARB,robustness} are
-available, the robust version is preferred over DSA.
Pixel storage mode defined by @ref PixelStorage and @ref CompressedPixelStorage
is applied either right before doing image upload (such as various
@@ -209,16 +203,14 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
/**
* @brief Unbind any texture from given texture unit
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5),
- * @gl_extension{ARB,multi_bind} (part of OpenGL 4.4) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
+ * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
+ * nor @gl_extension{ARB,multi_bind} (part of OpenGL 4.4) is available,
* the texture unit is made active before unbinding the texture.
* @note This function is meant to be used only internally from
* @ref AbstractShaderProgram subclasses. See its documentation
* for more information.
* @see @ref bind(), @ref Shader::maxCombinedTextureImageUnits(),
* @fn_gl_keyword{BindTextureUnit}, @fn_gl_keyword{BindTextures},
- * @fn_gl_extension_keyword{BindMultiTexture,EXT,direct_state_access},
* eventually @fn_gl_keyword{ActiveTexture} and
* @fn_gl_keyword{BindTexture}
*/
@@ -402,17 +394,16 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
/**
* @brief Bind texture to given texture unit
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5),
- * @gl_extension{ARB,multi_bind} (part of OpenGL 4.4) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture unit is made active before binding the texture.
+ * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL
+ * 4.5) nor @gl_extension{ARB,multi_bind} (part of OpenGL 4.4) is
+ * available, the texture unit is made active before binding the
+ * texture.
* @note This function is meant to be used only internally from
* @ref AbstractShaderProgram subclasses. See its documentation
* for more information.
* @see @ref bind(Int, std::initializer_list),
* @ref unbind(), @ref Shader::maxCombinedTextureImageUnits(),
* @fn_gl_keyword{BindTextureUnit}, @fn_gl_keyword{BindTextures},
- * @fn_gl_extension_keyword{BindMultiTexture,EXT,direct_state_access},
* eventually @fn_gl_keyword{ActiveTexture} and
* @fn_gl_keyword{BindTexture}
*/
@@ -520,7 +511,6 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#ifndef MAGNUM_TARGET_GLES
static void MAGNUM_GL_LOCAL unbindImplementationMulti(GLint textureUnit);
static void MAGNUM_GL_LOCAL unbindImplementationDSA(GLint textureUnit);
- static void MAGNUM_GL_LOCAL unbindImplementationDSAEXT(GLint textureUnit);
#endif
static void MAGNUM_GL_LOCAL bindImplementationFallback(GLint firstTextureUnit, Containers::ArrayView textures);
@@ -541,7 +531,6 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL bindImplementationMulti(GLint textureUnit);
void MAGNUM_GL_LOCAL bindImplementationDSA(GLint textureUnit);
- void MAGNUM_GL_LOCAL bindImplementationDSAEXT(GLint textureUnit);
#endif
void MAGNUM_GL_LOCAL parameterImplementationDefault(GLenum parameter, GLint value);
@@ -560,17 +549,11 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL parameterImplementationDSA(GLenum parameter, GLint value);
- void MAGNUM_GL_LOCAL parameterImplementationDSAEXT(GLenum parameter, GLint value);
void MAGNUM_GL_LOCAL parameterImplementationDSA(GLenum parameter, GLfloat value);
- void MAGNUM_GL_LOCAL parameterImplementationDSAEXT(GLenum parameter, GLfloat value);
void MAGNUM_GL_LOCAL parameterImplementationDSA(GLenum parameter, const GLint* values);
- void MAGNUM_GL_LOCAL parameterImplementationDSAEXT(GLenum parameter, const GLint* values);
void MAGNUM_GL_LOCAL parameterImplementationDSA(GLenum parameter, const GLfloat* values);
- void MAGNUM_GL_LOCAL parameterImplementationDSAEXT(GLenum parameter, const GLfloat* values);
void MAGNUM_GL_LOCAL parameterIImplementationDSA(GLenum parameter, const GLuint* values);
- void MAGNUM_GL_LOCAL parameterIImplementationDSAEXT(GLenum parameter, const GLuint* values);
void MAGNUM_GL_LOCAL parameterIImplementationDSA(GLenum parameter, const GLint* values);
- void MAGNUM_GL_LOCAL parameterIImplementationDSAEXT(GLenum parameter, const GLint* values);
#endif
void MAGNUM_GL_LOCAL setMaxAnisotropyImplementationNoOp(GLfloat);
@@ -583,21 +566,18 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
void MAGNUM_GL_LOCAL getLevelParameterImplementationDefault(GLint level, GLenum parameter, GLint* values);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL getLevelParameterImplementationDSA(GLint level, GLenum parameter, GLint* values);
- void MAGNUM_GL_LOCAL getLevelParameterImplementationDSAEXT(GLint level, GLenum parameter, GLint* values);
#endif
#endif
void MAGNUM_GL_LOCAL mipmapImplementationDefault();
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL mipmapImplementationDSA();
- void MAGNUM_GL_LOCAL mipmapImplementationDSAEXT();
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageImplementationFallback(GLsizei levels, TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size);
void MAGNUM_GL_LOCAL storageImplementationDefault(GLsizei levels, TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size);
void MAGNUM_GL_LOCAL storageImplementationDSA(GLsizei levels, TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size);
- void MAGNUM_GL_LOCAL storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Math::Vector<1, GLsizei>& size);
#endif
#if !defined(MAGNUM_TARGET_GLES) || defined(MAGNUM_TARGET_GLES2)
@@ -608,7 +588,6 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageImplementationDSA(GLsizei levels, TextureFormat internalFormat, const Vector2i& size);
- void MAGNUM_GL_LOCAL storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Vector2i& size);
#endif
#if !defined(MAGNUM_TARGET_GLES) || (defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL))
@@ -619,7 +598,6 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageImplementationDSA(GLsizei levels, TextureFormat internalFormat, const Vector3i& size);
- void MAGNUM_GL_LOCAL storageImplementationDSAEXT(GLsizei levels, TextureFormat internalFormat, const Vector3i& size);
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -636,30 +614,24 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageMultisampleImplementationDSA(GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedsamplelocations);
void MAGNUM_GL_LOCAL storageMultisampleImplementationDSA(GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedsamplelocations);
- void MAGNUM_GL_LOCAL storageMultisampleImplementationDSAEXT(GLsizei samples, TextureFormat internalFormat, const Vector2i& size, GLboolean fixedsamplelocations);
- void MAGNUM_GL_LOCAL storageMultisampleImplementationDSAEXT(GLsizei samples, TextureFormat internalFormat, const Vector3i& size, GLboolean fixedsamplelocations);
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL getImageImplementationDefault(GLint level, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getImageImplementationDSA(GLint level, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
- void MAGNUM_GL_LOCAL getImageImplementationDSAEXT(GLint level, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getImageImplementationRobustness(GLint level, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationDefault(GLint level, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationDSA(GLint level, std::size_t dataSize, GLvoid* data);
- void MAGNUM_GL_LOCAL getCompressedImageImplementationDSAEXT(GLint level, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationRobustness(GLint level, std::size_t dataSize, GLvoid* data);
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL subImageImplementationDefault(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, PixelFormat format, PixelType type, const GLvoid* data);
void MAGNUM_GL_LOCAL subImageImplementationDSA(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, PixelFormat format, PixelType type, const GLvoid* data);
- void MAGNUM_GL_LOCAL subImageImplementationDSAEXT(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, PixelFormat format, PixelType type, const GLvoid* data);
void MAGNUM_GL_LOCAL compressedSubImageImplementationDefault(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
void MAGNUM_GL_LOCAL compressedSubImageImplementationDSA(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
- void MAGNUM_GL_LOCAL compressedSubImageImplementationDSAEXT(GLint level, const Math::Vector<1, GLint>& offset, const Math::Vector<1, GLsizei>& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#endif
void MAGNUM_GL_LOCAL imageImplementationDefault(GLenum target, GLint level, TextureFormat internalFormat, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&);
@@ -677,9 +649,7 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
void MAGNUM_GL_LOCAL compressedSubImageImplementationDefault(GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL subImage2DImplementationDSA(GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&);
- void MAGNUM_GL_LOCAL subImageImplementationDSAEXT(GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&);
void MAGNUM_GL_LOCAL compressedSubImageImplementationDSA(GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
- void MAGNUM_GL_LOCAL compressedSubImageImplementationDSAEXT(GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -700,10 +670,8 @@ class MAGNUM_GL_EXPORT AbstractTexture: public AbstractObject {
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL subImage3DImplementationDSA(GLint level, const Vector3i& offset, const Vector3i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&);
#ifndef MAGNUM_TARGET_WEBGL
- void MAGNUM_GL_LOCAL subImageImplementationDSAEXT(GLint level, const Vector3i& offset, const Vector3i& size, PixelFormat format, PixelType type, const GLvoid* data, const PixelStorage&);
#endif
void MAGNUM_GL_LOCAL compressedSubImageImplementationDSA(GLint level, const Vector3i& offset, const Vector3i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
- void MAGNUM_GL_LOCAL compressedSubImageImplementationDSAEXT(GLint level, const Vector3i& offset, const Vector3i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#endif
void MAGNUM_GL_LOCAL invalidateImageImplementationNoOp(GLint level);
diff --git a/src/Magnum/GL/Buffer.cpp b/src/Magnum/GL/Buffer.cpp
index 4f3b98b85..9f06644f7 100644
--- a/src/Magnum/GL/Buffer.cpp
+++ b/src/Magnum/GL/Buffer.cpp
@@ -433,12 +433,6 @@ void Buffer::copyImplementationDefault(Buffer& read, Buffer& write, GLintptr rea
void Buffer::copyImplementationDSA(Buffer& read, Buffer& write, const GLintptr readOffset, const GLintptr writeOffset, const GLsizeiptr size) {
glCopyNamedBufferSubData(read._id, write._id, readOffset, writeOffset, size);
}
-
-void Buffer::copyImplementationDSAEXT(Buffer& read, Buffer& write, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) {
- read._flags |= ObjectFlag::Created;
- write._flags |= ObjectFlag::Created;
- glNamedCopyBufferSubDataEXT(read._id, write._id, readOffset, writeOffset, size);
-}
#endif
#endif
@@ -450,11 +444,6 @@ void Buffer::getParameterImplementationDefault(const GLenum value, GLint* const
void Buffer::getParameterImplementationDSA(const GLenum value, GLint* const data) {
glGetNamedBufferParameteriv(_id, value, data);
}
-
-void Buffer::getParameterImplementationDSAEXT(const GLenum value, GLint* const data) {
- _flags |= ObjectFlag::Created;
- glGetNamedBufferParameterivEXT(_id, value, data);
-}
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -465,11 +454,6 @@ void Buffer::getSubDataImplementationDefault(const GLintptr offset, const GLsize
void Buffer::getSubDataImplementationDSA(const GLintptr offset, const GLsizeiptr size, GLvoid* const data) {
glGetNamedBufferSubData(_id, offset, size, data);
}
-
-void Buffer::getSubDataImplementationDSAEXT(const GLintptr offset, const GLsizeiptr size, GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glGetNamedBufferSubDataEXT(_id, offset, size, data);
-}
#endif
void Buffer::dataImplementationDefault(GLsizeiptr size, const GLvoid* data, BufferUsage usage) {
@@ -480,11 +464,6 @@ void Buffer::dataImplementationDefault(GLsizeiptr size, const GLvoid* data, Buff
void Buffer::dataImplementationDSA(const GLsizeiptr size, const GLvoid* const data, const BufferUsage usage) {
glNamedBufferData(_id, size, data, GLenum(usage));
}
-
-void Buffer::dataImplementationDSAEXT(GLsizeiptr size, const GLvoid* data, BufferUsage usage) {
- _flags |= ObjectFlag::Created;
- glNamedBufferDataEXT(_id, size, data, GLenum(usage));
-}
#endif
void Buffer::subDataImplementationDefault(GLintptr offset, GLsizeiptr size, const GLvoid* data) {
@@ -495,11 +474,6 @@ void Buffer::subDataImplementationDefault(GLintptr offset, GLsizeiptr size, cons
void Buffer::subDataImplementationDSA(const GLintptr offset, const GLsizeiptr size, const GLvoid* const data) {
glNamedBufferSubData(_id, offset, size, data);
}
-
-void Buffer::subDataImplementationDSAEXT(GLintptr offset, GLsizeiptr size, const GLvoid* data) {
- _flags |= ObjectFlag::Created;
- glNamedBufferSubDataEXT(_id, offset, size, data);
-}
#endif
void Buffer::invalidateImplementationNoOp() {}
@@ -533,11 +507,6 @@ void* Buffer::mapImplementationDefault(MapAccess access) {
void* Buffer::mapImplementationDSA(const MapAccess access) {
return glMapNamedBuffer(_id, GLenum(access));
}
-
-void* Buffer::mapImplementationDSAEXT(MapAccess access) {
- _flags |= ObjectFlag::Created;
- return glMapNamedBufferEXT(_id, GLenum(access));
-}
#endif
void* Buffer::mapRangeImplementationDefault(GLintptr offset, GLsizeiptr length, MapFlags access) {
@@ -552,11 +521,6 @@ void* Buffer::mapRangeImplementationDefault(GLintptr offset, GLsizeiptr length,
void* Buffer::mapRangeImplementationDSA(const GLintptr offset, const GLsizeiptr length, const MapFlags access) {
return glMapNamedBufferRange(_id, offset, length, GLenum(access));
}
-
-void* Buffer::mapRangeImplementationDSAEXT(GLintptr offset, GLsizeiptr length, MapFlags access) {
- _flags |= ObjectFlag::Created;
- return glMapNamedBufferRangeEXT(_id, offset, length, GLenum(access));
-}
#endif
void Buffer::flushMappedRangeImplementationDefault(GLintptr offset, GLsizeiptr length) {
@@ -571,11 +535,6 @@ void Buffer::flushMappedRangeImplementationDefault(GLintptr offset, GLsizeiptr l
void Buffer::flushMappedRangeImplementationDSA(const GLintptr offset, const GLsizeiptr length) {
glFlushMappedNamedBufferRange(_id, offset, length);
}
-
-void Buffer::flushMappedRangeImplementationDSAEXT(GLintptr offset, GLsizeiptr length) {
- _flags |= ObjectFlag::Created;
- glFlushMappedNamedBufferRangeEXT(_id, offset, length);
-}
#endif
bool Buffer::unmapImplementationDefault() {
@@ -590,11 +549,6 @@ bool Buffer::unmapImplementationDefault() {
bool Buffer::unmapImplementationDSA() {
return glUnmapNamedBuffer(_id);
}
-
-bool Buffer::unmapImplementationDSAEXT() {
- _flags |= ObjectFlag::Created;
- return glUnmapNamedBufferEXT(_id);
-}
#endif
#endif
diff --git a/src/Magnum/GL/Buffer.h b/src/Magnum/GL/Buffer.h
index eeeaa9965..fab1999d1 100644
--- a/src/Magnum/GL/Buffer.h
+++ b/src/Magnum/GL/Buffer.h
@@ -209,9 +209,8 @@ and implementation-defined values (such as @ref maxUniformBindings()) are
cached, so repeated queries don't result in repeated @fn_gl{Get} calls. See
also @ref Context::resetState() and @ref Context::State::Buffers.
-If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
-@gl_extension{EXT,direct_state_access} desktop extension is available, functions
-@ref copy(), @ref size(), @ref data(), @ref subData(), @ref setData(),
+If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is available,
+functions @ref copy(), @ref size(), @ref data(), @ref subData(), @ref setData(),
@ref setSubData(), @ref map(), @ref mapRead(), @ref flushMappedRange() and
@ref unmap() use DSA functions to avoid unnecessary calls to @fn_gl{BindBuffer}.
See their respective documentation for more information.
@@ -725,12 +724,11 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @param writeOffset Offset in the write buffer
* @param size Data size
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, @p read buffer is bound for reading and @p write buffer
- * is bound for writing before the copy is performed (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, @p read buffer is bound for reading and @p write
+ * buffer is bound for writing before the copy is performed (if not
+ * already).
* @see @fn_gl2_keyword{CopyNamedBufferSubData,CopyBufferSubData},
- * @fn_gl_extension_keyword{NamedCopyBufferSubData,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{CopyBufferSubData}
* @requires_gl31 Extension @gl_extension{ARB,copy_buffer}
* @requires_gles30 Buffer copying is not available in OpenGL ES 2.0.
@@ -870,12 +868,12 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @brief Set target hint
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer needs to be internally bound to some target
- * before any operation. You can specify target which will always be
- * used when binding the buffer internally, possibly saving some calls
- * to @fn_gl{BindBuffer}. Default target hint is @ref TargetHint::Array.
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer needs to be internally bound to some
+ * target before any operation. You can specify target which will
+ * always be used when binding the buffer internally, possibly saving
+ * some calls to @fn_gl{BindBuffer}. Default target hint is
+ * @ref TargetHint::Array.
* @see @ref setData(), @ref setSubData()
*/
Buffer& setTargetHint(TargetHint hint);
@@ -937,12 +935,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
/**
* @brief Buffer size
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref setTargetHint(), @fn_gl2_keyword{GetNamedBufferParameter,GetBufferParameter},
- * @fn_gl_extension_keyword{GetNamedBufferParameter,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{GetBufferParameter}
*/
Int size();
@@ -951,16 +947,13 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
/**
* @brief Buffer data
*
- * Returns data of whole buffer. If neither @gl_extension{ARB,direct_state_access}
- * (part of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * Returns data of whole buffer. If @gl_extension{ARB,direct_state_access}
+ * (part of OpenGL 4.5) is not available, the buffer is bound to hinted
+ * target before the operation (if not already).
* @see @ref size(), @ref subData(), @ref setData(), @ref setTargetHint(),
* @fn_gl2{GetNamedBufferParameter,GetBufferParameter},
- * @fn_gl_extension{GetNamedBufferParameter,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl{GetBufferParameter}
* with @def_gl{BUFFER_SIZE}, then @fn_gl2_keyword{GetNamedBufferSubData,GetBufferSubData},
- * @fn_gl_extension_keyword{GetNamedBufferSubData,EXT,direct_state_access},
* eventually @fn_gl_keyword{GetBufferSubData}
* @requires_gl Buffer data queries are not available in OpenGL ES and
* WebGL. Use @ref map(), @ref mapRead() or @ref DebugTools::bufferData()
@@ -982,13 +975,12 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @param offset Byte offset in the buffer
* @param size Data size in bytes
*
- * Returns data of given buffer portion. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} is available, the buffer is
- * bound to hinted target before the operation (if not already).
+ * Returns data of given buffer portion. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the buffer is bound to hinted target before the operation
+ * (if not already).
* @see @ref size(), @ref data(), @ref setSubData(), @ref setTargetHint(),
* @fn_gl2_keyword{GetNamedBufferSubData,GetBufferSubData},
- * @fn_gl_extension_keyword{GetNamedBufferSubData,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{GetBufferSubData}
* @requires_gl Buffer data queries are not available in OpenGL ES and
* WebGL. Use @ref map(), @ref mapRead() or @ref DebugTools::bufferData()
@@ -1011,12 +1003,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @param usage Buffer usage
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref setTargetHint(), @fn_gl2_keyword{NamedBufferData,BufferData},
- * @fn_gl_extension_keyword{NamedBufferData,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{BufferData}
*/
Buffer& setData(Containers::ArrayView data, BufferUsage usage = BufferUsage::StaticDraw);
@@ -1039,12 +1029,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @param data Data
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref setTargetHint(), @fn_gl2_keyword{NamedBufferSubData,BufferSubData},
- * @fn_gl_extension_keyword{NamedBufferSubData,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{BufferSubData}
*/
Buffer& setSubData(GLintptr offset, Containers::ArrayView data);
@@ -1089,13 +1077,11 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @param access Access
* @return Pointer to mapped buffer data or @cpp nullptr @ce on error
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref mapRead(), @ref minMapAlignment(), @ref unmap(),
* @ref setTargetHint(), @fn_gl2_keyword{MapNamedBuffer,MapBuffer},
- * @fn_gl_extension_keyword{MapNamedBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{MapBuffer}
* @requires_es_extension Extension @gl_extension{OES,mapbuffer} in
* OpenGL ES 2.0, use @ref map(GLintptr, GLsizeiptr, MapFlags) in
@@ -1135,14 +1121,12 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @ref MapFlag::Write must be specified.
* @return Sized view to buffer data or @cpp nullptr @ce on error
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref mapRead(), @ref minMapAlignment(), @ref flushMappedRange(),
* @ref unmap(), @ref map(MapAccess), @ref setTargetHint(),
* @fn_gl2_keyword{MapNamedBufferRange,MapBufferRange},
- * @fn_gl_extension_keyword{MapNamedBufferRange,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{MapBufferRange}
* @requires_gl30 Extension @gl_extension{ARB,map_buffer_range}
* @requires_gles30 Extension @gl_extension{EXT,map_buffer_range} in
@@ -1180,12 +1164,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* @ref map() with @ref MapFlag::FlushExplicit flag. See
* @ref GL-Buffer-data-mapping "class documentation" for usage example.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the buffer is bound to hinted target before the operation
- * (if not already).
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the buffer is bound to hinted target before the
+ * operation (if not already).
* @see @ref setTargetHint(), @fn_gl2_keyword{FlushMappedNamedBufferRange,FlushMappedBufferRange},
- * @fn_gl_extension_keyword{FlushMappedNamedBufferRange,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{FlushMappedBufferRange}
* @requires_gl30 Extension @gl_extension{ARB,map_buffer_range}
* @requires_gles30 Extension @gl_extension{EXT,map_buffer_range} in
@@ -1201,13 +1183,11 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
* otherwise.
*
* Unmaps buffer previously mapped with @ref map() / @ref mapRead(),
- * invalidating the pointer returned by these functions. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the buffer is bound to hinted target before the operation (if not
- * already).
+ * invalidating the pointer returned by these functions. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the buffer is bound to hinted target before the operation
+ * (if not already).
* @see @ref setTargetHint(), @fn_gl2_keyword{UnmapNamedBuffer,UnmapBuffer},
- * @fn_gl_extension_keyword{UnmapNamedBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindBuffer} and @fn_gl_keyword{UnmapBuffer}
* @requires_gles30 Extension @gl_extension{OES,mapbuffer} in OpenGL
* ES 2.0.
@@ -1244,7 +1224,6 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
static void MAGNUM_GL_LOCAL copyImplementationDefault(Buffer& read, Buffer& write, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
#ifndef MAGNUM_TARGET_GLES
static void MAGNUM_GL_LOCAL copyImplementationDSA(Buffer& read, Buffer& write, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
- static void MAGNUM_GL_LOCAL copyImplementationDSAEXT(Buffer& read, Buffer& write, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
#endif
#endif
@@ -1273,25 +1252,21 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
void MAGNUM_GL_LOCAL getParameterImplementationDefault(GLenum value, GLint* data);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL getParameterImplementationDSA(GLenum value, GLint* data);
- void MAGNUM_GL_LOCAL getParameterImplementationDSAEXT(GLenum value, GLint* data);
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL getSubDataImplementationDefault(GLintptr offset, GLsizeiptr size, GLvoid* data);
void MAGNUM_GL_LOCAL getSubDataImplementationDSA(GLintptr offset, GLsizeiptr size, GLvoid* data);
- void MAGNUM_GL_LOCAL getSubDataImplementationDSAEXT(GLintptr offset, GLsizeiptr size, GLvoid* data);
#endif
void MAGNUM_GL_LOCAL dataImplementationDefault(GLsizeiptr size, const GLvoid* data, BufferUsage usage);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL dataImplementationDSA(GLsizeiptr size, const GLvoid* data, BufferUsage usage);
- void MAGNUM_GL_LOCAL dataImplementationDSAEXT(GLsizeiptr size, const GLvoid* data, BufferUsage usage);
#endif
void MAGNUM_GL_LOCAL subDataImplementationDefault(GLintptr offset, GLsizeiptr size, const GLvoid* data);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL subDataImplementationDSA(GLintptr offset, GLsizeiptr size, const GLvoid* data);
- void MAGNUM_GL_LOCAL subDataImplementationDSAEXT(GLintptr offset, GLsizeiptr size, const GLvoid* data);
#endif
void MAGNUM_GL_LOCAL invalidateImplementationNoOp();
@@ -1308,25 +1283,21 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
void MAGNUM_GL_LOCAL * mapImplementationDefault(MapAccess access);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL * mapImplementationDSA(MapAccess access);
- void MAGNUM_GL_LOCAL * mapImplementationDSAEXT(MapAccess access);
#endif
void MAGNUM_GL_LOCAL * mapRangeImplementationDefault(GLintptr offset, GLsizeiptr length, MapFlags access);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL * mapRangeImplementationDSA(GLintptr offset, GLsizeiptr length, MapFlags access);
- void MAGNUM_GL_LOCAL * mapRangeImplementationDSAEXT(GLintptr offset, GLsizeiptr length, MapFlags access);
#endif
void MAGNUM_GL_LOCAL flushMappedRangeImplementationDefault(GLintptr offset, GLsizeiptr length);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL flushMappedRangeImplementationDSA(GLintptr offset, GLsizeiptr length);
- void MAGNUM_GL_LOCAL flushMappedRangeImplementationDSAEXT(GLintptr offset, GLsizeiptr length);
#endif
bool MAGNUM_GL_LOCAL unmapImplementationDefault();
#ifndef MAGNUM_TARGET_GLES
bool MAGNUM_GL_LOCAL unmapImplementationDSA();
- bool MAGNUM_GL_LOCAL unmapImplementationDSAEXT();
#endif
#endif
diff --git a/src/Magnum/GL/BufferTexture.cpp b/src/Magnum/GL/BufferTexture.cpp
index 316422e6d..93c638792 100644
--- a/src/Magnum/GL/BufferTexture.cpp
+++ b/src/Magnum/GL/BufferTexture.cpp
@@ -96,10 +96,6 @@ void BufferTexture::setBufferImplementationEXT(BufferTextureFormat internalForma
void BufferTexture::setBufferImplementationDSA(const BufferTextureFormat internalFormat, Buffer& buffer) {
glTextureBuffer(id(), GLenum(internalFormat), buffer.id());
}
-
-void BufferTexture::setBufferImplementationDSAEXT(BufferTextureFormat internalFormat, Buffer& buffer) {
- glTextureBufferEXT(id(), GL_TEXTURE_BUFFER, GLenum(internalFormat), buffer.id());
-}
#endif
void BufferTexture::setBufferRangeImplementationDefault(BufferTextureFormat internalFormat, Buffer& buffer, GLintptr offset, GLsizeiptr size) {
@@ -118,10 +114,6 @@ void BufferTexture::setBufferRangeImplementationEXT(BufferTextureFormat internal
void BufferTexture::setBufferRangeImplementationDSA(const BufferTextureFormat internalFormat, Buffer& buffer, const GLintptr offset, const GLsizeiptr size) {
glTextureBufferRange(id(), GLenum(internalFormat), buffer.id(), offset, size);
}
-
-void BufferTexture::setBufferRangeImplementationDSAEXT(BufferTextureFormat internalFormat, Buffer& buffer, GLintptr offset, GLsizeiptr size) {
- glTextureBufferRangeEXT(id(), GL_TEXTURE_BUFFER, GLenum(internalFormat), buffer.id(), offset, size);
-}
#endif
}}
diff --git a/src/Magnum/GL/BufferTexture.h b/src/Magnum/GL/BufferTexture.h
index 08e2fe549..51cd66fa0 100644
--- a/src/Magnum/GL/BufferTexture.h
+++ b/src/Magnum/GL/BufferTexture.h
@@ -65,10 +65,9 @@ information about usage in shaders.
@section GL-BufferTexture-performance-optimizations Performance optimizations
-If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
-@gl_extension{EXT,direct_state_access} is available, @ref setBuffer() functions
-use DSA to avoid unnecessary calls to @fn_gl{ActiveTexture} and
-@fn_gl{BindTexture}. See
+If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is available,
+@ref setBuffer() functions use DSA to avoid unnecessary calls to
+@fn_gl{ActiveTexture} and @fn_gl{BindTexture}. See
@ref GL-AbstractTexture-performance-optimization "relevant section in AbstractTexture documentation"
and respective function documentation for more information.
@@ -187,12 +186,10 @@ class MAGNUM_GL_EXPORT BufferTexture: public AbstractTexture {
*
* Binds given buffer to this texture. The buffer itself can be then
* filled with data of proper format at any time using @ref Buffer "Buffer"'s
- * own data setting functions. If neither @gl_extension{ARB,direct_state_access}
- * (part of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} is
- * available, the texture is bound before the operation (if not
- * already).
+ * own data setting functions. If @gl_extension{ARB,direct_state_access}
+ * (part of OpenGL 4.5) is not available, the texture is bound before
+ * the operation (if not already).
* @see @ref maxSize(), @fn_gl2_keyword{TextureBuffer,TexBuffer},
- * @fn_gl_extension_keyword{TextureBuffer,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexBuffer}
*/
@@ -208,12 +205,10 @@ class MAGNUM_GL_EXPORT BufferTexture: public AbstractTexture {
*
* Binds range of given buffer to this texture. The buffer itself can
* be then filled with data of proper format at any time using @ref Buffer "Buffer"'s
- * own data setting functions. If neither @gl_extension{ARB,direct_state_access}
- * (part of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} is
- * available, the texture is bound before the operation (if not
- * already).
+ * own data setting functions. If @gl_extension{ARB,direct_state_access}
+ * (part of OpenGL 4.5) is not available, the texture is bound before
+ * the operation (if not already).
* @see @ref maxSize(), @fn_gl2_keyword{TextureBufferRange,TexBufferRange},
- * @fn_gl_extension_keyword{TextureBufferRange,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexBufferRange}
* @requires_gl43 Extension @gl_extension{ARB,texture_buffer_range}
@@ -241,7 +236,6 @@ class MAGNUM_GL_EXPORT BufferTexture: public AbstractTexture {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL setBufferImplementationDSA(BufferTextureFormat internalFormat, Buffer& buffer);
- void MAGNUM_GL_LOCAL setBufferImplementationDSAEXT(BufferTextureFormat internalFormat, Buffer& buffer);
#endif
void MAGNUM_GL_LOCAL setBufferRangeImplementationDefault(BufferTextureFormat internalFormat, Buffer& buffer, GLintptr offset, GLsizeiptr size);
@@ -250,7 +244,6 @@ class MAGNUM_GL_EXPORT BufferTexture: public AbstractTexture {
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL setBufferRangeImplementationDSA(BufferTextureFormat internalFormat, Buffer& buffer, GLintptr offset, GLsizeiptr size);
- void MAGNUM_GL_LOCAL setBufferRangeImplementationDSAEXT(BufferTextureFormat internalFormat, Buffer& buffer, GLintptr offset, GLsizeiptr size);
#endif
};
diff --git a/src/Magnum/GL/Context.cpp b/src/Magnum/GL/Context.cpp
index f662ee25b..87c3b69ec 100644
--- a/src/Magnum/GL/Context.cpp
+++ b/src/Magnum/GL/Context.cpp
@@ -89,7 +89,6 @@ const std::vector& Extension::extensions(Version version) {
_extension(EXT,texture_filter_anisotropic),
_extension(EXT,texture_compression_s3tc),
_extension(EXT,texture_mirror_clamp),
- _extension(EXT,direct_state_access),
_extension(EXT,texture_sRGB_decode),
_extension(EXT,shader_integer_mix),
_extension(EXT,debug_label),
diff --git a/src/Magnum/GL/CubeMapTexture.cpp b/src/Magnum/GL/CubeMapTexture.cpp
index d5b29baa9..5ec41ace4 100644
--- a/src/Magnum/GL/CubeMapTexture.cpp
+++ b/src/Magnum/GL/CubeMapTexture.cpp
@@ -383,13 +383,6 @@ void CubeMapTexture::getLevelParameterImplementationDefault(const GLint level, c
void CubeMapTexture::getLevelParameterImplementationDSA(const GLint level, const GLenum parameter, GLint* const values) {
glGetTextureLevelParameteriv(_id, level, parameter, values);
}
-
-void CubeMapTexture::getLevelParameterImplementationDSAEXT(const GLint level, const GLenum parameter, GLint* const values) {
- _flags |= ObjectFlag::Created;
- /* Using only parameters of +X in pre-DSA code path and assuming that all
- other faces are the same */
- glGetTextureLevelParameterivEXT(_id, GL_TEXTURE_CUBE_MAP_POSITIVE_X, level, parameter, values);
-}
#endif
#endif
@@ -425,24 +418,6 @@ GLint CubeMapTexture::getLevelCompressedImageSizeImplementationDSANonImmutableWo
glGetTextureParameteriv(_id, GL_TEXTURE_IMMUTABLE_LEVELS, &immutable);
return immutable ? value/6 : value;
}
-
-GLint CubeMapTexture::getLevelCompressedImageSizeImplementationDSAEXT(const GLint level) {
- _flags |= ObjectFlag::Created;
- /* Using only parameters of +X in pre-DSA code path and assuming that all
- other faces are the same */
- GLint value;
- glGetTextureLevelParameterivEXT(_id, GL_TEXTURE_CUBE_MAP_POSITIVE_X, level, GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &value);
-
- return value;
-}
-
-GLint CubeMapTexture::getLevelCompressedImageSizeImplementationDSAEXTImmutableWorkaround(const GLint level) {
- const GLint value = getLevelCompressedImageSizeImplementationDSAEXT(level);
-
- GLint immutable;
- glGetTextureParameterivEXT(_id, GL_TEXTURE_CUBE_MAP, GL_TEXTURE_IMMUTABLE_LEVELS, &immutable);
- return immutable ? value/6 : value;
-}
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -475,16 +450,6 @@ void CubeMapTexture::getCompressedImageImplementationDSA(const CubeMapCoordinate
glGetCompressedTextureSubImage(_id, level, 0, 0, GLenum(coordinate) - GL_TEXTURE_CUBE_MAP_POSITIVE_X, size.x(), size.y(), 1, dataSize, data);
}
-void CubeMapTexture::getImageImplementationDSAEXT(const CubeMapCoordinate coordinate, const GLint level, const Vector2i&, const PixelFormat format, const PixelType type, std::size_t, GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glGetTextureImageEXT(_id, GLenum(coordinate), level, GLenum(format), GLenum(type), data);
-}
-
-void CubeMapTexture::getCompressedImageImplementationDSAEXT(const CubeMapCoordinate coordinate, const GLint level, const Vector2i&, std::size_t, GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glGetCompressedTextureImageEXT(_id, GLenum(coordinate), level, data);
-}
-
void CubeMapTexture::getImageImplementationRobustness(const CubeMapCoordinate coordinate, const GLint level, const Vector2i&, const PixelFormat format, const PixelType type, const std::size_t dataSize, GLvoid* const data) {
bindInternal();
glGetnTexImageARB(GLenum(coordinate), level, GLenum(format), GLenum(type), dataSize, data);
@@ -526,16 +491,6 @@ void CubeMapTexture::subImageImplementationDSA(const CubeMapCoordinate coordinat
void CubeMapTexture::compressedSubImageImplementationDSA(const CubeMapCoordinate coordinate, const GLint level, const Vector2i& offset, const Vector2i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
glCompressedTextureSubImage3D(_id, level, offset.x(), offset.y(), GLenum(coordinate) - GL_TEXTURE_CUBE_MAP_POSITIVE_X, size.x(), size.y(), 1, GLenum(format), dataSize, data);
}
-
-void CubeMapTexture::subImageImplementationDSAEXT(const CubeMapCoordinate coordinate, const GLint level, const Vector2i& offset, const Vector2i& size, const PixelFormat format, const PixelType type, const GLvoid* const data) {
- _flags |= ObjectFlag::Created;
- glTextureSubImage2DEXT(_id, GLenum(coordinate), level, offset.x(), offset.y(), size.x(), size.y(), GLenum(format), GLenum(type), data);
-}
-
-void CubeMapTexture::compressedSubImageImplementationDSAEXT(const CubeMapCoordinate coordinate, const GLint level, const Vector2i& offset, const Vector2i& size, const CompressedPixelFormat format, const GLvoid* const data, const GLsizei dataSize) {
- _flags |= ObjectFlag::Created;
- glCompressedTextureSubImage2DEXT(_id, GLenum(coordinate), level, offset.x(), offset.y(), size.x(), size.y(), GLenum(format), dataSize, data);
-}
#endif
}}
diff --git a/src/Magnum/GL/CubeMapTexture.h b/src/Magnum/GL/CubeMapTexture.h
index 01c9eb611..9b854b708 100644
--- a/src/Magnum/GL/CubeMapTexture.h
+++ b/src/Magnum/GL/CubeMapTexture.h
@@ -653,23 +653,17 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
* @ref imageSize(). The storage is not reallocated if it is large
* enough to contain the new data.
*
- * If neither @gl_extension{ARB,get_texture_sub_image} (part of OpenGL
- * 4.5) nor @gl_extension{EXT,direct_state_access} is available, the
- * texture is bound before the operation (if not already). If either
- * @gl_extension{ARB,get_texture_sub_image} or @gl_extension{ARB,robustness}
- * is available, the operation is protected from buffer overflow.
- * However, if @gl_extension{ARB,get_texture_sub_image} is not available
- * and both @gl_extension{EXT,direct_state_access} and
- * @gl_extension{ARB,robustness} are available, the robust operation is
- * preferred over DSA.
+ * If @gl_extension{ARB,get_texture_sub_image} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
+ * already). If either @gl_extension{ARB,get_texture_sub_image} or
+ * @gl_extension{ARB,robustness} is available, the operation is
+ * protected from buffer overflow.
* @see @fn_gl2{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl{GetTexLevelParameter} with @def_gl{TEXTURE_WIDTH},
* @def_gl{TEXTURE_HEIGHT}, then @fn_gl{PixelStore}, then
* @fn_gl_keyword{GetTextureSubImage},
* @fn_gl_extension_keyword{GetnTexImage,ARB,robustness},
- * @fn_gl_extension_keyword{GetTextureImage,EXT,direct_state_access},
* eventually @fn_gl_keyword{GetTexImage}
* @requires_gl Texture image queries are not available in OpenGL ES or
* WebGL. See @ref Framebuffer::read() or @ref DebugTools::textureSubImage()
@@ -712,24 +706,18 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
* size is taken using @ref imageSize(). The storage is not reallocated
* if it is large enough to contain the new data.
*
- * If neither @gl_extension{ARB,get_texture_sub_image} (part of OpenGL
- * 4.5) nor @gl_extension{EXT,direct_state_access} is available, the
- * texture is bound before the operation (if not already). If either
- * @gl_extension{ARB,get_texture_sub_image} or @gl_extension{ARB,robustness}
- * is available, the operation is protected from buffer overflow.
- * However, if @gl_extension{ARB,get_texture_sub_image} is not available
- * and both @gl_extension{EXT,direct_state_access} and
- * @gl_extension{ARB,robustness} are available, the robust operation is
- * preferred over DSA.
+ * If @gl_extension{ARB,get_texture_sub_image} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
+ * already). If either @gl_extension{ARB,get_texture_sub_image} or
+ * @gl_extension{ARB,robustness} is available, the operation is
+ * protected from buffer overflow.
* @see @fn_gl2{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{GetTexLevelParameter} with
* @def_gl{TEXTURE_COMPRESSED_IMAGE_SIZE},
* @def_gl{TEXTURE_INTERNAL_FORMAT}, @def_gl{TEXTURE_WIDTH},
* @def_gl{TEXTURE_HEIGHT}, then @fn_gl{PixelStore}, then
* @fn_gl_keyword{GetCompressedTextureSubImage},
* @fn_gl_extension_keyword{GetnCompressedTexImage,ARB,robustness},
- * @fn_gl_extension_keyword{GetCompressedTextureImage,EXT,direct_state_access},
* eventually @fn_gl_keyword{GetCompressedTexImage}
* @requires_gl42 Extension @gl_extension{ARB,compressed_texture_pixel_storage}
* for non-default @ref CompressedPixelStorage
@@ -1164,7 +1152,6 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
void MAGNUM_GL_LOCAL getLevelParameterImplementationDefault(GLint level, GLenum parameter, GLint* values);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL getLevelParameterImplementationDSA(GLint level, GLenum parameter, GLint* values);
- void MAGNUM_GL_LOCAL getLevelParameterImplementationDSAEXT(GLint level, GLenum parameter, GLint* values);
#endif
#endif
@@ -1173,8 +1160,6 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
GLint MAGNUM_GL_LOCAL getLevelCompressedImageSizeImplementationDefaultImmutableWorkaround(GLint level);
GLint MAGNUM_GL_LOCAL getLevelCompressedImageSizeImplementationDSA(GLint level);
GLint MAGNUM_GL_LOCAL getLevelCompressedImageSizeImplementationDSANonImmutableWorkaround(GLint level);
- GLint MAGNUM_GL_LOCAL getLevelCompressedImageSizeImplementationDSAEXT(GLint level);
- GLint MAGNUM_GL_LOCAL getLevelCompressedImageSizeImplementationDSAEXTImmutableWorkaround(GLint level);
#endif
#ifndef MAGNUM_TARGET_GLES
@@ -1183,12 +1168,10 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
void MAGNUM_GL_LOCAL getImageImplementationDefault(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getImageImplementationDSA(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
- void MAGNUM_GL_LOCAL getImageImplementationDSAEXT(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getImageImplementationRobustness(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, PixelFormat format, PixelType type, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationDefault(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationDSA(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, std::size_t dataSize, GLvoid* data);
- void MAGNUM_GL_LOCAL getCompressedImageImplementationDSAEXT(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, std::size_t dataSize, GLvoid* data);
void MAGNUM_GL_LOCAL getCompressedImageImplementationRobustness(CubeMapCoordinate coordinate, GLint level, const Vector2i& size, std::size_t dataSize, GLvoid* data);
#endif
@@ -1200,13 +1183,11 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
void MAGNUM_GL_LOCAL subImageImplementationDefault(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL subImageImplementationDSA(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data);
- void MAGNUM_GL_LOCAL subImageImplementationDSAEXT(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, PixelFormat format, PixelType type, const GLvoid* data);
#endif
void MAGNUM_GL_LOCAL compressedSubImageImplementationDefault(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL compressedSubImageImplementationDSA(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
- void MAGNUM_GL_LOCAL compressedSubImageImplementationDSAEXT(CubeMapCoordinate coordinate, GLint level, const Vector2i& offset, const Vector2i& size, CompressedPixelFormat format, const GLvoid* data, GLsizei dataSize);
#endif
};
diff --git a/src/Magnum/GL/DefaultFramebuffer.h b/src/Magnum/GL/DefaultFramebuffer.h
index 46038d791..839b88646 100644
--- a/src/Magnum/GL/DefaultFramebuffer.h
+++ b/src/Magnum/GL/DefaultFramebuffer.h
@@ -66,11 +66,10 @@ for more involved usage, usage of non-default or multiple framebuffers.
See also @ref GL-AbstractFramebuffer-performance-optimization "relevant section in AbstractFramebuffer".
-If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
-@gl_extension{EXT,direct_state_access} desktop extension is available, functions
-@ref checkStatus(), @ref mapForDraw(), @ref mapForRead() and @ref invalidate()
-use DSA to avoid unnecessary calls to @fn_gl{BindFramebuffer}. See their
-respective documentation for more information.
+If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is available,
+functions @ref checkStatus(), @ref mapForDraw(), @ref mapForRead() and
+@ref invalidate() use DSA to avoid unnecessary calls to @fn_gl{BindFramebuffer}.
+See their respective documentation for more information.
*/
class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
friend Context;
@@ -330,9 +329,8 @@ class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
* @brief Check framebuffer status
* @param target Target for which to check the status
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
*
* The @p target parameter is ignored on OpenGL ES 2.0 if none of
@@ -340,7 +338,6 @@ class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
* or @gl_extension{NV,framebuffer_blit} is available and also on WebGL
* 1.0.
* @see @fn_gl2_keyword{CheckNamedFramebufferStatus,CheckFramebufferStatus},
- * @fn_gl_extension_keyword{CheckNamedFramebufferStatus,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{CheckFramebufferStatus}
* @requires_gl30 Extension @gl_extension{ARB,framebuffer_object}
*/
@@ -379,13 +376,11 @@ class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
*
* @snippet MagnumGL.cpp DefaultFramebuffer-usage-map
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref maxDrawBuffers(), @ref maxDualSourceDrawBuffers(),
* @ref mapForRead(), @fn_gl2_keyword{NamedFramebufferDrawBuffers,DrawBuffers},
- * @fn_gl_extension_keyword{FramebufferDrawBuffers,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{DrawBuffers}
* @requires_gles30 Extension @gl_extension{EXT,draw_buffers} in OpenGL
* ES 2.0.
@@ -402,12 +397,10 @@ class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
* Similar to above function, can be used in cases when shader has
* only one (unnamed) output.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref mapForRead(), @fn_gl2_keyword{NamedFramebufferDrawBuffer,DrawBuffer},
- * @fn_gl_extension_keyword{FramebufferDrawBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{DrawBuffer}
* or @fn_gl{DrawBuffers} in OpenGL ES 3.0
* @requires_gles30 Extension @gl_extension{EXT,draw_buffers} in OpenGL
@@ -423,12 +416,10 @@ class MAGNUM_GL_EXPORT DefaultFramebuffer: public AbstractFramebuffer {
* @param attachment Buffer attachment
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref mapForDraw(), @fn_gl2_keyword{NamedFramebufferReadBuffer,ReadBuffer},
- * @fn_gl_extension_keyword{FramebufferReadBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{ReadBuffer}
* @requires_gles30 Extension @gl_extension{NV,read_buffer} in OpenGL
* ES 2.0.
diff --git a/src/Magnum/GL/Extensions.h b/src/Magnum/GL/Extensions.h
index f183ddad4..1fc37f4af 100644
--- a/src/Magnum/GL/Extensions.h
+++ b/src/Magnum/GL/Extensions.h
@@ -232,12 +232,11 @@ namespace AMD {
_extension(148,EXT,draw_buffers2, GL210, GL300) // #340
_extension(149,EXT,texture_integer, GL210, GL300) // #343
_extension(150,EXT,transform_feedback, GL210, GL300) // #352
- _extension(151,EXT,direct_state_access, GL210, None) // #353
- _extension(152,EXT,texture_snorm, GL300, GL310) // #365
- _extension(153,EXT,texture_sRGB_decode, GL210, None) // #402
- _extension(154,EXT,shader_integer_mix, GL300, None) // #437
- _extension(155,EXT,debug_label, GL210, None) // #439
- _extension(156,EXT,debug_marker, GL210, None) // #440
+ _extension(151,EXT,texture_snorm, GL300, GL310) // #365
+ _extension(152,EXT,texture_sRGB_decode, GL210, None) // #402
+ _extension(153,EXT,shader_integer_mix, GL300, None) // #437
+ _extension(154,EXT,debug_label, GL210, None) // #439
+ _extension(155,EXT,debug_marker, GL210, None) // #440
} namespace GREMEDY {
_extension(157,GREMEDY,string_marker, GL210, None) // #311
} namespace KHR {
diff --git a/src/Magnum/GL/Framebuffer.cpp b/src/Magnum/GL/Framebuffer.cpp
index 972d5e5b1..47da81d98 100644
--- a/src/Magnum/GL/Framebuffer.cpp
+++ b/src/Magnum/GL/Framebuffer.cpp
@@ -341,19 +341,10 @@ void Framebuffer::renderbufferImplementationDSA(const BufferAttachment attachmen
glNamedFramebufferRenderbuffer(_id, GLenum(attachment), GL_RENDERBUFFER, renderbufferId);
}
-void Framebuffer::renderbufferImplementationDSAEXT(const BufferAttachment attachment, const GLuint renderbufferId) {
- _flags |= ObjectFlag::Created;
- glNamedFramebufferRenderbufferEXT(_id, GLenum(attachment), GL_RENDERBUFFER, renderbufferId);
-}
-
void Framebuffer::texture1DImplementationDefault(BufferAttachment attachment, GLuint textureId, GLint mipLevel) {
glFramebufferTexture1D(GLenum(bindInternal()), GLenum(attachment), GL_TEXTURE_1D, textureId, mipLevel);
}
-void Framebuffer::texture1DImplementationDSAEXT(BufferAttachment attachment, GLuint textureId, GLint mipLevel) {
- _flags |= ObjectFlag::Created;
- glNamedFramebufferTexture1DEXT(_id, GLenum(attachment), GL_TEXTURE_1D, textureId, mipLevel);
-}
#endif
void Framebuffer::texture2DImplementationDefault(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint mipLevel) {
@@ -365,11 +356,6 @@ void Framebuffer::texture2DImplementationDSA(const BufferAttachment attachment,
glNamedFramebufferTexture(_id, GLenum(attachment), textureId, mipLevel);
}
-void Framebuffer::texture2DImplementationDSAEXT(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint mipLevel) {
- _flags |= ObjectFlag::Created;
- glNamedFramebufferTexture2DEXT(_id, GLenum(attachment), textureTarget, textureId, mipLevel);
-}
-
void Framebuffer::textureCubeMapImplementationDSA(const BufferAttachment attachment, const GLenum textureTarget, const GLuint textureId, const GLint mipLevel) {
glNamedFramebufferTextureLayer(_id, GLenum(attachment), textureId, mipLevel, textureTarget - GL_TEXTURE_CUBE_MAP_POSITIVE_X);
}
@@ -391,10 +377,6 @@ void Framebuffer::textureImplementationEXT(BufferAttachment attachment, GLuint t
void Framebuffer::textureImplementationDSA(const BufferAttachment attachment, const GLuint textureId, const GLint mipLevel) {
glNamedFramebufferTexture(_id, GLenum(attachment), textureId, mipLevel);
}
-
-void Framebuffer::textureImplementationDSAEXT(const BufferAttachment attachment, const GLuint textureId, const GLint mipLevel) {
- glNamedFramebufferTextureEXT(_id, GLenum(attachment), textureId, mipLevel);
-}
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -411,11 +393,6 @@ void Framebuffer::textureLayerImplementationDefault(BufferAttachment attachment,
void Framebuffer::textureLayerImplementationDSA(const BufferAttachment attachment, const GLuint textureId, const GLint mipLevel, const GLint layer) {
glNamedFramebufferTextureLayer(_id, GLenum(attachment), textureId, mipLevel, layer);
}
-
-void Framebuffer::textureLayerImplementationDSAEXT(BufferAttachment attachment, GLuint textureId, GLint mipLevel, GLint layer) {
- _flags |= ObjectFlag::Created;
- glNamedFramebufferTextureLayerEXT(_id, GLenum(attachment), textureId, mipLevel, layer);
-}
#endif
#ifndef DOXYGEN_GENERATING_OUTPUT
diff --git a/src/Magnum/GL/Framebuffer.h b/src/Magnum/GL/Framebuffer.h
index 98435de4d..1e7a2d95b 100644
--- a/src/Magnum/GL/Framebuffer.h
+++ b/src/Magnum/GL/Framebuffer.h
@@ -73,13 +73,12 @@ framebuffer, then bind the default and render the textures on screen:
See also @ref GL-AbstractFramebuffer-performance-optimization "relevant section in AbstractFramebuffer".
-If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
-@gl_extension{EXT,direct_state_access} desktop extension is available, functions
-@ref checkStatus(), @ref mapForDraw(), @ref mapForRead(), @ref invalidate(),
-@ref attachRenderbuffer(), @ref attachTexture(), @ref attachCubeMapTexture(),
-@ref attachTextureLayer() and @ref detach() use DSA to avoid unnecessary calls
-to @fn_gl{BindFramebuffer}. See their respective documentation for more
-information.
+If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+available, functions @ref checkStatus(), @ref mapForDraw(), @ref mapForRead(),
+@ref invalidate(), @ref attachRenderbuffer(), @ref attachTexture(),
+@ref attachCubeMapTexture(), @ref attachTextureLayer() and @ref detach() use
+DSA to avoid unnecessary calls to @fn_gl{BindFramebuffer}. See their respective
+documentation for more information.
@requires_gl30 Extension @gl_extension{ARB,framebuffer_object}
*/
@@ -441,9 +440,8 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @brief Check framebuffer status
* @param target Target for which check the status
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
*
* The @p target parameter is ignored on OpenGL ES 2.0 if none of
@@ -451,7 +449,6 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* or @gl_extension{NV,framebuffer_blit} is available and also on WebGL
* 1.0.
* @see @fn_gl2_keyword{CheckNamedFramebufferStatus,CheckFramebufferStatus},
- * @fn_gl_extension_keyword{CheckNamedFramebufferStatus,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{CheckFramebufferStatus}
*/
Status checkStatus(FramebufferTarget target);
@@ -490,14 +487,12 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
*
* @snippet MagnumGL.cpp Framebuffer-mapForDraw
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref maxDrawBuffers(), @ref maxDualSourceDrawBuffers(),
* @ref maxColorAttachments(), @ref mapForRead(),
* @fn_gl2_keyword{NamedFramebufferDrawBuffers,DrawBuffers},
- * @fn_gl_extension_keyword{FramebufferDrawBuffers,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{DrawBuffers}
* @requires_gles30 Extension @gl_extension{EXT,draw_buffers} or
* @gl_extension{NV,draw_buffers} in OpenGL ES 2.0.
@@ -514,13 +509,11 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* Similar to above function, can be used in cases when shader has
* only one (unnamed) output.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref maxColorAttachments(), @ref mapForRead(),
* @fn_gl2_keyword{NamedFramebufferDrawBuffer,DrawBuffer},
- * @fn_gl_extension_keyword{FramebufferDrawBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{DrawBuffer}
* (or @fn_gl_keyword{DrawBuffers} in OpenGL ES)
* @requires_gles30 Extension @gl_extension{EXT,draw_buffers} or
@@ -536,12 +529,10 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param attachment Color attachment
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref mapForDraw(), @fn_gl2_keyword{NamedFramebufferReadBuffer,ReadBuffer},
- * @fn_gl_extension_keyword{FramebufferReadBuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{ReadBuffer}
* @requires_gles30 Extension @gl_extension{NV,read_buffer} in OpenGL
* ES 2.0.
@@ -598,12 +589,10 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param renderbuffer Renderbuffer
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref detach(), @fn_gl2_keyword{NamedFramebufferRenderbuffer,FramebufferRenderbuffer},
- * @fn_gl_extension_keyword{NamedFramebufferRenderbuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and @fn_gl_keyword{FramebufferRenderbuffer}
*/
Framebuffer& attachRenderbuffer(BufferAttachment attachment, Renderbuffer& renderbuffer);
@@ -616,13 +605,11 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param level Mip level
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref detach(), @ref attachCubeMapTexture(),
* @fn_gl2_keyword{NamedFramebufferTexture,FramebufferTexture},
- * @fn_gl_extension_keyword{NamedFramebufferTexture1D,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl2_keyword{FramebufferTexture1D,FramebufferTexture}
* @requires_gl Only 2D and 3D textures are available in OpenGL ES and
@@ -638,13 +625,11 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param level Mip level
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref detach(), @ref attachCubeMapTexture(),
* @fn_gl2_keyword{NamedFramebufferTexture,FramebufferTexture},
- * @fn_gl_extension_keyword{NamedFramebufferTexture2D,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl2_keyword{FramebufferTexture2D,FramebufferTexture}
* @requires_gles30 Extension @gl_extension{OES,fbo_render_mipmap} to
@@ -681,13 +666,11 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param level Mip level
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref detach(), @ref attachTexture(),
* @fn_gl2_keyword{NamedFramebufferTextureLayer,FramebufferTextureLayer},
- * @fn_gl_extension_keyword{NamedFramebufferTexture2D,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl2_keyword{FramebufferTexture2D,FramebufferTexture}
* @requires_gles30 Extension @gl_extension{OES,fbo_render_mipmap} to
@@ -706,12 +689,10 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param layer Layer
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref detach(), @fn_gl2_keyword{NamedFramebufferTextureLayer,FramebufferTextureLayer},
- * @fn_gl_extension_keyword{NamedFramebufferTextureLayer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl2_keyword{FramebufferTextureLayer,FramebufferTexture}
* or @fn_gl_extension_keyword{FramebufferTexture3D,OES,texture_3D}
@@ -773,13 +754,11 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @return Reference to self (for method chaining)
*
* Attaches whole texture with all layers addressable using `gl_Layer`
- * in geometry shader. If neither @gl_extension{ARB,direct_state_access}
- * (part of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * extension is available, the framebuffer is bound before the
+ * in geometry shader. If @gl_extension{ARB,direct_state_access} (part
+ * of OpenGL 4.5) is not available, the framebuffer is bound before the
* operation (if not already).
* @see @ref detach(), @ref attachTexture(),
* @fn_gl2_keyword{NamedFramebufferTexture,FramebufferTexture},
- * @fn_gl_extension_keyword{NamedFramebufferTexture,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl_keyword{FramebufferTexture}
* @requires_gl32 Extension @gl_extension{ARB,geometry_shader4}
@@ -845,14 +824,12 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
* @param attachment Buffer attachment
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the framebuffer is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the framebuffer is bound before the operation (if not
* already).
* @see @ref attachRenderbuffer(), @ref attachTexture(),
* @ref attachCubeMapTexture(), @ref attachTextureLayer(),
* @fn_gl2_keyword{NamedFramebufferRenderbuffer,FramebufferRenderbuffer},
- * @fn_gl_extension_keyword{NamedFramebufferRenderbuffer,EXT,direct_state_access},
* eventually @fn_gl{BindFramebuffer} and
* @fn_gl_keyword{FramebufferRenderbuffer}
*/
@@ -899,18 +876,15 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
void MAGNUM_GL_LOCAL renderbufferImplementationDefault(BufferAttachment attachment, GLuint renderbufferId);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL renderbufferImplementationDSA(BufferAttachment attachment, GLuint renderbufferId);
- void MAGNUM_GL_LOCAL renderbufferImplementationDSAEXT(BufferAttachment attachment, GLuint renderbufferId);
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL texture1DImplementationDefault(BufferAttachment attachment, GLuint textureId, GLint level);
- void MAGNUM_GL_LOCAL texture1DImplementationDSAEXT(BufferAttachment attachment, GLuint textureId, GLint level);
#endif
void MAGNUM_GL_LOCAL texture2DImplementationDefault(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint level);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL texture2DImplementationDSA(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint level);
- void MAGNUM_GL_LOCAL texture2DImplementationDSAEXT(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint level);
void MAGNUM_GL_LOCAL textureCubeMapImplementationDSA(BufferAttachment attachment, GLenum textureTarget, GLuint textureId, GLint level);
#endif
@@ -922,7 +896,6 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL textureImplementationDSA(BufferAttachment attachment, GLuint textureId, GLint level);
- void MAGNUM_GL_LOCAL textureImplementationDSAEXT(BufferAttachment attachment, GLuint textureId, GLint level);
#endif
#if !(defined(MAGNUM_TARGET_WEBGL) && defined(MAGNUM_TARGET_GLES2))
@@ -930,7 +903,6 @@ class MAGNUM_GL_EXPORT Framebuffer: public AbstractFramebuffer, public AbstractO
#endif
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL textureLayerImplementationDSA(BufferAttachment attachment, GLuint textureId, GLint level, GLint layer);
- void MAGNUM_GL_LOCAL textureLayerImplementationDSAEXT(BufferAttachment attachment, GLuint textureId, GLint level, GLint layer);
#endif
};
diff --git a/src/Magnum/GL/Implementation/BufferState.cpp b/src/Magnum/GL/Implementation/BufferState.cpp
index b27bb8d68..bef0c06f7 100644
--- a/src/Magnum/GL/Implementation/BufferState.cpp
+++ b/src/Magnum/GL/Implementation/BufferState.cpp
@@ -113,18 +113,6 @@ BufferState::BufferState(Context& context, std::vector& extensions)
mapRangeImplementation = &Buffer::mapRangeImplementationDSA;
flushMappedRangeImplementation = &Buffer::flushMappedRangeImplementationDSA;
unmapImplementation = &Buffer::unmapImplementationDSA;
- } else if(context.isExtensionSupported()) {
- extensions.emplace_back(Extensions::EXT::direct_state_access::string());
-
- copyImplementation = &Buffer::copyImplementationDSAEXT;
- getParameterImplementation = &Buffer::getParameterImplementationDSAEXT;
- getSubDataImplementation = &Buffer::getSubDataImplementationDSAEXT;
- dataImplementation = &Buffer::dataImplementationDSAEXT;
- subDataImplementation = &Buffer::subDataImplementationDSAEXT;
- mapImplementation = &Buffer::mapImplementationDSAEXT;
- mapRangeImplementation = &Buffer::mapRangeImplementationDSAEXT;
- flushMappedRangeImplementation = &Buffer::flushMappedRangeImplementationDSAEXT;
- unmapImplementation = &Buffer::unmapImplementationDSAEXT;
} else
#endif
{
diff --git a/src/Magnum/GL/Implementation/FramebufferState.cpp b/src/Magnum/GL/Implementation/FramebufferState.cpp
index 93fae9741..b0480683b 100644
--- a/src/Magnum/GL/Implementation/FramebufferState.cpp
+++ b/src/Magnum/GL/Implementation/FramebufferState.cpp
@@ -91,35 +91,6 @@ FramebufferState::FramebufferState(Context& context, std::vector& e
renderbufferStorageImplementation = &Renderbuffer::storageImplementationDSA;
- } else if(context.isExtensionSupported()) {
- extensions.emplace_back(Extensions::EXT::direct_state_access::string());
-
- checkStatusImplementation = &AbstractFramebuffer::checkStatusImplementationDSAEXT;
-
- /* I don't bother with EXT_DSA anymore */
- clearIImplementation = &AbstractFramebuffer::clearImplementationDefault;
- clearUIImplementation = &AbstractFramebuffer::clearImplementationDefault;
- clearFImplementation = &AbstractFramebuffer::clearImplementationDefault;
- clearFIImplementation = &AbstractFramebuffer::clearImplementationDefault;
-
- drawBuffersImplementation = &AbstractFramebuffer::drawBuffersImplementationDSAEXT;
- drawBufferImplementation = &AbstractFramebuffer::drawBufferImplementationDSAEXT;
- readBufferImplementation = &AbstractFramebuffer::readBufferImplementationDSAEXT;
-
- copySub1DImplementation = &AbstractFramebuffer::copySub1DImplementationDSAEXT;
- copySub2DImplementation = &AbstractFramebuffer::copySub2DImplementationDSAEXT;
- copySubCubeMapImplementation = &AbstractFramebuffer::copySub2DImplementationDSAEXT;
- copySub3DImplementation = &AbstractFramebuffer::copySub3DImplementationDSAEXT;
-
- renderbufferImplementation = &Framebuffer::renderbufferImplementationDSAEXT;
- texture1DImplementation = &Framebuffer::texture1DImplementationDSAEXT;
- /* The EXT_DSA implementation is the same for both 2D and cube map textures */
- texture2DImplementation = &Framebuffer::texture2DImplementationDSAEXT;
- textureImplementation = &Framebuffer::textureImplementationDSAEXT;
- textureCubeMapImplementation = &Framebuffer::texture2DImplementationDSAEXT;
- textureLayerImplementation = &Framebuffer::textureLayerImplementationDSAEXT;
-
- renderbufferStorageImplementation = &Renderbuffer::storageImplementationDSAEXT;
} else
#endif
{
@@ -310,10 +281,6 @@ FramebufferState::FramebufferState(Context& context, std::vector& e
renderbufferStorageMultisampleImplementation = &Renderbuffer::storageMultisampleImplementationDSA;
- } else if(context.isExtensionSupported()) {
- /* Extension added above */
-
- renderbufferStorageMultisampleImplementation = &Renderbuffer::storageMultisampleImplementationDSAEXT;
} else
#endif
{
diff --git a/src/Magnum/GL/Implementation/MeshState.cpp b/src/Magnum/GL/Implementation/MeshState.cpp
index d96587622..eba7ba5b2 100644
--- a/src/Magnum/GL/Implementation/MeshState.cpp
+++ b/src/Magnum/GL/Implementation/MeshState.cpp
@@ -60,12 +60,6 @@ MeshState::MeshState(Context& context, ContextState& contextState, std::vector()) {
- extensions.emplace_back(Extensions::EXT::direct_state_access::string());
-
- createImplementation = &Mesh::createImplementationVAO;
- attributePointerImplementation = &Mesh::attributePointerImplementationVAODSAEXT;
- bindIndexBufferImplementation = &Mesh::bindIndexBufferImplementationVAO;
} else
#endif
{
@@ -145,14 +139,12 @@ MeshState::MeshState(Context& context, ContextState& contextState, std::vector()) {
+ if(context.isExtensionSupported())
vertexAttribDivisorImplementation = &Mesh::vertexAttribDivisorImplementationVAODSA;
- } else if(context.isExtensionSupported()) {
- if(glVertexArrayVertexAttribDivisorEXT)
- vertexAttribDivisorImplementation = &Mesh::vertexAttribDivisorImplementationVAODSAEXT;
- else vertexAttribDivisorImplementation = &Mesh::vertexAttribDivisorImplementationVAO;
- } else vertexAttribDivisorImplementation = nullptr;
+ else if(context.isExtensionSupported())
+ vertexAttribDivisorImplementation = &Mesh::vertexAttribDivisorImplementationVAO;
+ else
+ vertexAttribDivisorImplementation = nullptr;
#elif defined(MAGNUM_TARGET_GLES2)
/* Instanced arrays implementation on ES2 */
if(context.isExtensionSupported()) {
diff --git a/src/Magnum/GL/Implementation/ShaderProgramState.cpp b/src/Magnum/GL/Implementation/ShaderProgramState.cpp
index 055a12ecc..e2d091aba 100644
--- a/src/Magnum/GL/Implementation/ShaderProgramState.cpp
+++ b/src/Magnum/GL/Implementation/ShaderProgramState.cpp
@@ -113,61 +113,35 @@ ShaderProgramState::ShaderProgramState(Context& context, std::vector())
- #else
- if(context.isExtensionSupported())
- #endif
- {
- #ifndef MAGNUM_TARGET_GLES
- extensions.emplace_back(Extensions::EXT::direct_state_access::string());
- #else
+ #if defined(MAGNUM_TARGET_GLES) && !defined(MAGNUM_TARGET_WEBGL)
+ if(context.isExtensionSupported()) {
extensions.push_back(Extensions::EXT::separate_shader_objects::string());
- #endif
- uniform1fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform2fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform3fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform4fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform1ivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform2ivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform3ivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform4ivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
+ uniform1fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform2fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform3fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform4fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform1ivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform2ivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform3ivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform4ivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
#ifndef MAGNUM_TARGET_GLES2
- uniform1uivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform2uivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform3uivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniform4uivImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- #endif
- #ifndef MAGNUM_TARGET_GLES
- uniform1dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniform2dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniform3dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniform4dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
+ uniform1uivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform2uivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform3uivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniform4uivImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
#endif
- uniformMatrix2fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix3fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix4fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
+ uniformMatrix2fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix3fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix4fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
#ifndef MAGNUM_TARGET_GLES2
- uniformMatrix2x3fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix3x2fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix2x4fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix4x2fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix3x4fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- uniformMatrix4x3fvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT_SSOEXT;
- #endif
- #ifndef MAGNUM_TARGET_GLES
- uniformMatrix2dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix3dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix4dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix2x3dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix3x2dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix2x4dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix4x2dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix3x4dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
- uniformMatrix4x3dvImplementation = &AbstractShaderProgram::uniformImplementationDSAEXT;
+ uniformMatrix2x3fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix3x2fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix2x4fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix4x2fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix3x4fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
+ uniformMatrix4x3fvImplementation = &AbstractShaderProgram::uniformImplementationSSOEXT;
#endif
} else
#endif
diff --git a/src/Magnum/GL/Implementation/TextureState.cpp b/src/Magnum/GL/Implementation/TextureState.cpp
index d3f013878..eb3c1f6d8 100644
--- a/src/Magnum/GL/Implementation/TextureState.cpp
+++ b/src/Magnum/GL/Implementation/TextureState.cpp
@@ -87,12 +87,6 @@ TextureState::TextureState(Context& context, std::vector& extension
unbindImplementation = &AbstractTexture::unbindImplementationMulti;
bindImplementation = &AbstractTexture::bindImplementationMulti;
- } else if(context.isExtensionSupported()) {
- /* Extension name added below */
-
- unbindImplementation = &AbstractTexture::unbindImplementationDSAEXT;
- bindImplementation = &AbstractTexture::bindImplementationDSAEXT;
-
} else
#endif
{
@@ -140,31 +134,6 @@ TextureState::TextureState(Context& context, std::vector& extension
cubeSubImageImplementation = &CubeMapTexture::subImageImplementationDSA;
cubeCompressedSubImageImplementation = &CubeMapTexture::compressedSubImageImplementationDSA;
- } else if(context.isExtensionSupported()) {
- extensions.emplace_back(Extensions::EXT::direct_state_access::string());
-
- parameteriImplementation = &AbstractTexture::parameterImplementationDSAEXT;
- parameterfImplementation = &AbstractTexture::parameterImplementationDSAEXT;
- parameterivImplementation = &AbstractTexture::parameterImplementationDSAEXT;
- parameterfvImplementation = &AbstractTexture::parameterImplementationDSAEXT;
- parameterIuivImplementation = &AbstractTexture::parameterIImplementationDSAEXT;
- parameterIivImplementation = &AbstractTexture::parameterIImplementationDSAEXT;
- getLevelParameterivImplementation = &AbstractTexture::getLevelParameterImplementationDSAEXT;
- mipmapImplementation = &AbstractTexture::mipmapImplementationDSAEXT;
- subImage1DImplementation = &AbstractTexture::subImageImplementationDSAEXT;
- subImage2DImplementation = &AbstractTexture::subImageImplementationDSAEXT;
- subImage3DImplementation = &AbstractTexture::subImageImplementationDSAEXT;
- compressedSubImage1DImplementation = &AbstractTexture::compressedSubImageImplementationDSAEXT;
- compressedSubImage2DImplementation = &AbstractTexture::compressedSubImageImplementationDSAEXT;
- compressedSubImage3DImplementation = &AbstractTexture::compressedSubImageImplementationDSAEXT;
-
- setBufferImplementation = &BufferTexture::setBufferImplementationDSAEXT;
- setBufferRangeImplementation = &BufferTexture::setBufferRangeImplementationDSAEXT;
-
- getCubeLevelParameterivImplementation = &CubeMapTexture::getLevelParameterImplementationDSAEXT;
- cubeSubImageImplementation = &CubeMapTexture::subImageImplementationDSAEXT;
- cubeCompressedSubImageImplementation = &CubeMapTexture::compressedSubImageImplementationDSAEXT;
-
} else
#endif
{
@@ -252,14 +221,10 @@ TextureState::TextureState(Context& context, std::vector& extension
!context.isDriverWorkaroundDisabled("nv-cubemap-inconsistent-compressed-image-size")) {
if(context.isExtensionSupported())
getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDSANonImmutableWorkaround;
- else if(context.isExtensionSupported())
- getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDSAEXTImmutableWorkaround;
else getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDefaultImmutableWorkaround;
} else {
if(context.isExtensionSupported())
getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDSA;
- else if(context.isExtensionSupported())
- getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDSAEXT;
else getCubeLevelCompressedImageSizeImplementation = &CubeMapTexture::getLevelCompressedImageSizeImplementationDefault;
}
@@ -274,11 +239,6 @@ TextureState::TextureState(Context& context, std::vector& extension
getImageImplementation = &AbstractTexture::getImageImplementationRobustness;
getCompressedImageImplementation = &AbstractTexture::getCompressedImageImplementationRobustness;
- } else if(context.isExtensionSupported()) {
- /* Extension name added above */
- getImageImplementation = &AbstractTexture::getImageImplementationDSAEXT;
- getCompressedImageImplementation = &AbstractTexture::getCompressedImageImplementationDSAEXT;
-
} else {
getImageImplementation = &AbstractTexture::getImageImplementationDefault;
getCompressedImageImplementation = &AbstractTexture::getCompressedImageImplementationDefault;
@@ -295,11 +255,6 @@ TextureState::TextureState(Context& context, std::vector& extension
getCubeImageImplementation = &CubeMapTexture::getImageImplementationRobustness;
getCompressedCubeImageImplementation = &CubeMapTexture::getCompressedImageImplementationRobustness;
- } else if(context.isExtensionSupported()) {
- /* Extension name added above */
- getCubeImageImplementation = &CubeMapTexture::getImageImplementationDSAEXT;
- getCompressedCubeImageImplementation = &CubeMapTexture::getCompressedImageImplementationDSAEXT;
-
} else {
getCubeImageImplementation = &CubeMapTexture::getImageImplementationDefault;
getCompressedCubeImageImplementation = &CubeMapTexture::getCompressedImageImplementationDefault;
@@ -335,10 +290,6 @@ TextureState::TextureState(Context& context, std::vector& extension
storage2DImplementation = &AbstractTexture::storageImplementationDSA;
storage3DImplementation = &AbstractTexture::storageImplementationDSA;
- } else if(context.isExtensionSupported()) {
- storage1DImplementation = &AbstractTexture::storageImplementationDSAEXT;
- storage2DImplementation = &AbstractTexture::storageImplementationDSAEXT;
- storage3DImplementation = &AbstractTexture::storageImplementationDSAEXT;
} else
#endif
{
@@ -378,9 +329,6 @@ TextureState::TextureState(Context& context, std::vector& extension
if(context.isExtensionSupported()) {
storage2DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDSA;
storage3DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDSA;
- } else if(context.isExtensionSupported()) {
- storage2DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDSAEXT;
- storage3DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDSAEXT;
} else {
storage2DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDefault;
storage3DMultisampleImplementation = &AbstractTexture::storageMultisampleImplementationDefault;
diff --git a/src/Magnum/GL/Mesh.cpp b/src/Magnum/GL/Mesh.cpp
index 7bf6a7e14..beb47b6d0 100644
--- a/src/Magnum/GL/Mesh.cpp
+++ b/src/Magnum/GL/Mesh.cpp
@@ -713,27 +713,6 @@ void Mesh::attributePointerImplementationVAODSA(AttributeLayout&& attribute) {
if(attribute.divisor)
(this->*Context::current().state().mesh->vertexAttribDivisorImplementation)(attribute.location, attribute.divisor);
}
-
-void Mesh::attributePointerImplementationVAODSAEXT(AttributeLayout&& attribute) {
- _flags |= ObjectFlag::Created;
- glEnableVertexArrayAttribEXT(_id, attribute.location);
-
- #ifndef MAGNUM_TARGET_GLES2
- if(attribute.kind == DynamicAttribute::Kind::Integral)
- glVertexArrayVertexAttribIOffsetEXT(_id, attribute.buffer.id(), attribute.location, attribute.size, attribute.type, attribute.stride, attribute.offset);
- #ifndef MAGNUM_TARGET_GLES
- else if(attribute.kind == DynamicAttribute::Kind::Long)
- glVertexArrayVertexAttribLOffsetEXT(_id, attribute.buffer.id(), attribute.location, attribute.size, attribute.type, attribute.stride, attribute.offset);
- #endif
- else
- #endif
- {
- glVertexArrayVertexAttribOffsetEXT(_id, attribute.buffer.id(), attribute.location, attribute.size, attribute.type, attribute.kind == DynamicAttribute::Kind::GenericNormalized, attribute.stride, attribute.offset);
- }
-
- if(attribute.divisor)
- (this->*Context::current().state().mesh->vertexAttribDivisorImplementation)(attribute.location, attribute.divisor);
-}
#endif
void Mesh::vertexAttribPointer(AttributeLayout& attribute) {
@@ -770,9 +749,6 @@ void Mesh::vertexAttribDivisorImplementationVAO(const GLuint index, const GLuint
void Mesh::vertexAttribDivisorImplementationVAODSA(const GLuint index, const GLuint divisor) {
glVertexArrayBindingDivisor(_id, index, divisor);
}
-void Mesh::vertexAttribDivisorImplementationVAODSAEXT(const GLuint index, const GLuint divisor) {
- glVertexArrayVertexAttribDivisorEXT(_id, index, divisor);
-}
#elif defined(MAGNUM_TARGET_GLES2)
void Mesh::vertexAttribDivisorImplementationANGLE(const GLuint index, const GLuint divisor) {
glVertexAttribDivisorANGLE(index, divisor);
diff --git a/src/Magnum/GL/Mesh.h b/src/Magnum/GL/Mesh.h
index c096d247a..f6be08f71 100644
--- a/src/Magnum/GL/Mesh.h
+++ b/src/Magnum/GL/Mesh.h
@@ -1112,14 +1112,12 @@ class MAGNUM_GL_EXPORT Mesh: public AbstractObject {
void MAGNUM_GL_LOCAL attributePointerImplementationVAO(AttributeLayout&& attribute);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL attributePointerImplementationVAODSA(AttributeLayout&& attribute);
- void MAGNUM_GL_LOCAL attributePointerImplementationVAODSAEXT(AttributeLayout&& attribute);
#endif
void MAGNUM_GL_LOCAL vertexAttribPointer(AttributeLayout& attribute);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAO(GLuint index, GLuint divisor);
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAODSA(GLuint index, GLuint divisor);
- void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAODSAEXT(GLuint index, GLuint divisor);
#elif defined(MAGNUM_TARGET_GLES2)
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationANGLE(GLuint index, GLuint divisor);
#ifndef MAGNUM_TARGET_WEBGL
diff --git a/src/Magnum/GL/MultisampleTexture.h b/src/Magnum/GL/MultisampleTexture.h
index 6aa23a25a..fe0569261 100644
--- a/src/Magnum/GL/MultisampleTexture.h
+++ b/src/Magnum/GL/MultisampleTexture.h
@@ -250,9 +250,8 @@ template class MultisampleTexture: public AbstractTextur
* After calling this function the texture is immutable and calling
* @ref setStorage() again is not allowed.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already). If @gl_extension{ARB,texture_storage_multisample} (part of
* OpenGL 4.3) is not available, the texture is bound and the feature
* is emulated using plain @gl_extension{ARB,texture_multisample}
@@ -260,8 +259,6 @@ template class MultisampleTexture: public AbstractTextur
* @see @ref maxSize(), @ref maxColorSamples(), @ref maxDepthSamples(),
* @ref maxIntegerSamples(), @fn_gl2_keyword{TextureStorage2DMultisample,TexStorage2DMultisample} /
* @fn_gl2_keyword{TextureStorage3DMultisample,TexStorage3DMultisample},
- * @fn_gl_extension_keyword{TextureStorage2DMultisample,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{TextureStorage3DMultisample,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture}
* and @fn_gl_keyword{TexStorage2DMultisample} / @fn_gl_keyword{TexStorage3DMultisample}
* or @fn_gl_keyword{TexImage2DMultisample} / @fn_gl_keyword{TexImage3DMultisample}
diff --git a/src/Magnum/GL/Renderbuffer.cpp b/src/Magnum/GL/Renderbuffer.cpp
index bfa24aade..3024f5dd6 100644
--- a/src/Magnum/GL/Renderbuffer.cpp
+++ b/src/Magnum/GL/Renderbuffer.cpp
@@ -148,11 +148,6 @@ void Renderbuffer::storageImplementationDefault(RenderbufferFormat internalForma
void Renderbuffer::storageImplementationDSA(const RenderbufferFormat internalFormat, const Vector2i& size) {
glNamedRenderbufferStorage(_id, GLenum(internalFormat), size.x(), size.y());
}
-
-void Renderbuffer::storageImplementationDSAEXT(RenderbufferFormat internalFormat, const Vector2i& size) {
- _flags |= ObjectFlag::Created;
- glNamedRenderbufferStorageEXT(_id, GLenum(internalFormat), size.x(), size.y());
-}
#endif
#ifndef MAGNUM_TARGET_GLES2
@@ -176,11 +171,6 @@ void Renderbuffer::storageMultisampleImplementationNV(const GLsizei samples, con
void Renderbuffer::storageMultisampleImplementationDSA(const GLsizei samples, const RenderbufferFormat internalFormat, const Vector2i& size) {
glNamedRenderbufferStorageMultisample(_id, samples, GLenum(internalFormat), size.x(), size.y());
}
-
-void Renderbuffer::storageMultisampleImplementationDSAEXT(GLsizei samples, RenderbufferFormat internalFormat, const Vector2i& size) {
- _flags |= ObjectFlag::Created;
- glNamedRenderbufferStorageMultisampleEXT(_id, samples, GLenum(internalFormat), size.x(), size.y());
-}
#endif
}}
diff --git a/src/Magnum/GL/Renderbuffer.h b/src/Magnum/GL/Renderbuffer.h
index decca11ec..e9a2a3c51 100644
--- a/src/Magnum/GL/Renderbuffer.h
+++ b/src/Magnum/GL/Renderbuffer.h
@@ -52,11 +52,10 @@ The engine tracks currently bound renderbuffer to avoid unnecessary calls to
implementation-defined values (such as @ref maxSize()) are cached, so repeated
queries don't result in repeated @fn_gl{Get} calls.
-If either @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) or
-@gl_extension{EXT,direct_state_access} desktop extension is available, functions
-@ref setStorage() and @ref setStorageMultisample() use DSA to avoid unnecessary
-calls to @fn_gl{BindRenderbuffer}. See their respective documentation for more
-information.
+If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is available,
+functions @ref setStorage() and @ref setStorageMultisample() use DSA to avoid
+unnecessary calls to @fn_gl{BindRenderbuffer}. See their respective
+documentation for more information.
@requires_gl30 Extension @gl_extension{ARB,framebuffer_object}
*/
@@ -212,12 +211,10 @@ class MAGNUM_GL_EXPORT Renderbuffer: public AbstractObject {
* @param internalFormat Internal format
* @param size Renderbuffer size
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
* available, the renderbuffer is bound before the operation (if not
* already).
* @see @ref maxSize(), @fn_gl2_keyword{NamedRenderbufferStorage,RenderbufferStorage},
- * @fn_gl_extension_keyword{NamedRenderbufferStorage,EXT,direct_state_access},
* eventually @fn_gl{BindRenderbuffer} and
* @fn_gl_keyword{RenderbufferStorage}
*/
@@ -230,13 +227,11 @@ class MAGNUM_GL_EXPORT Renderbuffer: public AbstractObject {
* @param internalFormat Internal format
* @param size Renderbuffer size
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
* available, the renderbuffer is bound before the operation (if not
* already).
* @see @ref maxSize(), @ref maxSamples(),
* @fn_gl2_keyword{NamedRenderbufferStorageMultisample,RenderbufferStorageMultisample},
- * @fn_gl_extension_keyword{NamedRenderbufferStorageMultisample,EXT,direct_state_access},
* eventually @fn_gl{BindRenderbuffer} and
* @fn_gl_keyword{RenderbufferStorageMultisample}
* @requires_gles30 Extension @gl_extension{ANGLE,framebuffer_multisample}
@@ -265,14 +260,12 @@ class MAGNUM_GL_EXPORT Renderbuffer: public AbstractObject {
void MAGNUM_GL_LOCAL storageImplementationDefault(RenderbufferFormat internalFormat, const Vector2i& size);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageImplementationDSA(RenderbufferFormat internalFormat, const Vector2i& size);
- void MAGNUM_GL_LOCAL storageImplementationDSAEXT(RenderbufferFormat internalFormat, const Vector2i& size);
#endif
#ifndef MAGNUM_TARGET_GLES2
void MAGNUM_GL_LOCAL storageMultisampleImplementationDefault(GLsizei samples, RenderbufferFormat internalFormat, const Vector2i& size);
#ifndef MAGNUM_TARGET_GLES
void MAGNUM_GL_LOCAL storageMultisampleImplementationDSA(GLsizei samples, RenderbufferFormat internalFormat, const Vector2i& size);
- void MAGNUM_GL_LOCAL storageMultisampleImplementationDSAEXT(GLsizei samples, RenderbufferFormat internalFormat, const Vector2i& size);
#endif
#elif !defined(MAGNUM_TARGET_WEBGL)
void MAGNUM_GL_LOCAL storageMultisampleImplementationANGLE(GLsizei samples, RenderbufferFormat internalFormat, const Vector2i& size);
diff --git a/src/Magnum/GL/Test/MeshGLTest.cpp b/src/Magnum/GL/Test/MeshGLTest.cpp
index 50a295ce1..097fa5366 100644
--- a/src/Magnum/GL/Test/MeshGLTest.cpp
+++ b/src/Magnum/GL/Test/MeshGLTest.cpp
@@ -2206,8 +2206,6 @@ void MeshGLTest::unbindVAOWhenSettingIndexBufferData() {
CORRADE_SKIP(Extensions::ARB::vertex_array_object::string() + std::string(" is not available."));
if(Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::ARB::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
- if(Context::current().isExtensionSupported())
- CORRADE_SKIP(Extensions::EXT::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
#elif defined(MAGNUM_TARGET_GLES2)
if(!Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::OES::vertex_array_object::string() + std::string(" is not available."));
@@ -2263,8 +2261,6 @@ void MeshGLTest::unbindIndexBufferWhenBindingVao() {
CORRADE_SKIP(Extensions::ARB::vertex_array_object::string() + std::string(" is not available."));
if(Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::ARB::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
- if(Context::current().isExtensionSupported())
- CORRADE_SKIP(Extensions::EXT::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
#elif defined(MAGNUM_TARGET_GLES2)
if(!Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::OES::vertex_array_object::string() + std::string(" is not available."));
@@ -2327,8 +2323,6 @@ void MeshGLTest::resetIndexBufferBindingWhenBindingVao() {
CORRADE_SKIP(Extensions::ARB::vertex_array_object::string() + std::string(" is not available."));
if(Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::ARB::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
- if(Context::current().isExtensionSupported())
- CORRADE_SKIP(Extensions::EXT::direct_state_access::string() + std::string(" is active with circumvents the issue tested here."));
#elif defined(MAGNUM_TARGET_GLES2)
if(!Context::current().isExtensionSupported())
CORRADE_SKIP(Extensions::OES::vertex_array_object::string() + std::string(" is not available."));
diff --git a/src/Magnum/GL/Texture.h b/src/Magnum/GL/Texture.h
index 72e0f77e4..e3a22f5e2 100644
--- a/src/Magnum/GL/Texture.h
+++ b/src/Magnum/GL/Texture.h
@@ -292,13 +292,11 @@ template class Texture: public AbstractTexture {
*
* Taken into account when generating mipmap using @ref generateMipmap()
* and when considering texture completeness when using mipmap
- * filtering. If neither @gl_extension{ARB,direct_state_access} (part of
- * OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * extension is available, the texture is bound before the operation
- * (if not already). Initial value is @cpp 0 @ce.
+ * filtering. If @gl_extension{ARB,direct_state_access} (part of OpenGL
+ * 4.5) is not available, the texture is bound before the operation (if
+ * not already). Initial value is @cpp 0 @ce.
* @see @ref setMaxLevel(), @ref setMinificationFilter(),
* @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_BASE_LEVEL}
* @requires_gles30 Base level is always `0` in OpenGL ES 2.0.
@@ -317,14 +315,12 @@ template class Texture: public AbstractTexture {
*
* Taken into account when generating mipmap using @ref generateMipmap()
* and when considering texture completeness when using mipmap
- * filtering. If neither @gl_extension{ARB,direct_state_access} (part of
- * OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * extension is available, the texture is bound before the operation
- * (if not already). Initial value is `1000`, which is clamped to count
- * of levels specified when using @ref setStorage().
+ * filtering. If @gl_extension{ARB,direct_state_access} (part of OpenGL
+ * 4.5) is not available, the texture is bound before the operation (if
+ * not already). Initial value is `1000`, which is clamped to count of
+ * levels specified when using @ref setStorage().
* @see @ref setBaseLevel(), @ref setMinificationFilter(),
* @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_MAX_LEVEL}
* @requires_gles30 Extension @gl_extension{APPLE,texture_max_level},
@@ -347,14 +343,12 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Sets filter used when the object pixel size is smaller than the
- * texture size. If neither @gl_extension{ARB,direct_state_access} (part
- * of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * extension is available, the texture is bound before the operation
- * (if not already). Initial value is {@ref SamplerFilter::Nearest,
- * @ref SamplerMipmap::Linear}.
+ * texture size. If @gl_extension{ARB,direct_state_access} (part of
+ * OpenGL 4.5) is not available, the texture is bound before the
+ * operation (if not already). Initial value is
+ * {@ref SamplerFilter::Nearest, @ref SamplerMipmap::Linear}.
* @see @ref setMagnificationFilter(), @ref setBaseLevel(),
* @ref setMaxLevel(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_MIN_FILTER}
*/
@@ -374,12 +368,11 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Sets filter used when the object pixel size is larger than largest
- * texture size. If neither @gl_extension{ARB,direct_state_access} (part
- * of OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} desktop
- * extension is available, the texture is bound before the operation
- * (if not already). Initial value is @ref SamplerFilter::Linear.
+ * texture size. If @gl_extension{ARB,direct_state_access} (part of
+ * OpenGL 4.5) is not available, the texture is bound before the
+ * operation (if not already). Initial value is
+ * @ref SamplerFilter::Linear.
* @see @ref setMinificationFilter(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_MAG_FILTER}
*/
@@ -398,13 +391,11 @@ template class Texture: public AbstractTexture {
* @brief Set minimum level-of-detail parameter
* @return Reference to self (for method chaining)
*
- * Limits selection of highest resolution mipmap. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already). Initial
- * value is @cpp -1000.0f @ce.
+ * Limits selection of highest resolution mipmap. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp -1000.0f @ce.
* @see @ref setMaxLod(), @ref setLodBias(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_MIN_LOD}
* @requires_gles30 Texture LOD parameters are not available in OpenGL
@@ -421,13 +412,11 @@ template class Texture: public AbstractTexture {
* @brief Set maximum level-of-detail parameter
* @return Reference to self (for method chaining)
*
- * Limits selection of lowest resolution mipmap. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already). Initial
- * value is @cpp 1000.0f @ce.
+ * Limits selection of lowest resolution mipmap. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp 1000.0f @ce.
* @see @ref setMinLod(), @ref setLodBias(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_MAX_LOD}
* @requires_gles30 Texture LOD parameters are not available in OpenGL
@@ -447,13 +436,11 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Fixed bias value that is added to the level-of-detail parameter. If
- * neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} is available, the texture is
- * bound before the operation (if not already). Initial value is
- * @cpp 0.0f @ce.
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp 0.0f @ce.
* @see @ref maxLodBias(), @ref setMinLod(), @ref setMaxLod(),
* @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_LOD_BIAS}
* @requires_gl Texture LOD bias can be specified only directly in
@@ -471,12 +458,10 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Sets wrapping type for coordinates out of range @f$ [ 0.0, 1.0 ] @f$.
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already). Initial value is @ref SamplerWrapping::Repeat.
* @see @ref setBorderColor(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_WRAP_S},
* @def_gl_keyword{TEXTURE_WRAP_T}, @def_gl_keyword{TEXTURE_WRAP_R}
@@ -497,12 +482,10 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Border color when wrapping is set to @ref SamplerWrapping::ClampToBorder.
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} is available, the texture is
- * bound before the operation (if not already). Initial value is
- * @cpp 0x00000000_rgbaf @ce.
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp 0x00000000_rgbaf @ce.
* @see @ref setWrapping(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_BORDER_COLOR}
* @requires_gles32 Extension @gl_extension{ANDROID,extension_pack_es31a} /
@@ -521,13 +504,11 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Border color for integer textures when wrapping is set to
- * @ref SamplerWrapping::ClampToBorder. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} is available, the texture is
- * bound before the operation (if not already). Initial value is
- * @cpp {0, 0, 0, 0} @ce.
+ * @ref SamplerWrapping::ClampToBorder. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp {0, 0, 0, 0} @ce.
* @see @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_BORDER_COLOR}
* @requires_gl30 Extension @gl_extension{EXT,texture_integer}
@@ -561,13 +542,12 @@ template class Texture: public AbstractTexture {
*
* Default value is @cpp 1.0f @ce, which means no anisotropy. Set to
* value greater than @cpp 1.0f @ce for anisotropic filtering. If
- * extension @gl_extension{EXT,texture_filter_anisotropic} (desktop or ES)
- * is not available, this function does nothing. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already).
+ * extension @gl_extension{EXT,texture_filter_anisotropic} (desktop or
+ * ES) is not available, this function does nothing. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already).
* @see @ref Sampler::maxMaxAnisotropy(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with
* @def_gl_keyword{TEXTURE_MAX_ANISOTROPY_EXT}
@@ -582,13 +562,11 @@ template class Texture: public AbstractTexture {
* @brief Set sRGB decoding
* @return Reference to self (for method chaining)
*
- * Disables or reenables decoding of sRGB values. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already). Initial
- * value is @cpp true @ce.
+ * Disables or reenables decoding of sRGB values. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @cpp true @ce.
* @see @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_SRGB_DECODE_EXT}
* @requires_extension Extension @gl_extension{EXT,texture_sRGB_decode}
@@ -625,12 +603,10 @@ template class Texture: public AbstractTexture {
*
* @snippet MagnumGL.cpp Texture-setSwizzle
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already). Initial value is @cpp 'r', 'g', 'b', 'a' @ce.
* @see @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_SWIZZLE_RGBA} (or
* @def_gl_keyword{TEXTURE_SWIZZLE_R}, @def_gl_keyword{TEXTURE_SWIZZLE_G},
@@ -651,13 +627,11 @@ template class Texture: public AbstractTexture {
* @brief Set depth texture comparison mode
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already). Initial value is @ref SamplerCompareMode::None.
* @note Depth textures can be only 1D or 2D.
* @see @ref setCompareFunction(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_COMPARE_MODE}
* @requires_gles30 Extension @gl_extension{EXT,shadow_samplers} in
@@ -675,14 +649,12 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Comparison operator used when comparison mode is set to
- * @ref SamplerCompareMode::CompareRefToTexture. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already). Initial
- * value is @ref SamplerCompareFunction::LessOrEqual.
+ * @ref SamplerCompareMode::CompareRefToTexture. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not
+ * already). Initial value is @ref SamplerCompareFunction::LessOrEqual.
* @note Depth textures can be only 1D or 2D.
* @see @ref setCompareMode(), @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{TEXTURE_COMPARE_FUNC}
* @requires_gles30 Extension @gl_extension{EXT,shadow_samplers} in
@@ -702,13 +674,12 @@ template class Texture: public AbstractTexture {
* @return Reference to self (for method chaining)
*
* Selects which component of packed depth/stencil texture is used for
- * texturing. If neither @gl_extension{ARB,direct_state_access} (part of
- * OpenGL 4.5) nor @gl_extension{EXT,direct_state_access} is available,
- * the texture is bound before the operation (if not already). Initial
- * value is @ref SamplerDepthStencilMode::DepthComponent.
+ * texturing. If @gl_extension{ARB,direct_state_access} (part of OpenGL
+ * 4.5) is not available, the texture is bound before the operation (if
+ * not already). Initial value is
+ * @ref SamplerDepthStencilMode::DepthComponent.
* @note Depth textures can be only 1D or 2D.
* @see @fn_gl2_keyword{TextureParameter,TexParameter},
- * @fn_gl_extension_keyword{TextureParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexParameter} with @def_gl_keyword{DEPTH_STENCIL_TEXTURE_MODE}
* @requires_gl43 Extension @gl_extension{ARB,stencil_texturing}
@@ -732,9 +703,8 @@ template class Texture: public AbstractTexture {
* After calling this function the texture is immutable and calling
* @ref setStorage() or @ref setImage() is not allowed.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already). If neither @gl_extension{ARB,texture_storage} (part of OpenGL
* 4.2), OpenGL ES 3.0 nor @gl_extension{EXT,texture_storage} in OpenGL
* ES 2.0 is available, the feature is emulated with sequence of
@@ -743,9 +713,6 @@ template class Texture: public AbstractTexture {
* @fn_gl2_keyword{TextureStorage1D,TexStorage1D} /
* @fn_gl2_keyword{TextureStorage2D,TexStorage2D} /
* @fn_gl2_keyword{TextureStorage3D,TexStorage3D},
- * @fn_gl_extension_keyword{TextureStorage1D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{TextureStorage2D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{TextureStorage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexStorage1D} / @fn_gl_keyword{TexStorage2D} /
* @fn_gl_keyword{TexStorage3D}
@@ -761,12 +728,10 @@ template class Texture: public AbstractTexture {
/**
* @brief Image size in given mip level
*
- * The result is not cached in any way. If neither
- * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) nor
- * @gl_extension{EXT,direct_state_access} desktop extension is available,
- * the texture is bound before the operation (if not already).
+ * The result is not cached in any way. If
+ * @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is not
+ * available, the texture is bound before the operation (if not already).
* @see @ref image(), @fn_gl2_keyword{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{GetTexLevelParameter} with
* @def_gl_keyword{TEXTURE_WIDTH}, @def_gl_keyword{TEXTURE_HEIGHT},
@@ -792,22 +757,17 @@ template class Texture: public AbstractTexture {
* @ref imageSize(). The storage is not reallocated if it is large
* enough to contain the new data.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} is available, the texture is
- * bound before the operation (if not already). If either
- * @gl_extension{ARB,direct_state_access} or @gl_extension{ARB,robustness}
- * is available, the operation is protected from buffer overflow.
- * However, if @gl_extension{ARB,direct_state_access} is not available and
- * both @gl_extension{EXT,direct_state_access} and @gl_extension{ARB,robustness}
- * are available, the robust operation is preferred over DSA.
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
+ * already). If either @gl_extension{ARB,direct_state_access} or
+ * @gl_extension{ARB,robustness} is available, the operation is
+ * protected from buffer overflow.
* @see @fn_gl2{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl{GetTexLevelParameter} with @def_gl{TEXTURE_WIDTH},
* @def_gl{TEXTURE_HEIGHT}, @def_gl{TEXTURE_DEPTH}, then
* @fn_gl{PixelStore}, then @fn_gl2_keyword{GetTextureImage,GetTexImage},
* @fn_gl_extension_keyword{GetnTexImage,ARB,robustness},
- * @fn_gl_extension_keyword{GetTextureImage,EXT,direct_state_access},
* eventually @fn_gl_keyword{GetTexImage}
* @requires_gl Texture image queries are not available in OpenGL ES or
* WebGL. See @ref Framebuffer::read() or @ref DebugTools::textureSubImage()
@@ -861,16 +821,12 @@ template class Texture: public AbstractTexture {
* size is taken using @ref imageSize(). The storage is not reallocated
* if it is large enough to contain the new data.
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} is available, the texture is
- * bound before the operation (if not already). If either
- * @gl_extension{ARB,direct_state_access} or @gl_extension{ARB,robustness}
- * is available, the operation is protected from buffer overflow.
- * However, if @gl_extension{ARB,direct_state_access} is not available and
- * both @gl_extension{EXT,direct_state_access} and @gl_extension{ARB,robustness}
- * are available, the robust operation is preferred over DSA.
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
+ * already). If either @gl_extension{ARB,direct_state_access} or
+ * @gl_extension{ARB,robustness} is available, the operation is
+ * protected from buffer overflow.
* @see @fn_gl2{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{GetTexLevelParameter} with
* @def_gl{TEXTURE_COMPRESSED_IMAGE_SIZE},
* @def_gl{TEXTURE_INTERNAL_FORMAT}, @def_gl{TEXTURE_WIDTH},
@@ -878,7 +834,6 @@ template class Texture: public AbstractTexture {
* @fn_gl{PixelStore}, then
* @fn_gl2_keyword{GetCompressedTextureImage,GetCompressedTexImage},
* @fn_gl_extension_keyword{GetnCompressedTexImage,ARB,robustness},
- * @fn_gl_extension_keyword{GetCompressedTextureImage,EXT,direct_state_access},
* eventually @fn_gl_keyword{GetCompressedTexImage}
* @requires_gl42 Extension @gl_extension{ARB,compressed_texture_pixel_storage}
* for non-default @ref CompressedPixelStorage
@@ -990,7 +945,6 @@ template class Texture: public AbstractTexture {
*
* Compression format and data size are taken from the texture.
* @see @fn_gl2{GetTextureLevelParameter,GetTexLevelParameter},
- * @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access},
* eventually @fn_gl{GetTexLevelParameter} with
* @def_gl{TEXTURE_INTERNAL_FORMAT}, then possibly
* @fn_gl{GetInternalformat} with @def_gl{TEXTURE_COMPRESSED_BLOCK_SIZE},
@@ -1125,8 +1079,8 @@ template class Texture: public AbstractTexture {
* On platforms that support it prefer to use @ref setStorage() and
* @ref setCompressedSubImage() instead, as it avoids unnecessary
* reallocations and has better performance characteristics. This call
- * also has no equivalent in @gl_extension{ARB,direct_state_access}, thus
- * the texture needs to be bound to some texture unit before the
+ * also has no equivalent in @gl_extension{ARB,direct_state_access},
+ * thus the texture needs to be bound to some texture unit before the
* operation.
* @see @ref maxSize(), @fn_gl{PixelStore}, then @fn_gl{ActiveTexture},
* @fn_gl{BindTexture} and @fn_gl_keyword{CompressedTexImage1D} /
@@ -1187,9 +1141,8 @@ template class Texture: public AbstractTexture {
* @ref Trade::ImageData of the same dimension count
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
*
* On OpenGL ES 2.0 and WebGL 1.0, if @ref PixelStorage::skip() is set,
@@ -1198,9 +1151,6 @@ template class Texture: public AbstractTexture {
* @fn_gl{PixelStore}, @fn_gl2_keyword{TextureSubImage1D,TexSubImage1D} /
* @fn_gl2_keyword{TextureSubImage2D,TexSubImage2D} /
* @fn_gl2_keyword{TextureSubImage3D,TexSubImage3D},
- * @fn_gl_extension_keyword{TextureSubImage1D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{TextureSubImage2D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{TextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexSubImage1D} / @fn_gl_keyword{TexSubImage2D} /
* @fn_gl_keyword{TexSubImage3D}
@@ -1253,17 +1203,13 @@ template class Texture: public AbstractTexture {
* or compressed @ref Trade::ImageData of the same dimension count
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref setStorage(), @fn_gl{PixelStore},
* @fn_gl2_keyword{CompressedTextureSubImage1D,CompressedTexSubImage1D} /
* @fn_gl2_keyword{CompressedTextureSubImage2D,CompressedTexSubImage2D} /
* @fn_gl2_keyword{CompressedTextureSubImage3D,CompressedTexSubImage3D},
- * @fn_gl_extension_keyword{CompressedTextureSubImage1D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{CompressedTextureSubImage2D,EXT,direct_state_access} /
- * @fn_gl_extension_keyword{CompressedTextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CompressedTexSubImage1D} /
* @fn_gl_keyword{CompressedTexSubImage2D} /
@@ -1313,12 +1259,10 @@ template class Texture: public AbstractTexture {
* @brief Generate mipmap
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref setMinificationFilter(), @fn_gl2_keyword{GenerateTextureMipmap,GenerateMipmap},
- * @fn_gl_extension_keyword{GenerateTextureMipmap,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{GenerateMipmap}
* @requires_gl30 Extension @gl_extension{ARB,framebuffer_object}
diff --git a/src/Magnum/GL/TextureArray.h b/src/Magnum/GL/TextureArray.h
index d46c2a47f..3092f8057 100644
--- a/src/Magnum/GL/TextureArray.h
+++ b/src/Magnum/GL/TextureArray.h
@@ -772,15 +772,12 @@ template class TextureArray: public AbstractTexture {
* @ref Trade::ImageData of the same dimension count
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref setStorage(), @fn_gl{PixelStore}, then
* @fn_gl2_keyword{TextureSubImage2D,TexSubImage2D}/
* @fn_gl2_keyword{TextureSubImage3D,TexSubImage3D},
- * @fn_gl_extension_keyword{TextureSubImage2D,EXT,direct_state_access}/
- * @fn_gl_extension_keyword{TextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{TexSubImage2D} / @fn_gl_keyword{TexSubImage3D}
*/
@@ -808,15 +805,12 @@ template class TextureArray: public AbstractTexture {
* or compressed @ref Trade::ImageData of the same dimension count
* @return Reference to self (for method chaining)
*
- * If neither @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5)
- * nor @gl_extension{EXT,direct_state_access} desktop extension is
- * available, the texture is bound before the operation (if not
+ * If @gl_extension{ARB,direct_state_access} (part of OpenGL 4.5) is
+ * not available, the texture is bound before the operation (if not
* already).
* @see @ref setStorage(), @fn_gl{PixelStore}, then
* @fn_gl2_keyword{CompressedTextureSubImage2D,CompressedTexSubImage2D}/
* @fn_gl2_keyword{CompressedTextureSubImage3D,CompressedTexSubImage3D},
- * @fn_gl_extension_keyword{CompressedTextureSubImage2D,EXT,direct_state_access}/
- * @fn_gl_extension_keyword{CompressedTextureSubImage3D,EXT,direct_state_access},
* eventually @fn_gl{ActiveTexture}, @fn_gl{BindTexture} and
* @fn_gl_keyword{CompressedTexSubImage2D} / @fn_gl_keyword{CompressedTexSubImage3D}
* @requires_gl42 Extension @gl_extension{ARB,compressed_texture_pixel_storage}
diff --git a/src/MagnumExternal/OpenGL/GL/extensions.txt b/src/MagnumExternal/OpenGL/GL/extensions.txt
index f0acbcdb5..c3475c5cd 100644
--- a/src/MagnumExternal/OpenGL/GL/extensions.txt
+++ b/src/MagnumExternal/OpenGL/GL/extensions.txt
@@ -21,7 +21,6 @@ extension ATI_texture_mirror_once optional
extension EXT_texture_filter_anisotropic optional
extension EXT_texture_compression_s3tc optional
extension EXT_texture_mirror_clamp optional
-extension EXT_direct_state_access optional
extension EXT_texture_sRGB_decode optional
extension EXT_shader_integer_mix optional
extension EXT_debug_label optional
diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.cpp b/src/MagnumExternal/OpenGL/GL/flextGL.cpp
index 44ba9a4b2..1833cc745 100644
--- a/src/MagnumExternal/OpenGL/GL/flextGL.cpp
+++ b/src/MagnumExternal/OpenGL/GL/flextGL.cpp
@@ -80,263 +80,6 @@ FLEXTGL_EXPORT void(APIENTRY *flextglInsertEventMarkerEXT)(GLsizei, const GLchar
FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void) = nullptr;
FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *) = nullptr;
-/* GL_EXT_direct_state_access */
-FLEXTGL_EXPORT void(APIENTRY *flextglBindMultiTextureEXT)(GLenum, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT GLenum(APIENTRY *flextglCheckNamedFramebufferStatusEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglClearNamedBufferDataEXT)(GLuint, GLenum, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglClearNamedBufferSubDataEXT)(GLuint, GLenum, GLsizeiptr, GLsizeiptr, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglClientAttribDefaultEXT)(GLbitfield) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage3DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage1DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage2DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage3DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureImage1DEXT)(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureImage2DEXT)(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglDisableClientStateIndexedEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglDisableClientStateiEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglDisableIndexedEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglDisableVertexArrayAttribEXT)(GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglDisableVertexArrayEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglEnableClientStateIndexedEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglEnableClientStateiEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglEnableIndexedEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglEnableVertexArrayAttribEXT)(GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglEnableVertexArrayEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglFlushMappedNamedBufferRangeEXT)(GLuint, GLintptr, GLsizeiptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferDrawBufferEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferDrawBuffersEXT)(GLuint, GLsizei, const GLenum *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferReadBufferEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGenerateMultiTexMipmapEXT)(GLenum, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGenerateTextureMipmapEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetBooleanIndexedvEXT)(GLenum, GLuint, GLboolean *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetCompressedMultiTexImageEXT)(GLenum, GLenum, GLint, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetCompressedTextureImageEXT)(GLuint, GLenum, GLint, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetDoubleIndexedvEXT)(GLenum, GLuint, GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetDoublei_vEXT)(GLenum, GLuint, GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetFloatIndexedvEXT)(GLenum, GLuint, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetFloati_vEXT)(GLenum, GLuint, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetFramebufferParameterivEXT)(GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetIntegerIndexedvEXT)(GLenum, GLuint, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexEnvfvEXT)(GLenum, GLenum, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexEnvivEXT)(GLenum, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGendvEXT)(GLenum, GLenum, GLenum, GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGenfvEXT)(GLenum, GLenum, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGenivEXT)(GLenum, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexImageEXT)(GLenum, GLenum, GLint, GLenum, GLenum, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexLevelParameterfvEXT)(GLenum, GLenum, GLint, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexLevelParameterivEXT)(GLenum, GLenum, GLint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterIivEXT)(GLenum, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterIuivEXT)(GLenum, GLenum, GLenum, GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterfvEXT)(GLenum, GLenum, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterivEXT)(GLenum, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferParameterivEXT)(GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferPointervEXT)(GLuint, GLenum, void **) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferSubDataEXT)(GLuint, GLintptr, GLsizeiptr, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedFramebufferAttachmentParameterivEXT)(GLuint, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedFramebufferParameterivEXT)(GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterIivEXT)(GLuint, GLenum, GLuint, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterIuivEXT)(GLuint, GLenum, GLuint, GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterdvEXT)(GLuint, GLenum, GLuint, GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterfvEXT)(GLuint, GLenum, GLuint, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramStringEXT)(GLuint, GLenum, GLenum, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramivEXT)(GLuint, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedRenderbufferParameterivEXT)(GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerIndexedvEXT)(GLenum, GLuint, void **) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetPointeri_vEXT)(GLenum, GLuint, void **) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureImageEXT)(GLuint, GLenum, GLint, GLenum, GLenum, void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureLevelParameterfvEXT)(GLuint, GLenum, GLint, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureLevelParameterivEXT)(GLuint, GLenum, GLint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterIivEXT)(GLuint, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterIuivEXT)(GLuint, GLenum, GLenum, GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterfvEXT)(GLuint, GLenum, GLenum, GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterivEXT)(GLuint, GLenum, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayIntegeri_vEXT)(GLuint, GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayIntegervEXT)(GLuint, GLenum, GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayPointeri_vEXT)(GLuint, GLuint, GLenum, void **) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayPointervEXT)(GLuint, GLenum, void **) = nullptr;
-FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnabledIndexedEXT)(GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void *(APIENTRY *flextglMapNamedBufferEXT)(GLuint, GLenum) = nullptr;
-FLEXTGL_EXPORT void *(APIENTRY *flextglMapNamedBufferRangeEXT)(GLuint, GLintptr, GLsizeiptr, GLbitfield) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixFrustumEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadIdentityEXT)(GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadTransposedEXT)(GLenum, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadTransposefEXT)(GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoaddEXT)(GLenum, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadfEXT)(GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultTransposedEXT)(GLenum, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultTransposefEXT)(GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultdEXT)(GLenum, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultfEXT)(GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixOrthoEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixPopEXT)(GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixPushEXT)(GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixRotatedEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixRotatefEXT)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixScaledEXT)(GLenum, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixScalefEXT)(GLenum, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixTranslatedEXT)(GLenum, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMatrixTranslatefEXT)(GLenum, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexBufferEXT)(GLenum, GLenum, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexCoordPointerEXT)(GLenum, GLint, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvfEXT)(GLenum, GLenum, GLenum, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvfvEXT)(GLenum, GLenum, GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnviEXT)(GLenum, GLenum, GLenum, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvivEXT)(GLenum, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGendEXT)(GLenum, GLenum, GLenum, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGendvEXT)(GLenum, GLenum, GLenum, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenfEXT)(GLenum, GLenum, GLenum, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenfvEXT)(GLenum, GLenum, GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGeniEXT)(GLenum, GLenum, GLenum, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenivEXT)(GLenum, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage3DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterIivEXT)(GLenum, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterIuivEXT)(GLenum, GLenum, GLenum, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterfEXT)(GLenum, GLenum, GLenum, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterfvEXT)(GLenum, GLenum, GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameteriEXT)(GLenum, GLenum, GLenum, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterivEXT)(GLenum, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexRenderbufferEXT)(GLenum, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferDataEXT)(GLuint, GLsizeiptr, const void *, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferStorageEXT)(GLuint, GLsizeiptr, const void *, GLbitfield) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferSubDataEXT)(GLuint, GLintptr, GLsizeiptr, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedCopyBufferSubDataEXT)(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferParameteriEXT)(GLuint, GLenum, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferRenderbufferEXT)(GLuint, GLenum, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture1DEXT)(GLuint, GLenum, GLenum, GLuint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture2DEXT)(GLuint, GLenum, GLenum, GLuint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture3DEXT)(GLuint, GLenum, GLenum, GLuint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureEXT)(GLuint, GLenum, GLuint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureFaceEXT)(GLuint, GLenum, GLuint, GLint, GLenum) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureLayerEXT)(GLuint, GLenum, GLuint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4dEXT)(GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4dvEXT)(GLuint, GLenum, GLuint, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4fEXT)(GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4fvEXT)(GLuint, GLenum, GLuint, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4iEXT)(GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4ivEXT)(GLuint, GLenum, GLuint, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4uiEXT)(GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4uivEXT)(GLuint, GLenum, GLuint, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameters4fvEXT)(GLuint, GLenum, GLuint, GLsizei, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParametersI4ivEXT)(GLuint, GLenum, GLuint, GLsizei, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParametersI4uivEXT)(GLuint, GLenum, GLuint, GLsizei, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramStringEXT)(GLuint, GLenum, GLenum, GLsizei, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageEXT)(GLuint, GLenum, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageMultisampleCoverageEXT)(GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1dEXT)(GLuint, GLint, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1dvEXT)(GLuint, GLint, GLsizei, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2dEXT)(GLuint, GLint, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2dvEXT)(GLuint, GLint, GLsizei, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3dEXT)(GLuint, GLint, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3dvEXT)(GLuint, GLint, GLsizei, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4dEXT)(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4dvEXT)(GLuint, GLint, GLsizei, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglPushClientAttribDefaultEXT)(GLbitfield) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureBufferEXT)(GLuint, GLenum, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureBufferRangeEXT)(GLuint, GLenum, GLenum, GLuint, GLintptr, GLsizeiptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage2DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage3DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTexturePageCommitmentEXT)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLboolean) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterIivEXT)(GLuint, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterIuivEXT)(GLuint, GLenum, GLenum, const GLuint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterfEXT)(GLuint, GLenum, GLenum, GLfloat) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterfvEXT)(GLuint, GLenum, GLenum, const GLfloat *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameteriEXT)(GLuint, GLenum, GLenum, GLint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterivEXT)(GLuint, GLenum, GLenum, const GLint *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureRenderbufferEXT)(GLuint, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage1DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DMultisampleEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DMultisampleEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *) = nullptr;
-FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapNamedBufferEXT)(GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayBindVertexBufferEXT)(GLuint, GLuint, GLuint, GLintptr, GLsizei) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayColorOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayEdgeFlagOffsetEXT)(GLuint, GLuint, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayFogCoordOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayIndexOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayMultiTexCoordOffsetEXT)(GLuint, GLuint, GLenum, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayNormalOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArraySecondaryColorOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayTexCoordOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribBindingEXT)(GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribDivisorEXT)(GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribFormatEXT)(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribIFormatEXT)(GLuint, GLuint, GLint, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribIOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribLFormatEXT)(GLuint, GLuint, GLint, GLenum, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribLOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLboolean, GLsizei, GLintptr) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexBindingDivisorEXT)(GLuint, GLuint, GLuint) = nullptr;
-FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr) = nullptr;
-
/* GL_GREMEDY_string_marker */
FLEXTGL_EXPORT void(APIENTRY *flextglStringMarkerGREMEDY)(GLsizei, const void *) = nullptr;
diff --git a/src/MagnumExternal/OpenGL/GL/flextGL.h b/src/MagnumExternal/OpenGL/GL/flextGL.h
index c23928c76..cdc1b6ae2 100644
--- a/src/MagnumExternal/OpenGL/GL/flextGL.h
+++ b/src/MagnumExternal/OpenGL/GL/flextGL.h
@@ -1647,12 +1647,6 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum
#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743
#define GL_MIRROR_CLAMP_TO_BORDER_EXT 0x8912
-/* GL_EXT_direct_state_access */
-
-#define GL_PROGRAM_MATRIX_EXT 0x8E2D
-#define GL_TRANSPOSE_PROGRAM_MATRIX_EXT 0x8E2E
-#define GL_PROGRAM_MATRIX_STACK_DEPTH_EXT 0x8E2F
-
/* GL_EXT_texture_sRGB_decode */
#define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48
@@ -1850,519 +1844,6 @@ GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPopGroupMarkerEXT)(void);
GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushGroupMarkerEXT)(GLsizei, const GLchar *);
#define glPushGroupMarkerEXT flextglPushGroupMarkerEXT
-/* GL_EXT_direct_state_access */
-
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglBindMultiTextureEXT)(GLenum, GLenum, GLuint);
-#define glBindMultiTextureEXT flextglBindMultiTextureEXT
-GLAPI FLEXTGL_EXPORT GLenum(APIENTRY *flextglCheckNamedFramebufferStatusEXT)(GLuint, GLenum);
-#define glCheckNamedFramebufferStatusEXT flextglCheckNamedFramebufferStatusEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglClearNamedBufferDataEXT)(GLuint, GLenum, GLenum, GLenum, const void *);
-#define glClearNamedBufferDataEXT flextglClearNamedBufferDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglClearNamedBufferSubDataEXT)(GLuint, GLenum, GLsizeiptr, GLsizeiptr, GLenum, GLenum, const void *);
-#define glClearNamedBufferSubDataEXT flextglClearNamedBufferSubDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglClientAttribDefaultEXT)(GLbitfield);
-#define glClientAttribDefaultEXT flextglClientAttribDefaultEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedMultiTexImage1DEXT flextglCompressedMultiTexImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedMultiTexImage2DEXT flextglCompressedMultiTexImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexImage3DEXT)(GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedMultiTexImage3DEXT flextglCompressedMultiTexImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedMultiTexSubImage1DEXT flextglCompressedMultiTexSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedMultiTexSubImage2DEXT flextglCompressedMultiTexSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedMultiTexSubImage3DEXT flextglCompressedMultiTexSubImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage1DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedTextureImage1DEXT flextglCompressedTextureImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage2DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedTextureImage2DEXT flextglCompressedTextureImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureImage3DEXT)(GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const void *);
-#define glCompressedTextureImage3DEXT flextglCompressedTextureImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedTextureSubImage1DEXT flextglCompressedTextureSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedTextureSubImage2DEXT flextglCompressedTextureSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCompressedTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const void *);
-#define glCompressedTextureSubImage3DEXT flextglCompressedTextureSubImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-#define glCopyMultiTexImage1DEXT flextglCopyMultiTexImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-#define glCopyMultiTexImage2DEXT flextglCopyMultiTexImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-#define glCopyMultiTexSubImage1DEXT flextglCopyMultiTexSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#define glCopyMultiTexSubImage2DEXT flextglCopyMultiTexSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#define glCopyMultiTexSubImage3DEXT flextglCopyMultiTexSubImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureImage1DEXT)(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-#define glCopyTextureImage1DEXT flextglCopyTextureImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureImage2DEXT)(GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-#define glCopyTextureImage2DEXT flextglCopyTextureImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-#define glCopyTextureSubImage1DEXT flextglCopyTextureSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#define glCopyTextureSubImage2DEXT flextglCopyTextureSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglCopyTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-#define glCopyTextureSubImage3DEXT flextglCopyTextureSubImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableClientStateIndexedEXT)(GLenum, GLuint);
-#define glDisableClientStateIndexedEXT flextglDisableClientStateIndexedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableClientStateiEXT)(GLenum, GLuint);
-#define glDisableClientStateiEXT flextglDisableClientStateiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableIndexedEXT)(GLenum, GLuint);
-#define glDisableIndexedEXT flextglDisableIndexedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableVertexArrayAttribEXT)(GLuint, GLuint);
-#define glDisableVertexArrayAttribEXT flextglDisableVertexArrayAttribEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglDisableVertexArrayEXT)(GLuint, GLenum);
-#define glDisableVertexArrayEXT flextglDisableVertexArrayEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableClientStateIndexedEXT)(GLenum, GLuint);
-#define glEnableClientStateIndexedEXT flextglEnableClientStateIndexedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableClientStateiEXT)(GLenum, GLuint);
-#define glEnableClientStateiEXT flextglEnableClientStateiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableIndexedEXT)(GLenum, GLuint);
-#define glEnableIndexedEXT flextglEnableIndexedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableVertexArrayAttribEXT)(GLuint, GLuint);
-#define glEnableVertexArrayAttribEXT flextglEnableVertexArrayAttribEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglEnableVertexArrayEXT)(GLuint, GLenum);
-#define glEnableVertexArrayEXT flextglEnableVertexArrayEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFlushMappedNamedBufferRangeEXT)(GLuint, GLintptr, GLsizeiptr);
-#define glFlushMappedNamedBufferRangeEXT flextglFlushMappedNamedBufferRangeEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferDrawBufferEXT)(GLuint, GLenum);
-#define glFramebufferDrawBufferEXT flextglFramebufferDrawBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferDrawBuffersEXT)(GLuint, GLsizei, const GLenum *);
-#define glFramebufferDrawBuffersEXT flextglFramebufferDrawBuffersEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglFramebufferReadBufferEXT)(GLuint, GLenum);
-#define glFramebufferReadBufferEXT flextglFramebufferReadBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenerateMultiTexMipmapEXT)(GLenum, GLenum);
-#define glGenerateMultiTexMipmapEXT flextglGenerateMultiTexMipmapEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGenerateTextureMipmapEXT)(GLuint, GLenum);
-#define glGenerateTextureMipmapEXT flextglGenerateTextureMipmapEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetBooleanIndexedvEXT)(GLenum, GLuint, GLboolean *);
-#define glGetBooleanIndexedvEXT flextglGetBooleanIndexedvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetCompressedMultiTexImageEXT)(GLenum, GLenum, GLint, void *);
-#define glGetCompressedMultiTexImageEXT flextglGetCompressedMultiTexImageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetCompressedTextureImageEXT)(GLuint, GLenum, GLint, void *);
-#define glGetCompressedTextureImageEXT flextglGetCompressedTextureImageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetDoubleIndexedvEXT)(GLenum, GLuint, GLdouble *);
-#define glGetDoubleIndexedvEXT flextglGetDoubleIndexedvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetDoublei_vEXT)(GLenum, GLuint, GLdouble *);
-#define glGetDoublei_vEXT flextglGetDoublei_vEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetFloatIndexedvEXT)(GLenum, GLuint, GLfloat *);
-#define glGetFloatIndexedvEXT flextglGetFloatIndexedvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetFloati_vEXT)(GLenum, GLuint, GLfloat *);
-#define glGetFloati_vEXT flextglGetFloati_vEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetFramebufferParameterivEXT)(GLuint, GLenum, GLint *);
-#define glGetFramebufferParameterivEXT flextglGetFramebufferParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetIntegerIndexedvEXT)(GLenum, GLuint, GLint *);
-#define glGetIntegerIndexedvEXT flextglGetIntegerIndexedvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexEnvfvEXT)(GLenum, GLenum, GLenum, GLfloat *);
-#define glGetMultiTexEnvfvEXT flextglGetMultiTexEnvfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexEnvivEXT)(GLenum, GLenum, GLenum, GLint *);
-#define glGetMultiTexEnvivEXT flextglGetMultiTexEnvivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGendvEXT)(GLenum, GLenum, GLenum, GLdouble *);
-#define glGetMultiTexGendvEXT flextglGetMultiTexGendvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGenfvEXT)(GLenum, GLenum, GLenum, GLfloat *);
-#define glGetMultiTexGenfvEXT flextglGetMultiTexGenfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexGenivEXT)(GLenum, GLenum, GLenum, GLint *);
-#define glGetMultiTexGenivEXT flextglGetMultiTexGenivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexImageEXT)(GLenum, GLenum, GLint, GLenum, GLenum, void *);
-#define glGetMultiTexImageEXT flextglGetMultiTexImageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexLevelParameterfvEXT)(GLenum, GLenum, GLint, GLenum, GLfloat *);
-#define glGetMultiTexLevelParameterfvEXT flextglGetMultiTexLevelParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexLevelParameterivEXT)(GLenum, GLenum, GLint, GLenum, GLint *);
-#define glGetMultiTexLevelParameterivEXT flextglGetMultiTexLevelParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterIivEXT)(GLenum, GLenum, GLenum, GLint *);
-#define glGetMultiTexParameterIivEXT flextglGetMultiTexParameterIivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterIuivEXT)(GLenum, GLenum, GLenum, GLuint *);
-#define glGetMultiTexParameterIuivEXT flextglGetMultiTexParameterIuivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterfvEXT)(GLenum, GLenum, GLenum, GLfloat *);
-#define glGetMultiTexParameterfvEXT flextglGetMultiTexParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetMultiTexParameterivEXT)(GLenum, GLenum, GLenum, GLint *);
-#define glGetMultiTexParameterivEXT flextglGetMultiTexParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferParameterivEXT)(GLuint, GLenum, GLint *);
-#define glGetNamedBufferParameterivEXT flextglGetNamedBufferParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferPointervEXT)(GLuint, GLenum, void **);
-#define glGetNamedBufferPointervEXT flextglGetNamedBufferPointervEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedBufferSubDataEXT)(GLuint, GLintptr, GLsizeiptr, void *);
-#define glGetNamedBufferSubDataEXT flextglGetNamedBufferSubDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedFramebufferAttachmentParameterivEXT)(GLuint, GLenum, GLenum, GLint *);
-#define glGetNamedFramebufferAttachmentParameterivEXT flextglGetNamedFramebufferAttachmentParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedFramebufferParameterivEXT)(GLuint, GLenum, GLint *);
-#define glGetNamedFramebufferParameterivEXT flextglGetNamedFramebufferParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterIivEXT)(GLuint, GLenum, GLuint, GLint *);
-#define glGetNamedProgramLocalParameterIivEXT flextglGetNamedProgramLocalParameterIivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterIuivEXT)(GLuint, GLenum, GLuint, GLuint *);
-#define glGetNamedProgramLocalParameterIuivEXT flextglGetNamedProgramLocalParameterIuivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterdvEXT)(GLuint, GLenum, GLuint, GLdouble *);
-#define glGetNamedProgramLocalParameterdvEXT flextglGetNamedProgramLocalParameterdvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramLocalParameterfvEXT)(GLuint, GLenum, GLuint, GLfloat *);
-#define glGetNamedProgramLocalParameterfvEXT flextglGetNamedProgramLocalParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramStringEXT)(GLuint, GLenum, GLenum, void *);
-#define glGetNamedProgramStringEXT flextglGetNamedProgramStringEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedProgramivEXT)(GLuint, GLenum, GLenum, GLint *);
-#define glGetNamedProgramivEXT flextglGetNamedProgramivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetNamedRenderbufferParameterivEXT)(GLuint, GLenum, GLint *);
-#define glGetNamedRenderbufferParameterivEXT flextglGetNamedRenderbufferParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointerIndexedvEXT)(GLenum, GLuint, void **);
-#define glGetPointerIndexedvEXT flextglGetPointerIndexedvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetPointeri_vEXT)(GLenum, GLuint, void **);
-#define glGetPointeri_vEXT flextglGetPointeri_vEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureImageEXT)(GLuint, GLenum, GLint, GLenum, GLenum, void *);
-#define glGetTextureImageEXT flextglGetTextureImageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureLevelParameterfvEXT)(GLuint, GLenum, GLint, GLenum, GLfloat *);
-#define glGetTextureLevelParameterfvEXT flextglGetTextureLevelParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureLevelParameterivEXT)(GLuint, GLenum, GLint, GLenum, GLint *);
-#define glGetTextureLevelParameterivEXT flextglGetTextureLevelParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterIivEXT)(GLuint, GLenum, GLenum, GLint *);
-#define glGetTextureParameterIivEXT flextglGetTextureParameterIivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterIuivEXT)(GLuint, GLenum, GLenum, GLuint *);
-#define glGetTextureParameterIuivEXT flextglGetTextureParameterIuivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterfvEXT)(GLuint, GLenum, GLenum, GLfloat *);
-#define glGetTextureParameterfvEXT flextglGetTextureParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetTextureParameterivEXT)(GLuint, GLenum, GLenum, GLint *);
-#define glGetTextureParameterivEXT flextglGetTextureParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayIntegeri_vEXT)(GLuint, GLuint, GLenum, GLint *);
-#define glGetVertexArrayIntegeri_vEXT flextglGetVertexArrayIntegeri_vEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayIntegervEXT)(GLuint, GLenum, GLint *);
-#define glGetVertexArrayIntegervEXT flextglGetVertexArrayIntegervEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayPointeri_vEXT)(GLuint, GLuint, GLenum, void **);
-#define glGetVertexArrayPointeri_vEXT flextglGetVertexArrayPointeri_vEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglGetVertexArrayPointervEXT)(GLuint, GLenum, void **);
-#define glGetVertexArrayPointervEXT flextglGetVertexArrayPointervEXT
-GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglIsEnabledIndexedEXT)(GLenum, GLuint);
-#define glIsEnabledIndexedEXT flextglIsEnabledIndexedEXT
-GLAPI FLEXTGL_EXPORT void *(APIENTRY *flextglMapNamedBufferEXT)(GLuint, GLenum);
-#define glMapNamedBufferEXT flextglMapNamedBufferEXT
-GLAPI FLEXTGL_EXPORT void *(APIENTRY *flextglMapNamedBufferRangeEXT)(GLuint, GLintptr, GLsizeiptr, GLbitfield);
-#define glMapNamedBufferRangeEXT flextglMapNamedBufferRangeEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixFrustumEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-#define glMatrixFrustumEXT flextglMatrixFrustumEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadIdentityEXT)(GLenum);
-#define glMatrixLoadIdentityEXT flextglMatrixLoadIdentityEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadTransposedEXT)(GLenum, const GLdouble *);
-#define glMatrixLoadTransposedEXT flextglMatrixLoadTransposedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadTransposefEXT)(GLenum, const GLfloat *);
-#define glMatrixLoadTransposefEXT flextglMatrixLoadTransposefEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoaddEXT)(GLenum, const GLdouble *);
-#define glMatrixLoaddEXT flextglMatrixLoaddEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixLoadfEXT)(GLenum, const GLfloat *);
-#define glMatrixLoadfEXT flextglMatrixLoadfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultTransposedEXT)(GLenum, const GLdouble *);
-#define glMatrixMultTransposedEXT flextglMatrixMultTransposedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultTransposefEXT)(GLenum, const GLfloat *);
-#define glMatrixMultTransposefEXT flextglMatrixMultTransposefEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultdEXT)(GLenum, const GLdouble *);
-#define glMatrixMultdEXT flextglMatrixMultdEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixMultfEXT)(GLenum, const GLfloat *);
-#define glMatrixMultfEXT flextglMatrixMultfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixOrthoEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-#define glMatrixOrthoEXT flextglMatrixOrthoEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixPopEXT)(GLenum);
-#define glMatrixPopEXT flextglMatrixPopEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixPushEXT)(GLenum);
-#define glMatrixPushEXT flextglMatrixPushEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixRotatedEXT)(GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-#define glMatrixRotatedEXT flextglMatrixRotatedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixRotatefEXT)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-#define glMatrixRotatefEXT flextglMatrixRotatefEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixScaledEXT)(GLenum, GLdouble, GLdouble, GLdouble);
-#define glMatrixScaledEXT flextglMatrixScaledEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixScalefEXT)(GLenum, GLfloat, GLfloat, GLfloat);
-#define glMatrixScalefEXT flextglMatrixScalefEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixTranslatedEXT)(GLenum, GLdouble, GLdouble, GLdouble);
-#define glMatrixTranslatedEXT flextglMatrixTranslatedEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMatrixTranslatefEXT)(GLenum, GLfloat, GLfloat, GLfloat);
-#define glMatrixTranslatefEXT flextglMatrixTranslatefEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexBufferEXT)(GLenum, GLenum, GLenum, GLuint);
-#define glMultiTexBufferEXT flextglMultiTexBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexCoordPointerEXT)(GLenum, GLint, GLenum, GLsizei, const void *);
-#define glMultiTexCoordPointerEXT flextglMultiTexCoordPointerEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvfEXT)(GLenum, GLenum, GLenum, GLfloat);
-#define glMultiTexEnvfEXT flextglMultiTexEnvfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvfvEXT)(GLenum, GLenum, GLenum, const GLfloat *);
-#define glMultiTexEnvfvEXT flextglMultiTexEnvfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnviEXT)(GLenum, GLenum, GLenum, GLint);
-#define glMultiTexEnviEXT flextglMultiTexEnviEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexEnvivEXT)(GLenum, GLenum, GLenum, const GLint *);
-#define glMultiTexEnvivEXT flextglMultiTexEnvivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGendEXT)(GLenum, GLenum, GLenum, GLdouble);
-#define glMultiTexGendEXT flextglMultiTexGendEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGendvEXT)(GLenum, GLenum, GLenum, const GLdouble *);
-#define glMultiTexGendvEXT flextglMultiTexGendvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenfEXT)(GLenum, GLenum, GLenum, GLfloat);
-#define glMultiTexGenfEXT flextglMultiTexGenfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenfvEXT)(GLenum, GLenum, GLenum, const GLfloat *);
-#define glMultiTexGenfvEXT flextglMultiTexGenfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGeniEXT)(GLenum, GLenum, GLenum, GLint);
-#define glMultiTexGeniEXT flextglMultiTexGeniEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexGenivEXT)(GLenum, GLenum, GLenum, const GLint *);
-#define glMultiTexGenivEXT flextglMultiTexGenivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glMultiTexImage1DEXT flextglMultiTexImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage2DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glMultiTexImage2DEXT flextglMultiTexImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexImage3DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glMultiTexImage3DEXT flextglMultiTexImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterIivEXT)(GLenum, GLenum, GLenum, const GLint *);
-#define glMultiTexParameterIivEXT flextglMultiTexParameterIivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterIuivEXT)(GLenum, GLenum, GLenum, const GLuint *);
-#define glMultiTexParameterIuivEXT flextglMultiTexParameterIuivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterfEXT)(GLenum, GLenum, GLenum, GLfloat);
-#define glMultiTexParameterfEXT flextglMultiTexParameterfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterfvEXT)(GLenum, GLenum, GLenum, const GLfloat *);
-#define glMultiTexParameterfvEXT flextglMultiTexParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameteriEXT)(GLenum, GLenum, GLenum, GLint);
-#define glMultiTexParameteriEXT flextglMultiTexParameteriEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexParameterivEXT)(GLenum, GLenum, GLenum, const GLint *);
-#define glMultiTexParameterivEXT flextglMultiTexParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexRenderbufferEXT)(GLenum, GLenum, GLuint);
-#define glMultiTexRenderbufferEXT flextglMultiTexRenderbufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage1DEXT)(GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *);
-#define glMultiTexSubImage1DEXT flextglMultiTexSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage2DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *);
-#define glMultiTexSubImage2DEXT flextglMultiTexSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglMultiTexSubImage3DEXT)(GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *);
-#define glMultiTexSubImage3DEXT flextglMultiTexSubImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferDataEXT)(GLuint, GLsizeiptr, const void *, GLenum);
-#define glNamedBufferDataEXT flextglNamedBufferDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferStorageEXT)(GLuint, GLsizeiptr, const void *, GLbitfield);
-#define glNamedBufferStorageEXT flextglNamedBufferStorageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedBufferSubDataEXT)(GLuint, GLintptr, GLsizeiptr, const void *);
-#define glNamedBufferSubDataEXT flextglNamedBufferSubDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedCopyBufferSubDataEXT)(GLuint, GLuint, GLintptr, GLintptr, GLsizeiptr);
-#define glNamedCopyBufferSubDataEXT flextglNamedCopyBufferSubDataEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferParameteriEXT)(GLuint, GLenum, GLint);
-#define glNamedFramebufferParameteriEXT flextglNamedFramebufferParameteriEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferRenderbufferEXT)(GLuint, GLenum, GLenum, GLuint);
-#define glNamedFramebufferRenderbufferEXT flextglNamedFramebufferRenderbufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture1DEXT)(GLuint, GLenum, GLenum, GLuint, GLint);
-#define glNamedFramebufferTexture1DEXT flextglNamedFramebufferTexture1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture2DEXT)(GLuint, GLenum, GLenum, GLuint, GLint);
-#define glNamedFramebufferTexture2DEXT flextglNamedFramebufferTexture2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTexture3DEXT)(GLuint, GLenum, GLenum, GLuint, GLint, GLint);
-#define glNamedFramebufferTexture3DEXT flextglNamedFramebufferTexture3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureEXT)(GLuint, GLenum, GLuint, GLint);
-#define glNamedFramebufferTextureEXT flextglNamedFramebufferTextureEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureFaceEXT)(GLuint, GLenum, GLuint, GLint, GLenum);
-#define glNamedFramebufferTextureFaceEXT flextglNamedFramebufferTextureFaceEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedFramebufferTextureLayerEXT)(GLuint, GLenum, GLuint, GLint, GLint);
-#define glNamedFramebufferTextureLayerEXT flextglNamedFramebufferTextureLayerEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4dEXT)(GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-#define glNamedProgramLocalParameter4dEXT flextglNamedProgramLocalParameter4dEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4dvEXT)(GLuint, GLenum, GLuint, const GLdouble *);
-#define glNamedProgramLocalParameter4dvEXT flextglNamedProgramLocalParameter4dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4fEXT)(GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-#define glNamedProgramLocalParameter4fEXT flextglNamedProgramLocalParameter4fEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameter4fvEXT)(GLuint, GLenum, GLuint, const GLfloat *);
-#define glNamedProgramLocalParameter4fvEXT flextglNamedProgramLocalParameter4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4iEXT)(GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint);
-#define glNamedProgramLocalParameterI4iEXT flextglNamedProgramLocalParameterI4iEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4ivEXT)(GLuint, GLenum, GLuint, const GLint *);
-#define glNamedProgramLocalParameterI4ivEXT flextglNamedProgramLocalParameterI4ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4uiEXT)(GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-#define glNamedProgramLocalParameterI4uiEXT flextglNamedProgramLocalParameterI4uiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameterI4uivEXT)(GLuint, GLenum, GLuint, const GLuint *);
-#define glNamedProgramLocalParameterI4uivEXT flextglNamedProgramLocalParameterI4uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParameters4fvEXT)(GLuint, GLenum, GLuint, GLsizei, const GLfloat *);
-#define glNamedProgramLocalParameters4fvEXT flextglNamedProgramLocalParameters4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParametersI4ivEXT)(GLuint, GLenum, GLuint, GLsizei, const GLint *);
-#define glNamedProgramLocalParametersI4ivEXT flextglNamedProgramLocalParametersI4ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramLocalParametersI4uivEXT)(GLuint, GLenum, GLuint, GLsizei, const GLuint *);
-#define glNamedProgramLocalParametersI4uivEXT flextglNamedProgramLocalParametersI4uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedProgramStringEXT)(GLuint, GLenum, GLenum, GLsizei, const void *);
-#define glNamedProgramStringEXT flextglNamedProgramStringEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageEXT)(GLuint, GLenum, GLsizei, GLsizei);
-#define glNamedRenderbufferStorageEXT flextglNamedRenderbufferStorageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageMultisampleCoverageEXT)(GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
-#define glNamedRenderbufferStorageMultisampleCoverageEXT flextglNamedRenderbufferStorageMultisampleCoverageEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglNamedRenderbufferStorageMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei);
-#define glNamedRenderbufferStorageMultisampleEXT flextglNamedRenderbufferStorageMultisampleEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1dEXT)(GLuint, GLint, GLdouble);
-#define glProgramUniform1dEXT flextglProgramUniform1dEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1dvEXT)(GLuint, GLint, GLsizei, const GLdouble *);
-#define glProgramUniform1dvEXT flextglProgramUniform1dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fEXT)(GLuint, GLint, GLfloat);
-#define glProgramUniform1fEXT flextglProgramUniform1fEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1fvEXT)(GLuint, GLint, GLsizei, const GLfloat *);
-#define glProgramUniform1fvEXT flextglProgramUniform1fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1iEXT)(GLuint, GLint, GLint);
-#define glProgramUniform1iEXT flextglProgramUniform1iEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1ivEXT)(GLuint, GLint, GLsizei, const GLint *);
-#define glProgramUniform1ivEXT flextglProgramUniform1ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uiEXT)(GLuint, GLint, GLuint);
-#define glProgramUniform1uiEXT flextglProgramUniform1uiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform1uivEXT)(GLuint, GLint, GLsizei, const GLuint *);
-#define glProgramUniform1uivEXT flextglProgramUniform1uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2dEXT)(GLuint, GLint, GLdouble, GLdouble);
-#define glProgramUniform2dEXT flextglProgramUniform2dEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2dvEXT)(GLuint, GLint, GLsizei, const GLdouble *);
-#define glProgramUniform2dvEXT flextglProgramUniform2dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fEXT)(GLuint, GLint, GLfloat, GLfloat);
-#define glProgramUniform2fEXT flextglProgramUniform2fEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2fvEXT)(GLuint, GLint, GLsizei, const GLfloat *);
-#define glProgramUniform2fvEXT flextglProgramUniform2fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2iEXT)(GLuint, GLint, GLint, GLint);
-#define glProgramUniform2iEXT flextglProgramUniform2iEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2ivEXT)(GLuint, GLint, GLsizei, const GLint *);
-#define glProgramUniform2ivEXT flextglProgramUniform2ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uiEXT)(GLuint, GLint, GLuint, GLuint);
-#define glProgramUniform2uiEXT flextglProgramUniform2uiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform2uivEXT)(GLuint, GLint, GLsizei, const GLuint *);
-#define glProgramUniform2uivEXT flextglProgramUniform2uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3dEXT)(GLuint, GLint, GLdouble, GLdouble, GLdouble);
-#define glProgramUniform3dEXT flextglProgramUniform3dEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3dvEXT)(GLuint, GLint, GLsizei, const GLdouble *);
-#define glProgramUniform3dvEXT flextglProgramUniform3dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat);
-#define glProgramUniform3fEXT flextglProgramUniform3fEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3fvEXT)(GLuint, GLint, GLsizei, const GLfloat *);
-#define glProgramUniform3fvEXT flextglProgramUniform3fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3iEXT)(GLuint, GLint, GLint, GLint, GLint);
-#define glProgramUniform3iEXT flextglProgramUniform3iEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3ivEXT)(GLuint, GLint, GLsizei, const GLint *);
-#define glProgramUniform3ivEXT flextglProgramUniform3ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint);
-#define glProgramUniform3uiEXT flextglProgramUniform3uiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform3uivEXT)(GLuint, GLint, GLsizei, const GLuint *);
-#define glProgramUniform3uivEXT flextglProgramUniform3uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4dEXT)(GLuint, GLint, GLdouble, GLdouble, GLdouble, GLdouble);
-#define glProgramUniform4dEXT flextglProgramUniform4dEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4dvEXT)(GLuint, GLint, GLsizei, const GLdouble *);
-#define glProgramUniform4dvEXT flextglProgramUniform4dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fEXT)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-#define glProgramUniform4fEXT flextglProgramUniform4fEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4fvEXT)(GLuint, GLint, GLsizei, const GLfloat *);
-#define glProgramUniform4fvEXT flextglProgramUniform4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4iEXT)(GLuint, GLint, GLint, GLint, GLint, GLint);
-#define glProgramUniform4iEXT flextglProgramUniform4iEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4ivEXT)(GLuint, GLint, GLsizei, const GLint *);
-#define glProgramUniform4ivEXT flextglProgramUniform4ivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uiEXT)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
-#define glProgramUniform4uiEXT flextglProgramUniform4uiEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniform4uivEXT)(GLuint, GLint, GLsizei, const GLuint *);
-#define glProgramUniform4uivEXT flextglProgramUniform4uivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix2dvEXT flextglProgramUniformMatrix2dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix2fvEXT flextglProgramUniformMatrix2fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix2x3dvEXT flextglProgramUniformMatrix2x3dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix2x3fvEXT flextglProgramUniformMatrix2x3fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix2x4dvEXT flextglProgramUniformMatrix2x4dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix2x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix2x4fvEXT flextglProgramUniformMatrix2x4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix3dvEXT flextglProgramUniformMatrix3dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix3fvEXT flextglProgramUniformMatrix3fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix3x2dvEXT flextglProgramUniformMatrix3x2dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix3x2fvEXT flextglProgramUniformMatrix3x2fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix3x4dvEXT flextglProgramUniformMatrix3x4dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix3x4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix3x4fvEXT flextglProgramUniformMatrix3x4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix4dvEXT flextglProgramUniformMatrix4dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix4fvEXT flextglProgramUniformMatrix4fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix4x2dvEXT flextglProgramUniformMatrix4x2dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x2fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix4x2fvEXT flextglProgramUniformMatrix4x2fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3dvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLdouble *);
-#define glProgramUniformMatrix4x3dvEXT flextglProgramUniformMatrix4x3dvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglProgramUniformMatrix4x3fvEXT)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-#define glProgramUniformMatrix4x3fvEXT flextglProgramUniformMatrix4x3fvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglPushClientAttribDefaultEXT)(GLbitfield);
-#define glPushClientAttribDefaultEXT flextglPushClientAttribDefaultEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureBufferEXT)(GLuint, GLenum, GLenum, GLuint);
-#define glTextureBufferEXT flextglTextureBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureBufferRangeEXT)(GLuint, GLenum, GLenum, GLuint, GLintptr, GLsizeiptr);
-#define glTextureBufferRangeEXT flextglTextureBufferRangeEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glTextureImage1DEXT flextglTextureImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage2DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glTextureImage2DEXT flextglTextureImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureImage3DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const void *);
-#define glTextureImage3DEXT flextglTextureImage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTexturePageCommitmentEXT)(GLuint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLboolean);
-#define glTexturePageCommitmentEXT flextglTexturePageCommitmentEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterIivEXT)(GLuint, GLenum, GLenum, const GLint *);
-#define glTextureParameterIivEXT flextglTextureParameterIivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterIuivEXT)(GLuint, GLenum, GLenum, const GLuint *);
-#define glTextureParameterIuivEXT flextglTextureParameterIuivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterfEXT)(GLuint, GLenum, GLenum, GLfloat);
-#define glTextureParameterfEXT flextglTextureParameterfEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterfvEXT)(GLuint, GLenum, GLenum, const GLfloat *);
-#define glTextureParameterfvEXT flextglTextureParameterfvEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameteriEXT)(GLuint, GLenum, GLenum, GLint);
-#define glTextureParameteriEXT flextglTextureParameteriEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureParameterivEXT)(GLuint, GLenum, GLenum, const GLint *);
-#define glTextureParameterivEXT flextglTextureParameterivEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureRenderbufferEXT)(GLuint, GLenum, GLuint);
-#define glTextureRenderbufferEXT flextglTextureRenderbufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage1DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei);
-#define glTextureStorage1DEXT flextglTextureStorage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-#define glTextureStorage2DEXT flextglTextureStorage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage2DMultisampleEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean);
-#define glTextureStorage2DMultisampleEXT flextglTextureStorage2DMultisampleEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei);
-#define glTextureStorage3DEXT flextglTextureStorage3DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureStorage3DMultisampleEXT)(GLuint, GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean);
-#define glTextureStorage3DMultisampleEXT flextglTextureStorage3DMultisampleEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage1DEXT)(GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const void *);
-#define glTextureSubImage1DEXT flextglTextureSubImage1DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage2DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const void *);
-#define glTextureSubImage2DEXT flextglTextureSubImage2DEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglTextureSubImage3DEXT)(GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const void *);
-#define glTextureSubImage3DEXT flextglTextureSubImage3DEXT
-GLAPI FLEXTGL_EXPORT GLboolean(APIENTRY *flextglUnmapNamedBufferEXT)(GLuint);
-#define glUnmapNamedBufferEXT flextglUnmapNamedBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayBindVertexBufferEXT)(GLuint, GLuint, GLuint, GLintptr, GLsizei);
-#define glVertexArrayBindVertexBufferEXT flextglVertexArrayBindVertexBufferEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayColorOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayColorOffsetEXT flextglVertexArrayColorOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayEdgeFlagOffsetEXT)(GLuint, GLuint, GLsizei, GLintptr);
-#define glVertexArrayEdgeFlagOffsetEXT flextglVertexArrayEdgeFlagOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayFogCoordOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayFogCoordOffsetEXT flextglVertexArrayFogCoordOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayIndexOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayIndexOffsetEXT flextglVertexArrayIndexOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayMultiTexCoordOffsetEXT)(GLuint, GLuint, GLenum, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayMultiTexCoordOffsetEXT flextglVertexArrayMultiTexCoordOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayNormalOffsetEXT)(GLuint, GLuint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayNormalOffsetEXT flextglVertexArrayNormalOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArraySecondaryColorOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArraySecondaryColorOffsetEXT flextglVertexArraySecondaryColorOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayTexCoordOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayTexCoordOffsetEXT flextglVertexArrayTexCoordOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribBindingEXT)(GLuint, GLuint, GLuint);
-#define glVertexArrayVertexAttribBindingEXT flextglVertexArrayVertexAttribBindingEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribDivisorEXT)(GLuint, GLuint, GLuint);
-#define glVertexArrayVertexAttribDivisorEXT flextglVertexArrayVertexAttribDivisorEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribFormatEXT)(GLuint, GLuint, GLint, GLenum, GLboolean, GLuint);
-#define glVertexArrayVertexAttribFormatEXT flextglVertexArrayVertexAttribFormatEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribIFormatEXT)(GLuint, GLuint, GLint, GLenum, GLuint);
-#define glVertexArrayVertexAttribIFormatEXT flextglVertexArrayVertexAttribIFormatEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribIOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayVertexAttribIOffsetEXT flextglVertexArrayVertexAttribIOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribLFormatEXT)(GLuint, GLuint, GLint, GLenum, GLuint);
-#define glVertexArrayVertexAttribLFormatEXT flextglVertexArrayVertexAttribLFormatEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribLOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayVertexAttribLOffsetEXT flextglVertexArrayVertexAttribLOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexAttribOffsetEXT)(GLuint, GLuint, GLuint, GLint, GLenum, GLboolean, GLsizei, GLintptr);
-#define glVertexArrayVertexAttribOffsetEXT flextglVertexArrayVertexAttribOffsetEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexBindingDivisorEXT)(GLuint, GLuint, GLuint);
-#define glVertexArrayVertexBindingDivisorEXT flextglVertexArrayVertexBindingDivisorEXT
-GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglVertexArrayVertexOffsetEXT)(GLuint, GLuint, GLint, GLenum, GLsizei, GLintptr);
-#define glVertexArrayVertexOffsetEXT flextglVertexArrayVertexOffsetEXT
-
/* GL_GREMEDY_string_marker */
GLAPI FLEXTGL_EXPORT void(APIENTRY *flextglStringMarkerGREMEDY)(GLsizei, const void *);
diff --git a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp
index 209bc1241..8a2cfc0a8 100644
--- a/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp
+++ b/src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp
@@ -169,263 +169,6 @@ void flextGLInit(Magnum::GL::Context& context) {
flextglPopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT"));
flextglPushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT"));
- /* GL_EXT_direct_state_access */
- flextglBindMultiTextureEXT = reinterpret_cast(loader.load("glBindMultiTextureEXT"));
- flextglCheckNamedFramebufferStatusEXT = reinterpret_cast(loader.load("glCheckNamedFramebufferStatusEXT"));
- flextglClearNamedBufferDataEXT = reinterpret_cast(loader.load("glClearNamedBufferDataEXT"));
- flextglClearNamedBufferSubDataEXT = reinterpret_cast(loader.load("glClearNamedBufferSubDataEXT"));
- flextglClientAttribDefaultEXT = reinterpret_cast(loader.load("glClientAttribDefaultEXT"));
- flextglCompressedMultiTexImage1DEXT = reinterpret_cast(loader.load("glCompressedMultiTexImage1DEXT"));
- flextglCompressedMultiTexImage2DEXT = reinterpret_cast(loader.load("glCompressedMultiTexImage2DEXT"));
- flextglCompressedMultiTexImage3DEXT = reinterpret_cast(loader.load("glCompressedMultiTexImage3DEXT"));
- flextglCompressedMultiTexSubImage1DEXT = reinterpret_cast(loader.load("glCompressedMultiTexSubImage1DEXT"));
- flextglCompressedMultiTexSubImage2DEXT = reinterpret_cast(loader.load("glCompressedMultiTexSubImage2DEXT"));
- flextglCompressedMultiTexSubImage3DEXT = reinterpret_cast(loader.load("glCompressedMultiTexSubImage3DEXT"));
- flextglCompressedTextureImage1DEXT = reinterpret_cast(loader.load("glCompressedTextureImage1DEXT"));
- flextglCompressedTextureImage2DEXT = reinterpret_cast(loader.load("glCompressedTextureImage2DEXT"));
- flextglCompressedTextureImage3DEXT = reinterpret_cast(loader.load("glCompressedTextureImage3DEXT"));
- flextglCompressedTextureSubImage1DEXT = reinterpret_cast(loader.load("glCompressedTextureSubImage1DEXT"));
- flextglCompressedTextureSubImage2DEXT = reinterpret_cast(loader.load("glCompressedTextureSubImage2DEXT"));
- flextglCompressedTextureSubImage3DEXT = reinterpret_cast(loader.load("glCompressedTextureSubImage3DEXT"));
- flextglCopyMultiTexImage1DEXT = reinterpret_cast(loader.load("glCopyMultiTexImage1DEXT"));
- flextglCopyMultiTexImage2DEXT = reinterpret_cast(loader.load("glCopyMultiTexImage2DEXT"));
- flextglCopyMultiTexSubImage1DEXT = reinterpret_cast(loader.load("glCopyMultiTexSubImage1DEXT"));
- flextglCopyMultiTexSubImage2DEXT = reinterpret_cast(loader.load("glCopyMultiTexSubImage2DEXT"));
- flextglCopyMultiTexSubImage3DEXT = reinterpret_cast(loader.load("glCopyMultiTexSubImage3DEXT"));
- flextglCopyTextureImage1DEXT = reinterpret_cast(loader.load("glCopyTextureImage1DEXT"));
- flextglCopyTextureImage2DEXT = reinterpret_cast(loader.load("glCopyTextureImage2DEXT"));
- flextglCopyTextureSubImage1DEXT = reinterpret_cast(loader.load("glCopyTextureSubImage1DEXT"));
- flextglCopyTextureSubImage2DEXT = reinterpret_cast(loader.load("glCopyTextureSubImage2DEXT"));
- flextglCopyTextureSubImage3DEXT = reinterpret_cast(loader.load("glCopyTextureSubImage3DEXT"));
- flextglDisableClientStateIndexedEXT = reinterpret_cast(loader.load("glDisableClientStateIndexedEXT"));
- flextglDisableClientStateiEXT = reinterpret_cast(loader.load("glDisableClientStateiEXT"));
- flextglDisableIndexedEXT = reinterpret_cast(loader.load("glDisableIndexedEXT"));
- flextglDisableVertexArrayAttribEXT = reinterpret_cast(loader.load("glDisableVertexArrayAttribEXT"));
- flextglDisableVertexArrayEXT = reinterpret_cast(loader.load("glDisableVertexArrayEXT"));
- flextglEnableClientStateIndexedEXT = reinterpret_cast(loader.load("glEnableClientStateIndexedEXT"));
- flextglEnableClientStateiEXT = reinterpret_cast(loader.load("glEnableClientStateiEXT"));
- flextglEnableIndexedEXT = reinterpret_cast(loader.load("glEnableIndexedEXT"));
- flextglEnableVertexArrayAttribEXT = reinterpret_cast(loader.load("glEnableVertexArrayAttribEXT"));
- flextglEnableVertexArrayEXT = reinterpret_cast(loader.load("glEnableVertexArrayEXT"));
- flextglFlushMappedNamedBufferRangeEXT = reinterpret_cast(loader.load("glFlushMappedNamedBufferRangeEXT"));
- flextglFramebufferDrawBufferEXT = reinterpret_cast(loader.load("glFramebufferDrawBufferEXT"));
- flextglFramebufferDrawBuffersEXT = reinterpret_cast(loader.load("glFramebufferDrawBuffersEXT"));
- flextglFramebufferReadBufferEXT = reinterpret_cast(loader.load("glFramebufferReadBufferEXT"));
- flextglGenerateMultiTexMipmapEXT = reinterpret_cast(loader.load("glGenerateMultiTexMipmapEXT"));
- flextglGenerateTextureMipmapEXT = reinterpret_cast(loader.load("glGenerateTextureMipmapEXT"));
- flextglGetBooleanIndexedvEXT = reinterpret_cast(loader.load("glGetBooleanIndexedvEXT"));
- flextglGetCompressedMultiTexImageEXT = reinterpret_cast(loader.load("glGetCompressedMultiTexImageEXT"));
- flextglGetCompressedTextureImageEXT = reinterpret_cast(loader.load("glGetCompressedTextureImageEXT"));
- flextglGetDoubleIndexedvEXT = reinterpret_cast(loader.load("glGetDoubleIndexedvEXT"));
- flextglGetDoublei_vEXT = reinterpret_cast(loader.load("glGetDoublei_vEXT"));
- flextglGetFloatIndexedvEXT = reinterpret_cast(loader.load("glGetFloatIndexedvEXT"));
- flextglGetFloati_vEXT = reinterpret_cast(loader.load("glGetFloati_vEXT"));
- flextglGetFramebufferParameterivEXT = reinterpret_cast(loader.load("glGetFramebufferParameterivEXT"));
- flextglGetIntegerIndexedvEXT = reinterpret_cast(loader.load("glGetIntegerIndexedvEXT"));
- flextglGetMultiTexEnvfvEXT = reinterpret_cast(loader.load("glGetMultiTexEnvfvEXT"));
- flextglGetMultiTexEnvivEXT = reinterpret_cast(loader.load("glGetMultiTexEnvivEXT"));
- flextglGetMultiTexGendvEXT = reinterpret_cast(loader.load("glGetMultiTexGendvEXT"));
- flextglGetMultiTexGenfvEXT = reinterpret_cast(loader.load("glGetMultiTexGenfvEXT"));
- flextglGetMultiTexGenivEXT = reinterpret_cast(loader.load("glGetMultiTexGenivEXT"));
- flextglGetMultiTexImageEXT = reinterpret_cast(loader.load("glGetMultiTexImageEXT"));
- flextglGetMultiTexLevelParameterfvEXT = reinterpret_cast(loader.load("glGetMultiTexLevelParameterfvEXT"));
- flextglGetMultiTexLevelParameterivEXT = reinterpret_cast(loader.load("glGetMultiTexLevelParameterivEXT"));
- flextglGetMultiTexParameterIivEXT = reinterpret_cast(loader.load("glGetMultiTexParameterIivEXT"));
- flextglGetMultiTexParameterIuivEXT = reinterpret_cast(loader.load("glGetMultiTexParameterIuivEXT"));
- flextglGetMultiTexParameterfvEXT = reinterpret_cast(loader.load("glGetMultiTexParameterfvEXT"));
- flextglGetMultiTexParameterivEXT = reinterpret_cast(loader.load("glGetMultiTexParameterivEXT"));
- flextglGetNamedBufferParameterivEXT = reinterpret_cast(loader.load("glGetNamedBufferParameterivEXT"));
- flextglGetNamedBufferPointervEXT = reinterpret_cast(loader.load("glGetNamedBufferPointervEXT"));
- flextglGetNamedBufferSubDataEXT = reinterpret_cast(loader.load("glGetNamedBufferSubDataEXT"));
- flextglGetNamedFramebufferAttachmentParameterivEXT = reinterpret_cast(loader.load("glGetNamedFramebufferAttachmentParameterivEXT"));
- flextglGetNamedFramebufferParameterivEXT = reinterpret_cast(loader.load("glGetNamedFramebufferParameterivEXT"));
- flextglGetNamedProgramLocalParameterIivEXT = reinterpret_cast(loader.load("glGetNamedProgramLocalParameterIivEXT"));
- flextglGetNamedProgramLocalParameterIuivEXT = reinterpret_cast(loader.load("glGetNamedProgramLocalParameterIuivEXT"));
- flextglGetNamedProgramLocalParameterdvEXT = reinterpret_cast(loader.load("glGetNamedProgramLocalParameterdvEXT"));
- flextglGetNamedProgramLocalParameterfvEXT = reinterpret_cast(loader.load("glGetNamedProgramLocalParameterfvEXT"));
- flextglGetNamedProgramStringEXT = reinterpret_cast(loader.load("glGetNamedProgramStringEXT"));
- flextglGetNamedProgramivEXT = reinterpret_cast(loader.load("glGetNamedProgramivEXT"));
- flextglGetNamedRenderbufferParameterivEXT = reinterpret_cast(loader.load("glGetNamedRenderbufferParameterivEXT"));
- flextglGetPointerIndexedvEXT = reinterpret_cast(loader.load("glGetPointerIndexedvEXT"));
- flextglGetPointeri_vEXT = reinterpret_cast(loader.load("glGetPointeri_vEXT"));
- flextglGetTextureImageEXT = reinterpret_cast(loader.load("glGetTextureImageEXT"));
- flextglGetTextureLevelParameterfvEXT = reinterpret_cast(loader.load("glGetTextureLevelParameterfvEXT"));
- flextglGetTextureLevelParameterivEXT = reinterpret_cast(loader.load("glGetTextureLevelParameterivEXT"));
- flextglGetTextureParameterIivEXT = reinterpret_cast(loader.load("glGetTextureParameterIivEXT"));
- flextglGetTextureParameterIuivEXT = reinterpret_cast(loader.load("glGetTextureParameterIuivEXT"));
- flextglGetTextureParameterfvEXT = reinterpret_cast(loader.load("glGetTextureParameterfvEXT"));
- flextglGetTextureParameterivEXT = reinterpret_cast(loader.load("glGetTextureParameterivEXT"));
- flextglGetVertexArrayIntegeri_vEXT = reinterpret_cast(loader.load("glGetVertexArrayIntegeri_vEXT"));
- flextglGetVertexArrayIntegervEXT = reinterpret_cast(loader.load("glGetVertexArrayIntegervEXT"));
- flextglGetVertexArrayPointeri_vEXT = reinterpret_cast(loader.load("glGetVertexArrayPointeri_vEXT"));
- flextglGetVertexArrayPointervEXT = reinterpret_cast(loader.load("glGetVertexArrayPointervEXT"));
- flextglIsEnabledIndexedEXT = reinterpret_cast(loader.load("glIsEnabledIndexedEXT"));
- flextglMapNamedBufferEXT = reinterpret_cast(loader.load("glMapNamedBufferEXT"));
- flextglMapNamedBufferRangeEXT = reinterpret_cast(loader.load("glMapNamedBufferRangeEXT"));
- flextglMatrixFrustumEXT = reinterpret_cast(loader.load("glMatrixFrustumEXT"));
- flextglMatrixLoadIdentityEXT = reinterpret_cast(loader.load("glMatrixLoadIdentityEXT"));
- flextglMatrixLoadTransposedEXT = reinterpret_cast(loader.load("glMatrixLoadTransposedEXT"));
- flextglMatrixLoadTransposefEXT = reinterpret_cast(loader.load("glMatrixLoadTransposefEXT"));
- flextglMatrixLoaddEXT = reinterpret_cast(loader.load("glMatrixLoaddEXT"));
- flextglMatrixLoadfEXT = reinterpret_cast(loader.load("glMatrixLoadfEXT"));
- flextglMatrixMultTransposedEXT = reinterpret_cast(loader.load("glMatrixMultTransposedEXT"));
- flextglMatrixMultTransposefEXT = reinterpret_cast(loader.load("glMatrixMultTransposefEXT"));
- flextglMatrixMultdEXT = reinterpret_cast(loader.load("glMatrixMultdEXT"));
- flextglMatrixMultfEXT = reinterpret_cast(loader.load("glMatrixMultfEXT"));
- flextglMatrixOrthoEXT = reinterpret_cast(loader.load("glMatrixOrthoEXT"));
- flextglMatrixPopEXT = reinterpret_cast(loader.load("glMatrixPopEXT"));
- flextglMatrixPushEXT = reinterpret_cast(loader.load("glMatrixPushEXT"));
- flextglMatrixRotatedEXT = reinterpret_cast(loader.load("glMatrixRotatedEXT"));
- flextglMatrixRotatefEXT = reinterpret_cast(loader.load("glMatrixRotatefEXT"));
- flextglMatrixScaledEXT = reinterpret_cast(loader.load("glMatrixScaledEXT"));
- flextglMatrixScalefEXT = reinterpret_cast(loader.load("glMatrixScalefEXT"));
- flextglMatrixTranslatedEXT = reinterpret_cast(loader.load("glMatrixTranslatedEXT"));
- flextglMatrixTranslatefEXT = reinterpret_cast(loader.load("glMatrixTranslatefEXT"));
- flextglMultiTexBufferEXT = reinterpret_cast(loader.load("glMultiTexBufferEXT"));
- flextglMultiTexCoordPointerEXT = reinterpret_cast(loader.load("glMultiTexCoordPointerEXT"));
- flextglMultiTexEnvfEXT = reinterpret_cast(loader.load("glMultiTexEnvfEXT"));
- flextglMultiTexEnvfvEXT = reinterpret_cast(loader.load("glMultiTexEnvfvEXT"));
- flextglMultiTexEnviEXT = reinterpret_cast(loader.load("glMultiTexEnviEXT"));
- flextglMultiTexEnvivEXT = reinterpret_cast(loader.load("glMultiTexEnvivEXT"));
- flextglMultiTexGendEXT = reinterpret_cast(loader.load("glMultiTexGendEXT"));
- flextglMultiTexGendvEXT = reinterpret_cast(loader.load("glMultiTexGendvEXT"));
- flextglMultiTexGenfEXT = reinterpret_cast(loader.load("glMultiTexGenfEXT"));
- flextglMultiTexGenfvEXT = reinterpret_cast(loader.load("glMultiTexGenfvEXT"));
- flextglMultiTexGeniEXT = reinterpret_cast(loader.load("glMultiTexGeniEXT"));
- flextglMultiTexGenivEXT = reinterpret_cast(loader.load("glMultiTexGenivEXT"));
- flextglMultiTexImage1DEXT = reinterpret_cast(loader.load("glMultiTexImage1DEXT"));
- flextglMultiTexImage2DEXT = reinterpret_cast(loader.load("glMultiTexImage2DEXT"));
- flextglMultiTexImage3DEXT = reinterpret_cast(loader.load("glMultiTexImage3DEXT"));
- flextglMultiTexParameterIivEXT = reinterpret_cast(loader.load("glMultiTexParameterIivEXT"));
- flextglMultiTexParameterIuivEXT = reinterpret_cast(loader.load("glMultiTexParameterIuivEXT"));
- flextglMultiTexParameterfEXT = reinterpret_cast(loader.load("glMultiTexParameterfEXT"));
- flextglMultiTexParameterfvEXT = reinterpret_cast(loader.load("glMultiTexParameterfvEXT"));
- flextglMultiTexParameteriEXT = reinterpret_cast(loader.load("glMultiTexParameteriEXT"));
- flextglMultiTexParameterivEXT = reinterpret_cast(loader.load("glMultiTexParameterivEXT"));
- flextglMultiTexRenderbufferEXT = reinterpret_cast(loader.load("glMultiTexRenderbufferEXT"));
- flextglMultiTexSubImage1DEXT = reinterpret_cast(loader.load("glMultiTexSubImage1DEXT"));
- flextglMultiTexSubImage2DEXT = reinterpret_cast(loader.load("glMultiTexSubImage2DEXT"));
- flextglMultiTexSubImage3DEXT = reinterpret_cast(loader.load("glMultiTexSubImage3DEXT"));
- flextglNamedBufferDataEXT = reinterpret_cast(loader.load("glNamedBufferDataEXT"));
- flextglNamedBufferStorageEXT = reinterpret_cast(loader.load("glNamedBufferStorageEXT"));
- flextglNamedBufferSubDataEXT = reinterpret_cast(loader.load("glNamedBufferSubDataEXT"));
- flextglNamedCopyBufferSubDataEXT = reinterpret_cast(loader.load("glNamedCopyBufferSubDataEXT"));
- flextglNamedFramebufferParameteriEXT = reinterpret_cast(loader.load("glNamedFramebufferParameteriEXT"));
- flextglNamedFramebufferRenderbufferEXT = reinterpret_cast(loader.load("glNamedFramebufferRenderbufferEXT"));
- flextglNamedFramebufferTexture1DEXT = reinterpret_cast(loader.load("glNamedFramebufferTexture1DEXT"));
- flextglNamedFramebufferTexture2DEXT = reinterpret_cast(loader.load("glNamedFramebufferTexture2DEXT"));
- flextglNamedFramebufferTexture3DEXT = reinterpret_cast(loader.load("glNamedFramebufferTexture3DEXT"));
- flextglNamedFramebufferTextureEXT = reinterpret_cast(loader.load("glNamedFramebufferTextureEXT"));
- flextglNamedFramebufferTextureFaceEXT = reinterpret_cast(loader.load("glNamedFramebufferTextureFaceEXT"));
- flextglNamedFramebufferTextureLayerEXT = reinterpret_cast(loader.load("glNamedFramebufferTextureLayerEXT"));
- flextglNamedProgramLocalParameter4dEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameter4dEXT"));
- flextglNamedProgramLocalParameter4dvEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameter4dvEXT"));
- flextglNamedProgramLocalParameter4fEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameter4fEXT"));
- flextglNamedProgramLocalParameter4fvEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameter4fvEXT"));
- flextglNamedProgramLocalParameterI4iEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameterI4iEXT"));
- flextglNamedProgramLocalParameterI4ivEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameterI4ivEXT"));
- flextglNamedProgramLocalParameterI4uiEXT = reinterpret_cast(loader.load("glNamedProgramLocalParameterI4uiEXT"));
- flextglNamedProgramLocalParameterI4uivEXT = reinterpret_cast