Browse Source

GL: recognize EXT_multi_draw_indirect and EXT_external_objects extensions.

next
Vladimír Vondruš 3 months ago
parent
commit
3b26301bc3
  1. 9
      doc/changelog.dox
  2. 25
      doc/opengl-mapping.dox
  3. 13
      doc/opengl-support.dox
  4. 31
      src/Magnum/GL/Context.cpp
  5. 104
      src/Magnum/GL/Extensions.h
  6. 6
      src/MagnumExternal/OpenGL/GL/extensions.txt
  7. 44
      src/MagnumExternal/OpenGL/GL/flextGL.cpp
  8. 160
      src/MagnumExternal/OpenGL/GL/flextGL.h
  9. 44
      src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp
  10. 7
      src/MagnumExternal/OpenGL/GLES3/extensions.txt
  11. 166
      src/MagnumExternal/OpenGL/GLES3/flextGL.h
  12. 46
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp
  13. 92
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp
  14. 46
      src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp
  15. 166
      src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h

9
doc/changelog.dox

@ -195,6 +195,15 @@ See also:
- @webgl_extension{WEBGL,multi_draw} - @webgl_extension{WEBGL,multi_draw}
- @webgl_extension{WEBGL,draw_instanced_base_vertex_base_instance} - @webgl_extension{WEBGL,draw_instanced_base_vertex_base_instance}
- @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance} - @webgl_extension{WEBGL,multi_draw_instanced_base_vertex_base_instance}
- Recognizing the @gl_extension{EXT,multi_draw_indirect} OpenGL ES extension
- Recognizing the @gl_extension2{EXT,memory_object,EXT_external_objects},
@gl_extension2{EXT,semaphore,EXT_external_objects},
@gl_extension2{EXT,memory_object_fd,EXT_external_objects_fd},
@gl_extension2{EXT,semaphore_fd,EXT_external_objects_fd},
@gl_extension2{EXT,memory_object_win32,EXT_external_objects_win32} and
@gl_extension2{EXT,semaphore_win32,EXT_external_objects_win32} OpenGL and
OpenGL ES extensions for interoperation with other GPU APIs (see
[mosra/magnum#688](https://github.com/mosra/magnum/issues/688))
- Recognizing @m_class{m-doc-external} [ANGLE_compressed_texture_etc](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_compressed_texture_etc.txt) - Recognizing @m_class{m-doc-external} [ANGLE_compressed_texture_etc](https://chromium.googlesource.com/angle/angle/+/master/extensions/ANGLE_compressed_texture_etc.txt)
OpenGL ES and @webgl_extension{WEBGL,compressed_texture_etc} WebGL OpenGL ES and @webgl_extension{WEBGL,compressed_texture_etc} WebGL
extensions, making ETC and EAC @ref GL::CompressedPixelFormat and extensions, making ETC and EAC @ref GL::CompressedPixelFormat and

25
doc/opengl-mapping.dox

@ -87,6 +87,7 @@ OpenGL function | Matching API
@fn_gl{BufferData}, \n `glNamedBufferData()` | @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_extension{BufferPageCommitment,ARB,sparse_buffer}, \n `glNamedBufferPageCommitmentEXT()`, \n `glNamedBufferPageCommitmentARB()` | |
@fn_gl{BufferStorage}, \n `glNamedBufferStorage()` | @ref GL::Buffer::setStorage() @fn_gl{BufferStorage}, \n `glNamedBufferStorage()` | @ref GL::Buffer::setStorage()
@fn_gl_extension{BufferStorageMem,EXT,external_objects}, \n @fn_gl_extension{NamedBufferStorageMem,EXT,external_objects} | |
@fn_gl{BufferSubData}, \n `glNamedBufferSubData()` | @ref GL::Buffer::setSubData() @fn_gl{BufferSubData}, \n `glNamedBufferSubData()` | @ref GL::Buffer::setSubData()
@subsection opengl-mapping-functions-c C @subsection opengl-mapping-functions-c C
@ -116,6 +117,7 @@ OpenGL function | Matching API
@fn_gl{CopyImageSubData} | | @fn_gl{CopyImageSubData} | |
@fn_gl{CopyTexImage1D}, \n @fn_gl{CopyTexImage2D} | @ref GL::Framebuffer::copyImage() @fn_gl{CopyTexImage1D}, \n @fn_gl{CopyTexImage2D} | @ref GL::Framebuffer::copyImage()
@fn_gl{CopyTexSubImage1D}, \n `glCopyTextureSubImage1D()`, \n @fn_gl{CopyTexSubImage2D}, \n `glCopyTextureSubImage2D()`, \n @fn_gl{CopyTexSubImage3D}, \n `glCopyTextureSubImage3D()` | @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_extension{CreateMemoryObjects,EXT,external_objects}, \n @fn_gl_extension{DeleteMemoryObjects,EXT,external_objects} | |
@fn_gl{CreateProgram}, @fn_gl{DeleteProgram} | @ref GL::AbstractShaderProgram constructor and destructor @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{CreateShader}, @fn_gl{DeleteShader} | @ref GL::Shader constructor and destructor
@fn_gl{CreateShaderProgram} | | @fn_gl{CreateShaderProgram} | |
@ -183,6 +185,7 @@ OpenGL function | Matching API
@fn_gl{GenBuffers}, \n @fn_gl{CreateBuffers}, \n @fn_gl{DeleteBuffers} | @ref GL::Buffer constructor and destructor @fn_gl{GenBuffers}, \n @fn_gl{CreateBuffers}, \n @fn_gl{DeleteBuffers} | @ref GL::Buffer constructor and destructor
@fn_gl{GenFramebuffers}, \n @fn_gl{CreateFramebuffers}, \n @fn_gl{DeleteFramebuffers} | @ref GL::Framebuffer constructor and destructor @fn_gl{GenFramebuffers}, \n @fn_gl{CreateFramebuffers}, \n @fn_gl{DeleteFramebuffers} | @ref GL::Framebuffer constructor and destructor
@fn_gl{GenProgramPipelines}, \n @fn_gl{CreateProgramPipelines}, \n @fn_gl{DeleteProgramPipelines} | | @fn_gl{GenProgramPipelines}, \n @fn_gl{CreateProgramPipelines}, \n @fn_gl{DeleteProgramPipelines} | |
@fn_gl_extension{GenSemaphores,EXT,external_objects}, \n @fn_gl_extension{DeleteSemaphores,EXT,external_objects} | |
@fn_gl{GenQueries}, \n @fn_gl{CreateQueries}, \n @fn_gl{DeleteQueries} | @ref GL::AbstractQuery constructor and destructor @fn_gl{GenQueries}, \n @fn_gl{CreateQueries}, \n @fn_gl{DeleteQueries} | @ref GL::AbstractQuery constructor and destructor
@fn_gl{GenRenderbuffers}, \n @fn_gl{CreateRenderbuffers}, \n @fn_gl{DeleteRenderbuffers} | @ref GL::Renderbuffer constructor and destructor @fn_gl{GenRenderbuffers}, \n @fn_gl{CreateRenderbuffers}, \n @fn_gl{DeleteRenderbuffers} | @ref GL::Renderbuffer constructor and destructor
@fn_gl{GenSamplers}, \n @fn_gl{CreateSamplers}, \n @fn_gl{DeleteSamplers} | | @fn_gl{GenSamplers}, \n @fn_gl{CreateSamplers}, \n @fn_gl{DeleteSamplers} | |
@ -190,7 +193,7 @@ OpenGL function | Matching API
@fn_gl{GenTransformFeedbacks}, \n @fn_gl{CreateTransformFeedbacks}, \n @fn_gl{DeleteTransformFeedbacks} | @ref GL::TransformFeedback constructor and destructor @fn_gl{GenTransformFeedbacks}, \n @fn_gl{CreateTransformFeedbacks}, \n @fn_gl{DeleteTransformFeedbacks} | @ref GL::TransformFeedback constructor and destructor
@fn_gl{GenVertexArrays}, \n @fn_gl{CreateVertexArrays}, \n @fn_gl{DeleteVertexArrays} | @ref GL::Mesh constructor and destructor @fn_gl{GenVertexArrays}, \n @fn_gl{CreateVertexArrays}, \n @fn_gl{DeleteVertexArrays} | @ref GL::Mesh constructor and destructor
@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{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_gl{Get}, \n @fn_gl_extension{GetUnsignedBytev,EXT,external_objects}, \n @fn_gl_extension{GetUnsignedBytei_v,EXT,external_objects} | see @ref opengl-mapping-state "table below"
@fn_gl2{GetActiveAtomicCounterBuffer,GetActiveAtomicCounterBufferiv} | not queryable @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{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{GetAttachedShaders} | not queryable, @ref GL::AbstractShaderProgram::attachShader() setter only
@ -208,6 +211,7 @@ OpenGL function | Matching API
@fn_gl{GetGraphicsResetStatus}, \n @fn_gl_extension{GetGraphicsResetStatus,ARB,robustness} | @ref GL::Renderer::graphicsResetStatus() @fn_gl{GetGraphicsResetStatus}, \n @fn_gl_extension{GetGraphicsResetStatus,ARB,robustness} | @ref GL::Renderer::graphicsResetStatus()
@fn_gl_extension{GetImageHandle,ARB,bindless_texture} | | @fn_gl_extension{GetImageHandle,ARB,bindless_texture} | |
@fn_gl{GetInternalformat} | | @fn_gl{GetInternalformat} | |
@fn_gl_extension{GetMemoryObjectParameteriv,EXT,external_objects} | |
@fn_gl{GetMultisample} | | @fn_gl{GetMultisample} | |
@fn_gl{GetObjectLabel}, \n @fn_gl{GetObjectPtrLabel} | @ref GL::AbstractShaderProgram::label(), \n @ref GL::AbstractQuery::label(), \n @ref GL::AbstractTexture::label(), \n @ref GL::Buffer::label(), \n @ref GL::Framebuffer::label(), \n @ref GL::Mesh::label(), \n @ref GL::Renderbuffer::label(), \n @ref GL::Shader::label() @fn_gl{GetObjectLabel}, \n @fn_gl{GetObjectPtrLabel} | @ref GL::AbstractShaderProgram::label(), \n @ref GL::AbstractQuery::label(), \n @ref GL::AbstractTexture::label(), \n @ref GL::Buffer::label(), \n @ref GL::Framebuffer::label(), \n @ref GL::Mesh::label(), \n @ref GL::Renderbuffer::label(), \n @ref GL::Shader::label()
@fn_gl{GetProgram}, \n @fn_gl{GetProgramInfoLog} | @ref GL::AbstractShaderProgram::link(), \n @ref GL::AbstractShaderProgram::validate() @fn_gl{GetProgram}, \n @fn_gl{GetProgramInfoLog} | @ref GL::AbstractShaderProgram::link(), \n @ref GL::AbstractShaderProgram::validate()
@ -217,6 +221,7 @@ OpenGL function | Matching API
@fn_gl{GetProgramPipelineInfoLog} | | @fn_gl{GetProgramPipelineInfoLog} | |
@fn_gl{GetProgramResource}, \n @fn_gl{GetProgramResourceIndex}, \n @fn_gl{GetProgramResourceLocation}, \n @fn_gl{GetProgramResourceLocationIndex}, \n @fn_gl{GetProgramResourceName} | not queryable, set them in shader code directly as described in @ref GL::AbstractShaderProgram docs @fn_gl{GetProgramResource}, \n @fn_gl{GetProgramResourceIndex}, \n @fn_gl{GetProgramResourceLocation}, \n @fn_gl{GetProgramResourceLocationIndex}, \n @fn_gl{GetProgramResourceName} | not queryable, set them in shader code directly as described in @ref GL::AbstractShaderProgram docs
@fn_gl{GetProgramStage} | | @fn_gl{GetProgramStage} | |
@fn_gl_extension{GetSemaphoreParameterui64v,EXT,external_objects} | |
@fn_gl{GetQueryIndexed} | | @fn_gl{GetQueryIndexed} | |
@fn_gl{GetQueryObject} | @ref GL::AbstractQuery::result() @fn_gl{GetQueryObject} | @ref GL::AbstractQuery::result()
@fn_gl{GetQueryBufferObject} | | @fn_gl{GetQueryBufferObject} | |
@ -259,6 +264,12 @@ OpenGL function | Matching API
OpenGL function | Matching API OpenGL function | Matching API
--------------------------------------- | ------------ --------------------------------------- | ------------
@fn_gl_extension{ImportMemoryFd,EXT,external_objects_fd} | |
@fn_gl_extension{ImportMemoryWin32Handle,EXT,external_objects_win32} | |
@fn_gl_extension{ImportMemoryWin32Name,EXT,external_objects_win32} | |
@fn_gl_extension{ImportSemaphoreFd,EXT,external_objects_fd} | |
@fn_gl_extension{ImportSemaphoreWin32Handle,EXT,external_objects_win32} | |
@fn_gl_extension{ImportSemaphoreWin32Name,EXT,external_objects_win32} | |
@fn_gl{InvalidateBufferData} | @ref GL::Buffer::invalidateData() @fn_gl{InvalidateBufferData} | @ref GL::Buffer::invalidateData()
@fn_gl{InvalidateBufferSubData} | @ref GL::Buffer::invalidateSubData() @fn_gl{InvalidateBufferSubData} | @ref GL::Buffer::invalidateSubData()
@fn_gl{InvalidateFramebuffer}, \n `glInvalidateNamedFramebufferData()`, \n @fn_gl_extension{DiscardFramebuffer,EXT,discard_framebuffer} | @ref GL::DefaultFramebuffer::invalidate(), \n @ref GL::Framebuffer::invalidate() @fn_gl{InvalidateFramebuffer}, \n `glInvalidateNamedFramebufferData()`, \n @fn_gl_extension{DiscardFramebuffer,EXT,discard_framebuffer} | @ref GL::DefaultFramebuffer::invalidate(), \n @ref GL::Framebuffer::invalidate()
@ -266,6 +277,7 @@ OpenGL function | Matching API
@fn_gl{InvalidateTexImage} | @ref GL::Texture::invalidateImage(), \n @ref GL::TextureArray::invalidateImage(), \n @ref GL::CubeMapTexture::invalidateImage(), \n @ref GL::CubeMapTextureArray::invalidateImage(), \n @ref GL::RectangleTexture::invalidateImage(), \n @ref GL::MultisampleTexture::invalidateImage() @fn_gl{InvalidateTexImage} | @ref GL::Texture::invalidateImage(), \n @ref GL::TextureArray::invalidateImage(), \n @ref GL::CubeMapTexture::invalidateImage(), \n @ref GL::CubeMapTextureArray::invalidateImage(), \n @ref GL::RectangleTexture::invalidateImage(), \n @ref GL::MultisampleTexture::invalidateImage()
@fn_gl{InvalidateTexSubImage} | @ref GL::Texture::invalidateSubImage(), \n @ref GL::TextureArray::invalidateSubImage(), \n @ref GL::CubeMapTexture::invalidateSubImage(), \n @ref GL::CubeMapTextureArray::invalidateSubImage(), \n @ref GL::RectangleTexture::invalidateSubImage(), \n @ref GL::MultisampleTexture::invalidateSubImage() @fn_gl{InvalidateTexSubImage} | @ref GL::Texture::invalidateSubImage(), \n @ref GL::TextureArray::invalidateSubImage(), \n @ref GL::CubeMapTexture::invalidateSubImage(), \n @ref GL::CubeMapTextureArray::invalidateSubImage(), \n @ref GL::RectangleTexture::invalidateSubImage(), \n @ref GL::MultisampleTexture::invalidateSubImage()
@fn_gl{IsBuffer}, \n @fn_gl{IsFramebuffer}, \n @fn_gl{IsProgram}, \n @fn_gl{IsProgramPipeline}, \n @fn_gl{IsQuery}, \n @fn_gl{IsRenderbuffer}, \n @fn_gl{IsSampler}, \n @fn_gl{IsShader}, \n @fn_gl{IsSync}, \n @fn_gl{IsTexture}, \n @fn_gl{IsTransformFeedback}, \n @fn_gl{IsVertexArray} | not needed, objects are strongly typed @fn_gl{IsBuffer}, \n @fn_gl{IsFramebuffer}, \n @fn_gl{IsProgram}, \n @fn_gl{IsProgramPipeline}, \n @fn_gl{IsQuery}, \n @fn_gl{IsRenderbuffer}, \n @fn_gl{IsSampler}, \n @fn_gl{IsShader}, \n @fn_gl{IsSync}, \n @fn_gl{IsTexture}, \n @fn_gl{IsTransformFeedback}, \n @fn_gl{IsVertexArray} | not needed, objects are strongly typed
@fn_gl_extension{IsMemoryObject,EXT,external_objects}, \n @fn_gl_extension{IsSemaphore,EXT,external_objects} | |
@fn_gl{IsEnabled}, `glIsEnabledi()` | not queryable, @ref GL::Renderer::setFeature() setter only @fn_gl{IsEnabled}, `glIsEnabledi()` | not queryable, @ref GL::Renderer::setFeature() setter only
@fn_gl_extension{IsImageHandleResident,ARB,bindless_texture} | | @fn_gl_extension{IsImageHandleResident,ARB,bindless_texture} | |
@fn_gl_extension{IsTextureHandleResident,ARB,bindless_texture} | | @fn_gl_extension{IsTextureHandleResident,ARB,bindless_texture} | |
@ -293,6 +305,7 @@ OpenGL function | Matching API
@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{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_extension{MaxShaderCompilerThreads,KHR,parallel_shader_compile} | | @fn_gl_extension{MaxShaderCompilerThreads,KHR,parallel_shader_compile} | |
@fn_gl{MemoryBarrier}, \n `glMemoryBarrierByRegion()` | @ref GL::Renderer::setMemoryBarrier(), \n @ref GL::Renderer::setMemoryBarrierByRegion() @fn_gl{MemoryBarrier}, \n `glMemoryBarrierByRegion()` | @ref GL::Renderer::setMemoryBarrier(), \n @ref GL::Renderer::setMemoryBarrierByRegion()
@fn_gl_extension{MemoryObjectParameteriv,EXT,external_objects} | |
@fn_gl{MinSampleShading} | @ref GL::Renderer::setMinSampleShading() @fn_gl{MinSampleShading} | @ref GL::Renderer::setMinSampleShading()
@fn_gl{MultiDrawArrays}, \n @fn_gl{MultiDrawElements}, \n @fn_gl{MultiDrawElementsBaseVertex} | @ref GL::AbstractShaderProgram::draw(const Containers::Iterable<MeshView>&) @fn_gl{MultiDrawArrays}, \n @fn_gl{MultiDrawElements}, \n @fn_gl{MultiDrawElementsBaseVertex} | @ref GL::AbstractShaderProgram::draw(const Containers::Iterable<MeshView>&)
@fn_gl{MultiDrawArraysIndirectCount}, \n @fn_gl{MultiDrawElementsIndirectCount} | | @fn_gl{MultiDrawArraysIndirectCount}, \n @fn_gl{MultiDrawElementsIndirectCount} | |
@ -356,12 +369,14 @@ OpenGL function | Matching API
@fn_gl{SampleCoverage} | @ref GL::Renderer::setSampleCoverage() @fn_gl{SampleCoverage} | @ref GL::Renderer::setSampleCoverage()
@fn_gl{SampleMaski} | | @fn_gl{SampleMaski} | |
@fn_gl{SamplerParameter} | | @fn_gl{SamplerParameter} | |
@fn_gl_extension{SemaphoreParameterui64v,EXT,external_objects} | |
@fn_gl{Scissor} | @ref GL::Renderer::setScissor() @fn_gl{Scissor} | @ref GL::Renderer::setScissor()
@fn_gl{ScissorArray} | | @fn_gl{ScissorArray} | |
@fn_gl{ScissorIndexed} | | @fn_gl{ScissorIndexed} | |
@fn_gl{ShaderBinary} | | @fn_gl{ShaderBinary} | |
@fn_gl{ShaderSource} | @ref GL::Shader::addFile(), \n @ref GL::Shader::addSource() @fn_gl{ShaderSource} | @ref GL::Shader::addFile(), \n @ref GL::Shader::addSource()
@fn_gl{ShaderStorageBlockBinding} | | @fn_gl{ShaderStorageBlockBinding} | |
@fn_gl_extension{SignalSemaphore,EXT,external_objects} | |
@fn_gl{SpecializeShader} | | @fn_gl{SpecializeShader} | |
@fn_gl{StencilFunc}, \n @fn_gl{StencilFuncSeparate} | @ref GL::Renderer::setStencilFunction() @fn_gl{StencilFunc}, \n @fn_gl{StencilFuncSeparate} | @ref GL::Renderer::setStencilFunction()
@fn_gl{StencilMask}, \n @fn_gl{StencilMaskSeparate} | @ref GL::Renderer::setStencilMask() @fn_gl{StencilMask}, \n @fn_gl{StencilMaskSeparate} | @ref GL::Renderer::setStencilMask()
@ -379,7 +394,9 @@ OpenGL function | Matching API
@fn_gl_extension{TexPageCommitment,ARB,sparse_texture} | | @fn_gl_extension{TexPageCommitment,ARB,sparse_texture} | |
@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{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{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_extension{TexStorageMem1D,EXT,external_objects}, \n @fn_gl_extension{TextureStorageMem1D,EXT,external_objects}, \n @fn_gl_extension{TexStorageMem2D,EXT,external_objects}, \n @fn_gl_extension{TextureStorageMem2D,EXT,external_objects}, \n @fn_gl_extension{TexStorageMem3D,EXT,external_objects}, \n @fn_gl_extension{TextureStorageMem3D,EXT,external_objects} | |
@fn_gl{TexStorage2DMultisample}, \n `glTextureStorage2DMultisample()`, \n @fn_gl{TexStorage3DMultisample}, \n `glTextureStorage3DMultisample()` | @ref GL::MultisampleTexture::setStorage() @fn_gl{TexStorage2DMultisample}, \n `glTextureStorage2DMultisample()`, \n @fn_gl{TexStorage3DMultisample}, \n `glTextureStorage3DMultisample()` | @ref GL::MultisampleTexture::setStorage()
@fn_gl_extension{TexStorageMem2DMultisample,EXT,external_objects}, \n @fn_gl_extension{TextureStorageMem2DMultisample,EXT,external_objects}, \n @fn_gl_extension{TexStorageMem3DMultisample,EXT,external_objects}, \n @fn_gl_extension{TextureStorageMem3DMultisample,EXT,external_objects} | |
@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{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{TextureBarrier} | @ref GL::Renderer::setTextureBarrier()
@fn_gl{TextureView} | @ref GL::Texture::view(), \n @ref GL::TextureArray::view(), \n @ref GL::CubeMapTexture::view(), \n @ref GL::CubeMapTextureArray::view(), @ref GL::MultisampleTexture::view(), \n @ref GL::RectangleTexture::view() @fn_gl{TextureView} | @ref GL::Texture::view(), \n @ref GL::TextureArray::view(), \n @ref GL::CubeMapTexture::view(), \n @ref GL::CubeMapTextureArray::view(), @ref GL::MultisampleTexture::view(), \n @ref GL::RectangleTexture::view()
@ -424,6 +441,7 @@ OpenGL function | Matching API
OpenGL function | Matching API OpenGL function | Matching API
--------------------------------------- | ------------ --------------------------------------- | ------------
@fn_gl_extension{WaitSemaphore,EXT,external_objects} | |
@fn_gl{WaitSync} | | @fn_gl{WaitSync} | |
@section opengl-mapping-state Limit and state queries @section opengl-mapping-state Limit and state queries
@ -449,6 +467,10 @@ glGet() parameter | Matching API
@def_gl{DEBUG_GROUP_STACK_DEPTH} | | @def_gl{DEBUG_GROUP_STACK_DEPTH} | |
@def_gl{DEPTH_FUNC} | not queryable, @ref GL::Renderer::setDepthFunction() setter only @def_gl{DEPTH_FUNC} | not queryable, @ref GL::Renderer::setDepthFunction() setter only
@def_gl{DEPTH_RANGE} | not queryable @def_gl{DEPTH_RANGE} | not queryable
@def_gl_extension{DEVICE_LUID,EXT,external_objects_win32} | |
@def_gl_extension{DEVICE_NODE_MASK,EXT,external_objects_win32} | |
@def_gl_extension{DEVICE_UUID,EXT,external_objects} | |
@def_gl_extension{DRIVER_UUID,EXT,external_objects} | |
@def_gl{DOUBLEBUFFER}, \n @def_gl{STEREO} | | @def_gl{DOUBLEBUFFER}, \n @def_gl{STEREO} | |
@def_gl{DRAW_BUFFERi}, \n @def_gl{DRAW_BUFFER}, \n @def_gl{READ_BUFFER} | not queryable, @ref GL::DefaultFramebuffer::mapForDraw(), \n @ref GL::DefaultFramebuffer::mapForRead(), \n @ref GL::Framebuffer::mapForDraw() and \n @ref GL::Framebuffer::mapForRead() setters only @def_gl{DRAW_BUFFERi}, \n @def_gl{DRAW_BUFFER}, \n @def_gl{READ_BUFFER} | not queryable, @ref GL::DefaultFramebuffer::mapForDraw(), \n @ref GL::DefaultFramebuffer::mapForRead(), \n @ref GL::Framebuffer::mapForDraw() and \n @ref GL::Framebuffer::mapForRead() setters only
@def_gl{DRAW_FRAMEBUFFER_BINDING}, \n @def_gl{READ_FRAMEBUFFER_BINDING} | not queryable but tracked internally @def_gl{DRAW_FRAMEBUFFER_BINDING}, \n @def_gl{READ_FRAMEBUFFER_BINDING} | not queryable but tracked internally
@ -537,6 +559,7 @@ glGet() parameter | Matching API
@def_gl{MIN_PROGRAM_TEXEL_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXEL_OFFSET} | @ref GL::AbstractShaderProgram::minTexelOffset(), \n @ref GL::AbstractShaderProgram::maxTexelOffset() @def_gl{MIN_PROGRAM_TEXEL_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXEL_OFFSET} | @ref GL::AbstractShaderProgram::minTexelOffset(), \n @ref GL::AbstractShaderProgram::maxTexelOffset()
@def_gl{MIN_PROGRAM_TEXTURE_GATHER_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXTURE_GATHER_OFFSET} | | @def_gl{MIN_PROGRAM_TEXTURE_GATHER_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXTURE_GATHER_OFFSET} | |
@def_gl{MIN_SAMPLE_SHADING_VALUE} | | @def_gl{MIN_SAMPLE_SHADING_VALUE} | |
@def_gl_extension{NUM_DEVICE_UUIDS,EXT,external_objects} | |
@def_gl{NUM_EXTENSIONS} | @ref GL::Context::extensionStrings() @def_gl{NUM_EXTENSIONS} | @ref GL::Context::extensionStrings()
@def_gl{NUM_PROGRAM_BINARY_FORMATS}, \n @def_gl{PROGRAM_BINARY_FORMATS} | | @def_gl{NUM_PROGRAM_BINARY_FORMATS}, \n @def_gl{PROGRAM_BINARY_FORMATS} | |
@def_gl{NUM_SHADER_BINARY_FORMATS}, \n @def_gl{SHADER_BINARY_FORMATS} | | @def_gl{NUM_SHADER_BINARY_FORMATS}, \n @def_gl{SHADER_BINARY_FORMATS} | |

13
doc/opengl-support.dox

@ -321,6 +321,12 @@ Extension | Status
@gl_extension{EXT,shader_integer_mix} | done (shading language only) @gl_extension{EXT,shader_integer_mix} | done (shading language only)
@gl_extension{EXT,debug_label} | missing pipeline and sampler label @gl_extension{EXT,debug_label} | missing pipeline and sampler label
@gl_extension{EXT,debug_marker} | done @gl_extension{EXT,debug_marker} | done
@gl_extension2{EXT,memory_object,EXT_external_objects} | |
@gl_extension2{EXT,memory_object_fd,EXT_external_objects_fd} | |
@gl_extension2{EXT,memory_object_win32,EXT_external_objects_win32} | |
@gl_extension2{EXT,semaphore,EXT_external_objects} | |
@gl_extension2{EXT,semaphore_fd,EXT_external_objects_fd} | |
@gl_extension2{EXT,semaphore_win32,EXT_external_objects_win32} | |
@gl_extension{EXT,texture_sRGB_R8} | done @gl_extension{EXT,texture_sRGB_R8} | done
@gl_extension{EXT,texture_sRGB_RG8} | done @gl_extension{EXT,texture_sRGB_RG8} | done
@gl_extension{GREMEDY,string_marker} | done @gl_extension{GREMEDY,string_marker} | done
@ -468,6 +474,9 @@ Extension | Status
@gl_extension{EXT,multi_draw_arrays} | done @gl_extension{EXT,multi_draw_arrays} | done
@gl_extension{EXT,debug_label} | see above @gl_extension{EXT,debug_label} | see above
@gl_extension{EXT,debug_marker} | done @gl_extension{EXT,debug_marker} | done
@gl_extension2{EXT,memory_object,EXT_external_objects} | |
@gl_extension2{EXT,memory_object_fd,EXT_external_objects_fd} | |
@gl_extension2{EXT,memory_object_win32,EXT_external_objects_win32} | |
@gl_extension2{EXT,separate_shader_objects,EXT_separate_shader_objects.gles} | only direct uniform binding @gl_extension2{EXT,separate_shader_objects,EXT_separate_shader_objects.gles} | only direct uniform binding
@gl_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage @gl_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage
@gl_extension{EXT,robustness} | done @gl_extension{EXT,robustness} | done
@ -480,6 +489,7 @@ Extension | Status
@gl_extension{EXT,shader_integer_mix} | done (shading language only) @gl_extension{EXT,shader_integer_mix} | done (shading language only)
@gl_extension{EXT,texture_view} | done @gl_extension{EXT,texture_view} | done
@gl_extension{EXT,draw_elements_base_vertex} | done @gl_extension{EXT,draw_elements_base_vertex} | done
@gl_extension{EXT,multi_draw_indirect} | |
@gl_extension{EXT,texture_norm16} | done @gl_extension{EXT,texture_norm16} | done
@gl_extension{EXT,texture_sRGB_R8} | done @gl_extension{EXT,texture_sRGB_R8} | done
@gl_extension{EXT,texture_sRGB_RG8} | done @gl_extension{EXT,texture_sRGB_RG8} | done
@ -487,6 +497,9 @@ Extension | Status
@gl_extension{EXT,blend_func_extended} | done @gl_extension{EXT,blend_func_extended} | done
@gl_extension{EXT,polygon_offset_clamp} | | @gl_extension{EXT,polygon_offset_clamp} | |
@gl_extension{EXT,clip_cull_distance} | done @gl_extension{EXT,clip_cull_distance} | done
@gl_extension2{EXT,semaphore,EXT_external_objects} | |
@gl_extension2{EXT,semaphore_fd,EXT_external_objects_fd} | |
@gl_extension2{EXT,semaphore_win32,EXT_external_objects_win32} | |
@gl_extension{EXT,texture_compression_rgtc} | done @gl_extension{EXT,texture_compression_rgtc} | done
@gl_extension{EXT,texture_compression_bptc} | done @gl_extension{EXT,texture_compression_bptc} | done
@gl_extension{EXT,texture_compression_s3tc_srgb} | done @gl_extension{EXT,texture_compression_s3tc_srgb} | done

31
src/Magnum/GL/Context.cpp

@ -96,6 +96,18 @@ constexpr Extension ExtensionList[]{
Extensions::ATI::texture_mirror_once{}, Extensions::ATI::texture_mirror_once{},
Extensions::EXT::debug_label{}, Extensions::EXT::debug_label{},
Extensions::EXT::debug_marker{}, Extensions::EXT::debug_marker{},
Extensions::EXT::memory_object{},
#ifndef CORRADE_TARGET_WINDOWS
Extensions::EXT::memory_object_fd{},
#else
Extensions::EXT::memory_object_win32{},
#endif
Extensions::EXT::semaphore{},
#ifndef CORRADE_TARGET_WINDOWS
Extensions::EXT::semaphore_fd{},
#else
Extensions::EXT::semaphore_win32{},
#endif
Extensions::EXT::shader_integer_mix{}, Extensions::EXT::shader_integer_mix{},
Extensions::EXT::texture_compression_dxt1{}, Extensions::EXT::texture_compression_dxt1{},
Extensions::EXT::texture_compression_s3tc{}, Extensions::EXT::texture_compression_s3tc{},
@ -396,13 +408,32 @@ constexpr Extension ExtensionList[]{
Extensions::EXT::depth_clamp{}, Extensions::EXT::depth_clamp{},
Extensions::EXT::disjoint_timer_query{}, Extensions::EXT::disjoint_timer_query{},
Extensions::EXT::draw_elements_base_vertex{}, Extensions::EXT::draw_elements_base_vertex{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::memory_object{},
#ifndef CORRADE_TARGET_WINDOWS
Extensions::EXT::memory_object_fd{},
#else
Extensions::EXT::memory_object_win32{},
#endif
#endif
Extensions::EXT::multi_draw_arrays{}, Extensions::EXT::multi_draw_arrays{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::multi_draw_indirect{},
#endif
Extensions::EXT::multisampled_render_to_texture{}, Extensions::EXT::multisampled_render_to_texture{},
Extensions::EXT::polygon_offset_clamp{}, Extensions::EXT::polygon_offset_clamp{},
Extensions::EXT::pvrtc_sRGB{}, Extensions::EXT::pvrtc_sRGB{},
Extensions::EXT::read_format_bgra{}, Extensions::EXT::read_format_bgra{},
Extensions::EXT::robustness{}, Extensions::EXT::robustness{},
Extensions::EXT::sRGB_write_control{}, Extensions::EXT::sRGB_write_control{},
#ifndef MAGNUM_TARGET_GLES2
Extensions::EXT::semaphore{},
#ifndef CORRADE_TARGET_WINDOWS
Extensions::EXT::semaphore_fd{},
#else
Extensions::EXT::semaphore_win32{},
#endif
#endif
Extensions::EXT::separate_shader_objects{}, Extensions::EXT::separate_shader_objects{},
Extensions::EXT::shader_framebuffer_fetch{}, Extensions::EXT::shader_framebuffer_fetch{},
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2

104
src/Magnum/GL/Extensions.h

@ -243,37 +243,47 @@ namespace AMD {
_extension(153,EXT,shader_integer_mix, GL300, None) // #437 _extension(153,EXT,shader_integer_mix, GL300, None) // #437
_extension(154,EXT,debug_label, GL210, None) // #439 _extension(154,EXT,debug_label, GL210, None) // #439
_extension(155,EXT,debug_marker, GL210, None) // #440 _extension(155,EXT,debug_marker, GL210, None) // #440
_extension(156,EXT,texture_sRGB_R8, GL210, None) // #534 _extension(156,EXT,memory_object, GL210, None) // #503
_extension(157,EXT,texture_sRGB_RG8, GL210, None) // #555 _extension(157,EXT,semaphore, GL210, None) // #503
/* These two pairs appear to be exclusive so they share the same indices */
#ifndef CORRADE_TARGET_WINDOWS
_extension(158,EXT,memory_object_fd, GL210, None) // #504
_extension(159,EXT,semaphore_fd, GL210, None) // #504
#else
_extension(158,EXT,memory_object_win32, GL210, None) // #505
_extension(159,EXT,semaphore_win32, GL210, None) // #505
#endif
_extension(160,EXT,texture_sRGB_R8, GL210, None) // #534
_extension(161,EXT,texture_sRGB_RG8, GL210, None) // #555
} namespace GREMEDY { } namespace GREMEDY {
_extension(158,GREMEDY,string_marker, GL210, None) // #311 _extension(162,GREMEDY,string_marker, GL210, None) // #311
} namespace INTEL { } namespace INTEL {
_extension(159,INTEL,blackhole_render, GL300, None) // #521 _extension(163,INTEL,blackhole_render, GL300, None) // #521
} namespace KHR { } namespace KHR {
_extension(160,KHR,texture_compression_astc_ldr, GL210, None) // #118 _extension(170,KHR,texture_compression_astc_ldr, GL210, None) // #118
_extension(161,KHR,texture_compression_astc_hdr, GL210, None) // #118 _extension(171,KHR,texture_compression_astc_hdr, GL210, None) // #118
_extension(162,KHR,debug, GL210, GL430) // #119 _extension(172,KHR,debug, GL210, GL430) // #119
_extension(163,KHR,context_flush_control, GL210, GL450) // #168 _extension(173,KHR,context_flush_control, GL210, GL450) // #168
_extension(164,KHR,robust_buffer_access_behavior, GL320, None) // #169 _extension(174,KHR,robust_buffer_access_behavior, GL320, None) // #169
_extension(165,KHR,robustness, GL320, GL450) // #170 _extension(175,KHR,robustness, GL320, GL450) // #170
_extension(166,KHR,blend_equation_advanced, GL210, None) // #174 _extension(176,KHR,blend_equation_advanced, GL210, None) // #174
_extension(167,KHR,blend_equation_advanced_coherent, GL210, None) // #174 _extension(177,KHR,blend_equation_advanced_coherent, GL210, None) // #174
_extension(168,KHR,no_error, GL210, GL460) // #175 _extension(178,KHR,no_error, GL210, GL460) // #175
_extension(169,KHR,texture_compression_astc_sliced_3d, GL210, None) // #189 _extension(179,KHR,texture_compression_astc_sliced_3d, GL210, None) // #189
_extension(170,KHR,parallel_shader_compile, GL210, None) // #192 _extension(180,KHR,parallel_shader_compile, GL210, None) // #192
} namespace MAGNUM { } namespace MAGNUM {
_extension(171,MAGNUM,shader_vertex_id, GL300, GL300) _extension(181,MAGNUM,shader_vertex_id, GL300, GL300)
} namespace NV { } namespace NV {
_extension(175,NV,primitive_restart, GL210, GL310) // #285 _extension(182,NV,primitive_restart, GL210, GL310) // #285
_extension(176,NV,depth_buffer_float, GL210, None) // #334 _extension(183,NV,depth_buffer_float, GL210, None) // #334
_extension(177,NV,conditional_render, GL210, GL300) // #346 _extension(184,NV,conditional_render, GL210, GL300) // #346
/* NV_draw_texture not supported */ // #430 /* NV_draw_texture not supported */ // #430
_extension(178,NV,geometry_shader_passthrough, GL330, None) // #470 _extension(185,NV,geometry_shader_passthrough, GL330, None) // #470
_extension(179,NV,sample_locations, GL210, None) // #472 _extension(186,NV,sample_locations, GL210, None) // #472
_extension(180,NV,fragment_shader_barycentric, GL450, None) // #526 _extension(187,NV,fragment_shader_barycentric, GL450, None) // #526
} namespace OVR { } namespace OVR {
_extension(185,OVR,multiview, GL300, None) // #478 _extension(188,OVR,multiview, GL300, None) // #478
_extension(186,OVR,multiview2, GL300, None) // #479 _extension(189,OVR,multiview2, GL300, None) // #479
} }
#elif defined(MAGNUM_TARGET_WEBGL) #elif defined(MAGNUM_TARGET_WEBGL)
namespace ANGLE { namespace ANGLE {
@ -517,24 +527,40 @@ namespace ANDROID {
#endif #endif
_extension( 74,EXT,draw_elements_base_vertex, GLES200, None) // #204 _extension( 74,EXT,draw_elements_base_vertex, GLES200, None) // #204
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 75,EXT,texture_norm16, GLES310, None) // #207 _extension( 75,EXT,multi_draw_indirect, GLES310, None) // #205
_extension( 76,EXT,texture_sRGB_R8, GLES300, None) // #221 _extension( 76,EXT,texture_norm16, GLES310, None) // #207
_extension( 77,EXT,texture_sRGB_RG8, GLES300, None) // #223 _extension( 77,EXT,texture_sRGB_R8, GLES300, None) // #221
_extension( 78,EXT,buffer_storage, GLES310, None) // #239 _extension( 78,EXT,texture_sRGB_RG8, GLES300, None) // #223
_extension( 79,EXT,buffer_storage, GLES310, None) // #239
#endif
_extension( 80,EXT,blend_func_extended, GLES200, None) // #247
_extension( 81,EXT,polygon_offset_clamp, GLES200, None) // #252
#ifndef MAGNUM_TARGET_GLES2
_extension( 82,EXT,clip_cull_distance, GLES300, None) // #257
#endif
/* The extension says "Requires ARB_texture_storage or a version of OpenGL
or OpenGL ES that incorporates it." There's EXT_texture_storage on ES2,
however I don't think ES2 really matters today, so it's just ES3+. */
_extension( 83,EXT,memory_object, GLES300, None) // #280
_extension( 84,EXT,semaphore, GLES300, None) // #280
/* These two pairs appear to be exclusive so they share the same indices */
#ifndef CORRADE_TARGET_WINDOWS
_extension( 85,EXT,memory_object_fd, GLES300, None) // #281
_extension( 86,EXT,semaphore_fd, GLES300, None) // #281
#else
_extension( 85,EXT,memory_object_win32, GLES300, None) // #282
_extension( 86,EXT,semaphore_win32, GLES300, None) // #282
#endif #endif
_extension( 79,EXT,blend_func_extended, GLES200, None) // #247
_extension( 80,EXT,polygon_offset_clamp, GLES200, None) // #252
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
_extension( 81,EXT,clip_cull_distance, GLES300, None) // #257 _extension( 87,EXT,texture_compression_rgtc, GLES300, None) // #286
_extension( 82,EXT,texture_compression_rgtc, GLES300, None) // #286 _extension( 88,EXT,texture_compression_bptc, GLES300, None) // #287
_extension( 83,EXT,texture_compression_bptc, GLES300, None) // #287 #endif
#endif _extension( 89,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289
_extension( 84,EXT,texture_compression_s3tc_srgb, GLES200, None) // #289 _extension( 90,EXT,clip_control, GLES200, None) // #290
_extension( 85,EXT,clip_control, GLES200, None) // #290 _extension( 91,EXT,texture_mirror_clamp_to_edge, GLES200, None) // #291
_extension( 86,EXT,texture_mirror_clamp_to_edge, GLES200, None) // #291 _extension( 92,EXT,depth_clamp, GLES200, None) // #309
_extension( 87,EXT,depth_clamp, GLES200, None) // #309
} namespace IMG { } namespace IMG {
_extension( 88,IMG,texture_compression_pvrtc, GLES200, None) // #54 _extension( 93,IMG,texture_compression_pvrtc, GLES200, None) // #54
} namespace INTEL { } namespace INTEL {
_extension( 94,INTEL,blackhole_render, /*?*/ GLES200, None) // #300 _extension( 94,INTEL,blackhole_render, /*?*/ GLES200, None) // #300
} namespace KHR { } namespace KHR {

6
src/MagnumExternal/OpenGL/GL/extensions.txt vendored

@ -33,6 +33,12 @@ extension EXT_texture_sRGB_decode optional
extension EXT_shader_integer_mix optional extension EXT_shader_integer_mix optional
extension EXT_debug_label optional extension EXT_debug_label optional
extension EXT_debug_marker optional extension EXT_debug_marker optional
extension EXT_memory_object optional
extension EXT_memory_object_fd optional
extension EXT_memory_object_win32 optional
extension EXT_semaphore optional
extension EXT_semaphore_fd optional
extension EXT_semaphore_win32 optional
extension EXT_texture_sRGB_R8 optional extension EXT_texture_sRGB_R8 optional
extension EXT_texture_sRGB_RG8 optional extension EXT_texture_sRGB_RG8 optional
extension GREMEDY_string_marker optional extension GREMEDY_string_marker optional

44
src/MagnumExternal/OpenGL/GL/flextGL.cpp vendored

@ -217,6 +217,50 @@ FlextGL flextGL{
nullptr, nullptr,
nullptr, nullptr,
/* GL_EXT_memory_object */
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
/* GL_EXT_memory_object_fd */
nullptr,
/* GL_EXT_memory_object_win32 */
nullptr,
nullptr,
/* GL_EXT_semaphore */
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
/* GL_EXT_semaphore_fd */
nullptr,
/* GL_EXT_semaphore_win32 */
nullptr,
nullptr,
/* GL_GREMEDY_string_marker */ /* GL_GREMEDY_string_marker */
nullptr, nullptr,

160
src/MagnumExternal/OpenGL/GL/flextGL.h vendored

@ -1713,6 +1713,66 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum
#define GL_SAMPLER 0x82E6 #define GL_SAMPLER 0x82E6
#define GL_TRANSFORM_FEEDBACK 0x8E22 #define GL_TRANSFORM_FEEDBACK 0x8E22
/* GL_EXT_memory_object */
#define GL_TEXTURE_TILING_EXT 0x9580
#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
#define GL_NUM_TILING_TYPES_EXT 0x9582
#define GL_TILING_TYPES_EXT 0x9583
#define GL_OPTIMAL_TILING_EXT 0x9584
#define GL_LINEAR_TILING_EXT 0x9585
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
/* GL_EXT_memory_object_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_memory_object_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
/* GL_EXT_semaphore */
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
#define GL_LAYOUT_GENERAL_EXT 0x958D
#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
/* GL_EXT_semaphore_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_semaphore_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
#define GL_D3D12_FENCE_VALUE_EXT 0x9595
/* GL_EXT_texture_sRGB_R8 */ /* GL_EXT_texture_sRGB_R8 */
#define GL_SR8_EXT 0x8FBD #define GL_SR8_EXT 0x8FBD
@ -1885,6 +1945,56 @@ struct FlextGL {
void(APIENTRY *PopGroupMarkerEXT)(void); void(APIENTRY *PopGroupMarkerEXT)(void);
void(APIENTRY *PushGroupMarkerEXT)(GLsizei, const GLchar *); void(APIENTRY *PushGroupMarkerEXT)(GLsizei, const GLchar *);
/* GL_EXT_memory_object */
void(APIENTRY *BufferStorageMemEXT)(GLenum, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *CreateMemoryObjectsEXT)(GLsizei, GLuint *);
void(APIENTRY *DeleteMemoryObjectsEXT)(GLsizei, const GLuint *);
void(APIENTRY *GetMemoryObjectParameterivEXT)(GLuint, GLenum, GLint *);
void(APIENTRY *GetUnsignedBytei_vEXT)(GLenum, GLuint, GLubyte *);
void(APIENTRY *GetUnsignedBytevEXT)(GLenum, GLubyte *);
GLboolean(APIENTRY *IsMemoryObjectEXT)(GLuint);
void(APIENTRY *MemoryObjectParameterivEXT)(GLuint, GLenum, const GLint *);
void(APIENTRY *NamedBufferStorageMemEXT)(GLuint, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *TexStorageMem1DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem1DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
/* GL_EXT_memory_object_fd */
void(APIENTRY *ImportMemoryFdEXT)(GLuint, GLuint64, GLenum, GLint);
/* GL_EXT_memory_object_win32 */
void(APIENTRY *ImportMemoryWin32HandleEXT)(GLuint, GLuint64, GLenum, void *);
void(APIENTRY *ImportMemoryWin32NameEXT)(GLuint, GLuint64, GLenum, const void *);
/* GL_EXT_semaphore */
void(APIENTRY *DeleteSemaphoresEXT)(GLsizei, const GLuint *);
void(APIENTRY *GenSemaphoresEXT)(GLsizei, GLuint *);
void(APIENTRY *GetSemaphoreParameterui64vEXT)(GLuint, GLenum, GLuint64 *);
GLboolean(APIENTRY *IsSemaphoreEXT)(GLuint);
void(APIENTRY *SemaphoreParameterui64vEXT)(GLuint, GLenum, const GLuint64 *);
void(APIENTRY *SignalSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
void(APIENTRY *WaitSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
/* GL_EXT_semaphore_fd */
void(APIENTRY *ImportSemaphoreFdEXT)(GLuint, GLenum, GLint);
/* GL_EXT_semaphore_win32 */
void(APIENTRY *ImportSemaphoreWin32HandleEXT)(GLuint, GLenum, void *);
void(APIENTRY *ImportSemaphoreWin32NameEXT)(GLuint, GLenum, const void *);
/* GL_GREMEDY_string_marker */ /* GL_GREMEDY_string_marker */
void(APIENTRY *StringMarkerGREMEDY)(GLsizei, const void *); void(APIENTRY *StringMarkerGREMEDY)(GLsizei, const void *);
@ -2699,6 +2809,56 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glPopGroupMarkerEXT flextGL.PopGroupMarkerEXT #define glPopGroupMarkerEXT flextGL.PopGroupMarkerEXT
#define glPushGroupMarkerEXT flextGL.PushGroupMarkerEXT #define glPushGroupMarkerEXT flextGL.PushGroupMarkerEXT
/* GL_EXT_memory_object */
#define glBufferStorageMemEXT flextGL.BufferStorageMemEXT
#define glCreateMemoryObjectsEXT flextGL.CreateMemoryObjectsEXT
#define glDeleteMemoryObjectsEXT flextGL.DeleteMemoryObjectsEXT
#define glGetMemoryObjectParameterivEXT flextGL.GetMemoryObjectParameterivEXT
#define glGetUnsignedBytei_vEXT flextGL.GetUnsignedBytei_vEXT
#define glGetUnsignedBytevEXT flextGL.GetUnsignedBytevEXT
#define glIsMemoryObjectEXT flextGL.IsMemoryObjectEXT
#define glMemoryObjectParameterivEXT flextGL.MemoryObjectParameterivEXT
#define glNamedBufferStorageMemEXT flextGL.NamedBufferStorageMemEXT
#define glTexStorageMem1DEXT flextGL.TexStorageMem1DEXT
#define glTexStorageMem2DEXT flextGL.TexStorageMem2DEXT
#define glTexStorageMem2DMultisampleEXT flextGL.TexStorageMem2DMultisampleEXT
#define glTexStorageMem3DEXT flextGL.TexStorageMem3DEXT
#define glTexStorageMem3DMultisampleEXT flextGL.TexStorageMem3DMultisampleEXT
#define glTextureStorageMem1DEXT flextGL.TextureStorageMem1DEXT
#define glTextureStorageMem2DEXT flextGL.TextureStorageMem2DEXT
#define glTextureStorageMem2DMultisampleEXT flextGL.TextureStorageMem2DMultisampleEXT
#define glTextureStorageMem3DEXT flextGL.TextureStorageMem3DEXT
#define glTextureStorageMem3DMultisampleEXT flextGL.TextureStorageMem3DMultisampleEXT
/* GL_EXT_memory_object_fd */
#define glImportMemoryFdEXT flextGL.ImportMemoryFdEXT
/* GL_EXT_memory_object_win32 */
#define glImportMemoryWin32HandleEXT flextGL.ImportMemoryWin32HandleEXT
#define glImportMemoryWin32NameEXT flextGL.ImportMemoryWin32NameEXT
/* GL_EXT_semaphore */
#define glDeleteSemaphoresEXT flextGL.DeleteSemaphoresEXT
#define glGenSemaphoresEXT flextGL.GenSemaphoresEXT
#define glGetSemaphoreParameterui64vEXT flextGL.GetSemaphoreParameterui64vEXT
#define glIsSemaphoreEXT flextGL.IsSemaphoreEXT
#define glSemaphoreParameterui64vEXT flextGL.SemaphoreParameterui64vEXT
#define glSignalSemaphoreEXT flextGL.SignalSemaphoreEXT
#define glWaitSemaphoreEXT flextGL.WaitSemaphoreEXT
/* GL_EXT_semaphore_fd */
#define glImportSemaphoreFdEXT flextGL.ImportSemaphoreFdEXT
/* GL_EXT_semaphore_win32 */
#define glImportSemaphoreWin32HandleEXT flextGL.ImportSemaphoreWin32HandleEXT
#define glImportSemaphoreWin32NameEXT flextGL.ImportSemaphoreWin32NameEXT
/* GL_GREMEDY_string_marker */ /* GL_GREMEDY_string_marker */
#define glStringMarkerGREMEDY flextGL.StringMarkerGREMEDY #define glStringMarkerGREMEDY flextGL.StringMarkerGREMEDY

44
src/MagnumExternal/OpenGL/GL/flextGLPlatform.cpp vendored

@ -181,6 +181,50 @@ void flextGLInit(Magnum::GL::Context& context) {
flextGL.PopGroupMarkerEXT = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glPopGroupMarkerEXT")); flextGL.PopGroupMarkerEXT = reinterpret_cast<void(APIENTRY*)(void)>(loader.load("glPopGroupMarkerEXT"));
flextGL.PushGroupMarkerEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLchar *)>(loader.load("glPushGroupMarkerEXT")); flextGL.PushGroupMarkerEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLchar *)>(loader.load("glPushGroupMarkerEXT"));
/* GL_EXT_memory_object */
flextGL.BufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizeiptr, GLuint, GLuint64)>(loader.load("glBufferStorageMemEXT"));
flextGL.CreateMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glCreateMemoryObjectsEXT"));
flextGL.DeleteMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteMemoryObjectsEXT"));
flextGL.GetMemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint *)>(loader.load("glGetMemoryObjectParameterivEXT"));
flextGL.GetUnsignedBytei_vEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLubyte *)>(loader.load("glGetUnsignedBytei_vEXT"));
flextGL.GetUnsignedBytevEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLubyte *)>(loader.load("glGetUnsignedBytevEXT"));
flextGL.IsMemoryObjectEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsMemoryObjectEXT"));
flextGL.MemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLint *)>(loader.load("glMemoryObjectParameterivEXT"));
flextGL.NamedBufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizeiptr, GLuint, GLuint64)>(loader.load("glNamedBufferStorageMemEXT"));
flextGL.TexStorageMem1DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem1DEXT"));
flextGL.TexStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem2DEXT"));
flextGL.TexStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem2DMultisampleEXT"));
flextGL.TexStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem3DEXT"));
flextGL.TexStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem3DMultisampleEXT"));
flextGL.TextureStorageMem1DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem1DEXT"));
flextGL.TextureStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DEXT"));
flextGL.TextureStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DMultisampleEXT"));
flextGL.TextureStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DEXT"));
flextGL.TextureStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DMultisampleEXT"));
/* GL_EXT_memory_object_fd */
flextGL.ImportMemoryFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, GLint)>(loader.load("glImportMemoryFdEXT"));
/* GL_EXT_memory_object_win32 */
flextGL.ImportMemoryWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, void *)>(loader.load("glImportMemoryWin32HandleEXT"));
flextGL.ImportMemoryWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, const void *)>(loader.load("glImportMemoryWin32NameEXT"));
/* GL_EXT_semaphore */
flextGL.DeleteSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteSemaphoresEXT"));
flextGL.GenSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glGenSemaphoresEXT"));
flextGL.GetSemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLuint64 *)>(loader.load("glGetSemaphoreParameterui64vEXT"));
flextGL.IsSemaphoreEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsSemaphoreEXT"));
flextGL.SemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLuint64 *)>(loader.load("glSemaphoreParameterui64vEXT"));
flextGL.SignalSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glSignalSemaphoreEXT"));
flextGL.WaitSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glWaitSemaphoreEXT"));
/* GL_EXT_semaphore_fd */
flextGL.ImportSemaphoreFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint)>(loader.load("glImportSemaphoreFdEXT"));
/* GL_EXT_semaphore_win32 */
flextGL.ImportSemaphoreWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, void *)>(loader.load("glImportSemaphoreWin32HandleEXT"));
flextGL.ImportSemaphoreWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const void *)>(loader.load("glImportSemaphoreWin32NameEXT"));
/* GL_GREMEDY_string_marker */ /* GL_GREMEDY_string_marker */
flextGL.StringMarkerGREMEDY = reinterpret_cast<void(APIENTRY*)(GLsizei, const void *)>(loader.load("glStringMarkerGREMEDY")); flextGL.StringMarkerGREMEDY = reinterpret_cast<void(APIENTRY*)(GLsizei, const void *)>(loader.load("glStringMarkerGREMEDY"));

7
src/MagnumExternal/OpenGL/GLES3/extensions.txt vendored

@ -61,6 +61,10 @@ extension EXT_texture_compression_s3tc optional
extension EXT_pvrtc_sRGB optional extension EXT_pvrtc_sRGB optional
extension EXT_shader_integer_mix optional extension EXT_shader_integer_mix optional
extension EXT_draw_elements_base_vertex optional extension EXT_draw_elements_base_vertex optional
extension EXT_memory_object optional
extension EXT_memory_object_fd optional
extension EXT_memory_object_win32 optional
extension EXT_multi_draw_indirect optional
extension EXT_texture_norm16 optional extension EXT_texture_norm16 optional
extension EXT_texture_sRGB_R8 optional extension EXT_texture_sRGB_R8 optional
extension EXT_texture_sRGB_RG8 optional extension EXT_texture_sRGB_RG8 optional
@ -68,6 +72,9 @@ extension EXT_buffer_storage optional
extension EXT_blend_func_extended optional extension EXT_blend_func_extended optional
extension EXT_polygon_offset_clamp optional extension EXT_polygon_offset_clamp optional
extension EXT_clip_cull_distance optional extension EXT_clip_cull_distance optional
extension EXT_semaphore optional
extension EXT_semaphore_fd optional
extension EXT_semaphore_win32 optional
extension EXT_texture_compression_rgtc optional extension EXT_texture_compression_rgtc optional
extension EXT_texture_compression_bptc optional extension EXT_texture_compression_bptc optional
extension EXT_texture_compression_s3tc_srgb optional extension EXT_texture_compression_s3tc_srgb optional

166
src/MagnumExternal/OpenGL/GLES3/flextGL.h vendored

@ -1572,6 +1572,36 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
/* GL_EXT_memory_object */
#define GL_TEXTURE_TILING_EXT 0x9580
#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
#define GL_NUM_TILING_TYPES_EXT 0x9582
#define GL_TILING_TYPES_EXT 0x9583
#define GL_OPTIMAL_TILING_EXT 0x9584
#define GL_LINEAR_TILING_EXT 0x9585
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
/* GL_EXT_memory_object_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_memory_object_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
/* GL_EXT_texture_norm16 */ /* GL_EXT_texture_norm16 */
#define GL_R16_EXT 0x822A #define GL_R16_EXT 0x822A
@ -1631,6 +1661,36 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_DISTANCE6_EXT 0x3006 #define GL_CLIP_DISTANCE6_EXT 0x3006
#define GL_CLIP_DISTANCE7_EXT 0x3007 #define GL_CLIP_DISTANCE7_EXT 0x3007
/* GL_EXT_semaphore */
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
#define GL_LAYOUT_GENERAL_EXT 0x958D
#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
/* GL_EXT_semaphore_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_semaphore_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
#define GL_D3D12_FENCE_VALUE_EXT 0x9595
/* GL_EXT_texture_compression_rgtc */ /* GL_EXT_texture_compression_rgtc */
#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
@ -2229,11 +2289,45 @@ struct FlextGL {
void(APIENTRY *FramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint); void(APIENTRY *FramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint);
/* GL_EXT_memory_object */
void(APIENTRY *BufferStorageMemEXT)(GLenum, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *CreateMemoryObjectsEXT)(GLsizei, GLuint *);
void(APIENTRY *DeleteMemoryObjectsEXT)(GLsizei, const GLuint *);
void(APIENTRY *GetMemoryObjectParameterivEXT)(GLuint, GLenum, GLint *);
void(APIENTRY *GetUnsignedBytei_vEXT)(GLenum, GLuint, GLubyte *);
void(APIENTRY *GetUnsignedBytevEXT)(GLenum, GLubyte *);
GLboolean(APIENTRY *IsMemoryObjectEXT)(GLuint);
void(APIENTRY *MemoryObjectParameterivEXT)(GLuint, GLenum, const GLint *);
void(APIENTRY *NamedBufferStorageMemEXT)(GLuint, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
/* GL_EXT_memory_object_fd */
void(APIENTRY *ImportMemoryFdEXT)(GLuint, GLuint64, GLenum, GLint);
/* GL_EXT_memory_object_win32 */
void(APIENTRY *ImportMemoryWin32HandleEXT)(GLuint, GLuint64, GLenum, void *);
void(APIENTRY *ImportMemoryWin32NameEXT)(GLuint, GLuint64, GLenum, const void *);
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
void(APIENTRY *MultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei); void(APIENTRY *MultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei);
void(APIENTRY *MultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
/* GL_EXT_multi_draw_indirect */
void(APIENTRY *MultiDrawArraysIndirectEXT)(GLenum, const void *, GLsizei, GLsizei);
void(APIENTRY *MultiDrawElementsIndirectEXT)(GLenum, GLenum, const void *, GLsizei, GLsizei);
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
void(APIENTRY *FramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); void(APIENTRY *FramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
@ -2254,6 +2348,25 @@ struct FlextGL {
void(APIENTRY *GetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *); void(APIENTRY *GetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *);
void(APIENTRY *ReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); void(APIENTRY *ReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *);
/* GL_EXT_semaphore */
void(APIENTRY *DeleteSemaphoresEXT)(GLsizei, const GLuint *);
void(APIENTRY *GenSemaphoresEXT)(GLsizei, GLuint *);
void(APIENTRY *GetSemaphoreParameterui64vEXT)(GLuint, GLenum, GLuint64 *);
GLboolean(APIENTRY *IsSemaphoreEXT)(GLuint);
void(APIENTRY *SemaphoreParameterui64vEXT)(GLuint, GLenum, const GLuint64 *);
void(APIENTRY *SignalSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
void(APIENTRY *WaitSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
/* GL_EXT_semaphore_fd */
void(APIENTRY *ImportSemaphoreFdEXT)(GLuint, GLenum, GLint);
/* GL_EXT_semaphore_win32 */
void(APIENTRY *ImportSemaphoreWin32HandleEXT)(GLuint, GLenum, void *);
void(APIENTRY *ImportSemaphoreWin32NameEXT)(GLuint, GLenum, const void *);
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
void(APIENTRY *ActiveShaderProgramEXT)(GLuint, GLuint); void(APIENTRY *ActiveShaderProgramEXT)(GLuint, GLuint);
@ -2604,11 +2717,45 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glFramebufferTextureEXT flextGL.FramebufferTextureEXT #define glFramebufferTextureEXT flextGL.FramebufferTextureEXT
/* GL_EXT_memory_object */
#define glBufferStorageMemEXT flextGL.BufferStorageMemEXT
#define glCreateMemoryObjectsEXT flextGL.CreateMemoryObjectsEXT
#define glDeleteMemoryObjectsEXT flextGL.DeleteMemoryObjectsEXT
#define glGetMemoryObjectParameterivEXT flextGL.GetMemoryObjectParameterivEXT
#define glGetUnsignedBytei_vEXT flextGL.GetUnsignedBytei_vEXT
#define glGetUnsignedBytevEXT flextGL.GetUnsignedBytevEXT
#define glIsMemoryObjectEXT flextGL.IsMemoryObjectEXT
#define glMemoryObjectParameterivEXT flextGL.MemoryObjectParameterivEXT
#define glNamedBufferStorageMemEXT flextGL.NamedBufferStorageMemEXT
#define glTexStorageMem2DEXT flextGL.TexStorageMem2DEXT
#define glTexStorageMem2DMultisampleEXT flextGL.TexStorageMem2DMultisampleEXT
#define glTexStorageMem3DEXT flextGL.TexStorageMem3DEXT
#define glTexStorageMem3DMultisampleEXT flextGL.TexStorageMem3DMultisampleEXT
#define glTextureStorageMem2DEXT flextGL.TextureStorageMem2DEXT
#define glTextureStorageMem2DMultisampleEXT flextGL.TextureStorageMem2DMultisampleEXT
#define glTextureStorageMem3DEXT flextGL.TextureStorageMem3DEXT
#define glTextureStorageMem3DMultisampleEXT flextGL.TextureStorageMem3DMultisampleEXT
/* GL_EXT_memory_object_fd */
#define glImportMemoryFdEXT flextGL.ImportMemoryFdEXT
/* GL_EXT_memory_object_win32 */
#define glImportMemoryWin32HandleEXT flextGL.ImportMemoryWin32HandleEXT
#define glImportMemoryWin32NameEXT flextGL.ImportMemoryWin32NameEXT
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
#define glMultiDrawArraysEXT flextGL.MultiDrawArraysEXT #define glMultiDrawArraysEXT flextGL.MultiDrawArraysEXT
#define glMultiDrawElementsEXT flextGL.MultiDrawElementsEXT #define glMultiDrawElementsEXT flextGL.MultiDrawElementsEXT
/* GL_EXT_multi_draw_indirect */
#define glMultiDrawArraysIndirectEXT flextGL.MultiDrawArraysIndirectEXT
#define glMultiDrawElementsIndirectEXT flextGL.MultiDrawElementsIndirectEXT
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
#define glFramebufferTexture2DMultisampleEXT flextGL.FramebufferTexture2DMultisampleEXT #define glFramebufferTexture2DMultisampleEXT flextGL.FramebufferTexture2DMultisampleEXT
@ -2629,6 +2776,25 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glGetnUniformivEXT flextGL.GetnUniformivEXT #define glGetnUniformivEXT flextGL.GetnUniformivEXT
#define glReadnPixelsEXT flextGL.ReadnPixelsEXT #define glReadnPixelsEXT flextGL.ReadnPixelsEXT
/* GL_EXT_semaphore */
#define glDeleteSemaphoresEXT flextGL.DeleteSemaphoresEXT
#define glGenSemaphoresEXT flextGL.GenSemaphoresEXT
#define glGetSemaphoreParameterui64vEXT flextGL.GetSemaphoreParameterui64vEXT
#define glIsSemaphoreEXT flextGL.IsSemaphoreEXT
#define glSemaphoreParameterui64vEXT flextGL.SemaphoreParameterui64vEXT
#define glSignalSemaphoreEXT flextGL.SignalSemaphoreEXT
#define glWaitSemaphoreEXT flextGL.WaitSemaphoreEXT
/* GL_EXT_semaphore_fd */
#define glImportSemaphoreFdEXT flextGL.ImportSemaphoreFdEXT
/* GL_EXT_semaphore_win32 */
#define glImportSemaphoreWin32HandleEXT flextGL.ImportSemaphoreWin32HandleEXT
#define glImportSemaphoreWin32NameEXT flextGL.ImportSemaphoreWin32NameEXT
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
#define glActiveShaderProgramEXT flextGL.ActiveShaderProgramEXT #define glActiveShaderProgramEXT flextGL.ActiveShaderProgramEXT

46
src/MagnumExternal/OpenGL/GLES3/flextGLPlatform.cpp vendored

@ -225,10 +225,40 @@ void flextGLInit(Magnum::GL::Context&) {
/* GL_EXT_geometry_shader */ /* GL_EXT_geometry_shader */
flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(loader.load("glFramebufferTextureEXT")); flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(loader.load("glFramebufferTextureEXT"));
/* GL_EXT_memory_object */
flextGL.BufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizeiptr, GLuint, GLuint64)>(loader.load("glBufferStorageMemEXT"));
flextGL.CreateMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glCreateMemoryObjectsEXT"));
flextGL.DeleteMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteMemoryObjectsEXT"));
flextGL.GetMemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint *)>(loader.load("glGetMemoryObjectParameterivEXT"));
flextGL.GetUnsignedBytei_vEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLubyte *)>(loader.load("glGetUnsignedBytei_vEXT"));
flextGL.GetUnsignedBytevEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLubyte *)>(loader.load("glGetUnsignedBytevEXT"));
flextGL.IsMemoryObjectEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsMemoryObjectEXT"));
flextGL.MemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLint *)>(loader.load("glMemoryObjectParameterivEXT"));
flextGL.NamedBufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizeiptr, GLuint, GLuint64)>(loader.load("glNamedBufferStorageMemEXT"));
flextGL.TexStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem2DEXT"));
flextGL.TexStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem2DMultisampleEXT"));
flextGL.TexStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem3DEXT"));
flextGL.TexStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem3DMultisampleEXT"));
flextGL.TextureStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DEXT"));
flextGL.TextureStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DMultisampleEXT"));
flextGL.TextureStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DEXT"));
flextGL.TextureStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DMultisampleEXT"));
/* GL_EXT_memory_object_fd */
flextGL.ImportMemoryFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, GLint)>(loader.load("glImportMemoryFdEXT"));
/* GL_EXT_memory_object_win32 */
flextGL.ImportMemoryWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, void *)>(loader.load("glImportMemoryWin32HandleEXT"));
flextGL.ImportMemoryWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, const void *)>(loader.load("glImportMemoryWin32NameEXT"));
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(loader.load("glMultiDrawArraysEXT")); flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(loader.load("glMultiDrawArraysEXT"));
flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsEXT")); flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsEXT"));
/* GL_EXT_multi_draw_indirect */
flextGL.MultiDrawArraysIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const void *, GLsizei, GLsizei)>(loader.load("glMultiDrawArraysIndirectEXT"));
flextGL.MultiDrawElementsIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const void *, GLsizei, GLsizei)>(loader.load("glMultiDrawElementsIndirectEXT"));
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(loader.load("glFramebufferTexture2DMultisampleEXT")); flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(loader.load("glFramebufferTexture2DMultisampleEXT"));
flextGL.RenderbufferStorageMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleEXT")); flextGL.RenderbufferStorageMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleEXT"));
@ -245,6 +275,22 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.GetnUniformivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLint, GLsizei, GLint *)>(loader.load("glGetnUniformivEXT")); flextGL.GetnUniformivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLint, GLsizei, GLint *)>(loader.load("glGetnUniformivEXT"));
flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(loader.load("glReadnPixelsEXT")); flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(loader.load("glReadnPixelsEXT"));
/* GL_EXT_semaphore */
flextGL.DeleteSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteSemaphoresEXT"));
flextGL.GenSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glGenSemaphoresEXT"));
flextGL.GetSemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLuint64 *)>(loader.load("glGetSemaphoreParameterui64vEXT"));
flextGL.IsSemaphoreEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsSemaphoreEXT"));
flextGL.SemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLuint64 *)>(loader.load("glSemaphoreParameterui64vEXT"));
flextGL.SignalSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glSignalSemaphoreEXT"));
flextGL.WaitSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glWaitSemaphoreEXT"));
/* GL_EXT_semaphore_fd */
flextGL.ImportSemaphoreFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint)>(loader.load("glImportSemaphoreFdEXT"));
/* GL_EXT_semaphore_win32 */
flextGL.ImportSemaphoreWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, void *)>(loader.load("glImportSemaphoreWin32HandleEXT"));
flextGL.ImportSemaphoreWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const void *)>(loader.load("glImportSemaphoreWin32NameEXT"));
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgramEXT")); flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgramEXT"));
flextGL.BindProgramPipelineEXT = reinterpret_cast<void(APIENTRY*)(GLuint)>(loader.load("glBindProgramPipelineEXT")); flextGL.BindProgramPipelineEXT = reinterpret_cast<void(APIENTRY*)(GLuint)>(loader.load("glBindProgramPipelineEXT"));

92
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformIOS.cpp vendored

@ -73,8 +73,30 @@
#undef glDrawRangeElementsBaseVertexEXT #undef glDrawRangeElementsBaseVertexEXT
#undef glMultiDrawElementsBaseVertexEXT #undef glMultiDrawElementsBaseVertexEXT
#undef glFramebufferTextureEXT #undef glFramebufferTextureEXT
#undef glBufferStorageMemEXT
#undef glCreateMemoryObjectsEXT
#undef glDeleteMemoryObjectsEXT
#undef glGetMemoryObjectParameterivEXT
#undef glGetUnsignedBytei_vEXT
#undef glGetUnsignedBytevEXT
#undef glIsMemoryObjectEXT
#undef glMemoryObjectParameterivEXT
#undef glNamedBufferStorageMemEXT
#undef glTexStorageMem2DEXT
#undef glTexStorageMem2DMultisampleEXT
#undef glTexStorageMem3DEXT
#undef glTexStorageMem3DMultisampleEXT
#undef glTextureStorageMem2DEXT
#undef glTextureStorageMem2DMultisampleEXT
#undef glTextureStorageMem3DEXT
#undef glTextureStorageMem3DMultisampleEXT
#undef glImportMemoryFdEXT
#undef glImportMemoryWin32HandleEXT
#undef glImportMemoryWin32NameEXT
#undef glMultiDrawArraysEXT #undef glMultiDrawArraysEXT
#undef glMultiDrawElementsEXT #undef glMultiDrawElementsEXT
#undef glMultiDrawArraysIndirectEXT
#undef glMultiDrawElementsIndirectEXT
#undef glFramebufferTexture2DMultisampleEXT #undef glFramebufferTexture2DMultisampleEXT
#undef glRenderbufferStorageMultisampleEXT #undef glRenderbufferStorageMultisampleEXT
#undef glPolygonOffsetClampEXT #undef glPolygonOffsetClampEXT
@ -83,6 +105,16 @@
#undef glGetnUniformfvEXT #undef glGetnUniformfvEXT
#undef glGetnUniformivEXT #undef glGetnUniformivEXT
#undef glReadnPixelsEXT #undef glReadnPixelsEXT
#undef glDeleteSemaphoresEXT
#undef glGenSemaphoresEXT
#undef glGetSemaphoreParameterui64vEXT
#undef glIsSemaphoreEXT
#undef glSemaphoreParameterui64vEXT
#undef glSignalSemaphoreEXT
#undef glWaitSemaphoreEXT
#undef glImportSemaphoreFdEXT
#undef glImportSemaphoreWin32HandleEXT
#undef glImportSemaphoreWin32NameEXT
#undef glActiveShaderProgramEXT #undef glActiveShaderProgramEXT
#undef glBindProgramPipelineEXT #undef glBindProgramPipelineEXT
#undef glCreateShaderProgramvEXT #undef glCreateShaderProgramvEXT
@ -281,12 +313,50 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(glFramebufferTextureEXT); flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(glFramebufferTextureEXT);
#endif #endif
/* GL_EXT_memory_object */
#if GL_EXT_memory_object
flextGL.BufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizeiptr, GLuint, GLuint64)>(glBufferStorageMemEXT);
flextGL.CreateMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(glCreateMemoryObjectsEXT);
flextGL.DeleteMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(glDeleteMemoryObjectsEXT);
flextGL.GetMemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint *)>(glGetMemoryObjectParameterivEXT);
flextGL.GetUnsignedBytei_vEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLubyte *)>(glGetUnsignedBytei_vEXT);
flextGL.GetUnsignedBytevEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLubyte *)>(glGetUnsignedBytevEXT);
flextGL.IsMemoryObjectEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(glIsMemoryObjectEXT);
flextGL.MemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLint *)>(glMemoryObjectParameterivEXT);
flextGL.NamedBufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizeiptr, GLuint, GLuint64)>(glNamedBufferStorageMemEXT);
flextGL.TexStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(glTexStorageMem2DEXT);
flextGL.TexStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(glTexStorageMem2DMultisampleEXT);
flextGL.TexStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(glTexStorageMem3DEXT);
flextGL.TexStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(glTexStorageMem3DMultisampleEXT);
flextGL.TextureStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(glTextureStorageMem2DEXT);
flextGL.TextureStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(glTextureStorageMem2DMultisampleEXT);
flextGL.TextureStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(glTextureStorageMem3DEXT);
flextGL.TextureStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(glTextureStorageMem3DMultisampleEXT);
#endif
/* GL_EXT_memory_object_fd */
#if GL_EXT_memory_object_fd
flextGL.ImportMemoryFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, GLint)>(glImportMemoryFdEXT);
#endif
/* GL_EXT_memory_object_win32 */
#if GL_EXT_memory_object_win32
flextGL.ImportMemoryWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, void *)>(glImportMemoryWin32HandleEXT);
flextGL.ImportMemoryWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, const void *)>(glImportMemoryWin32NameEXT);
#endif
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
#if GL_EXT_multi_draw_arrays #if GL_EXT_multi_draw_arrays
flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(glMultiDrawArraysEXT); flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(glMultiDrawArraysEXT);
flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(glMultiDrawElementsEXT); flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(glMultiDrawElementsEXT);
#endif #endif
/* GL_EXT_multi_draw_indirect */
#if GL_EXT_multi_draw_indirect
flextGL.MultiDrawArraysIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const void *, GLsizei, GLsizei)>(glMultiDrawArraysIndirectEXT);
flextGL.MultiDrawElementsIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const void *, GLsizei, GLsizei)>(glMultiDrawElementsIndirectEXT);
#endif
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
#if GL_EXT_multisampled_render_to_texture #if GL_EXT_multisampled_render_to_texture
flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(glFramebufferTexture2DMultisampleEXT); flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(glFramebufferTexture2DMultisampleEXT);
@ -311,6 +381,28 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(glReadnPixelsEXT); flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(glReadnPixelsEXT);
#endif #endif
/* GL_EXT_semaphore */
#if GL_EXT_semaphore
flextGL.DeleteSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(glDeleteSemaphoresEXT);
flextGL.GenSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(glGenSemaphoresEXT);
flextGL.GetSemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLuint64 *)>(glGetSemaphoreParameterui64vEXT);
flextGL.IsSemaphoreEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(glIsSemaphoreEXT);
flextGL.SemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLuint64 *)>(glSemaphoreParameterui64vEXT);
flextGL.SignalSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(glSignalSemaphoreEXT);
flextGL.WaitSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(glWaitSemaphoreEXT);
#endif
/* GL_EXT_semaphore_fd */
#if GL_EXT_semaphore_fd
flextGL.ImportSemaphoreFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint)>(glImportSemaphoreFdEXT);
#endif
/* GL_EXT_semaphore_win32 */
#if GL_EXT_semaphore_win32
flextGL.ImportSemaphoreWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, void *)>(glImportSemaphoreWin32HandleEXT);
flextGL.ImportSemaphoreWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const void *)>(glImportSemaphoreWin32NameEXT);
#endif
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
#if GL_EXT_separate_shader_objects #if GL_EXT_separate_shader_objects
flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(glActiveShaderProgramEXT); flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(glActiveShaderProgramEXT);

46
src/MagnumExternal/OpenGL/GLES3/flextGLPlatformWindowsDesktop.cpp vendored

@ -427,10 +427,40 @@ void flextGLInit(Magnum::GL::Context&) {
/* GL_EXT_geometry_shader */ /* GL_EXT_geometry_shader */
flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(loader.load("glFramebufferTextureEXT")); flextGL.FramebufferTextureEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLuint, GLint)>(loader.load("glFramebufferTextureEXT"));
/* GL_EXT_memory_object */
flextGL.BufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizeiptr, GLuint, GLuint64)>(loader.load("glBufferStorageMemEXT"));
flextGL.CreateMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glCreateMemoryObjectsEXT"));
flextGL.DeleteMemoryObjectsEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteMemoryObjectsEXT"));
flextGL.GetMemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint *)>(loader.load("glGetMemoryObjectParameterivEXT"));
flextGL.GetUnsignedBytei_vEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLuint, GLubyte *)>(loader.load("glGetUnsignedBytei_vEXT"));
flextGL.GetUnsignedBytevEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLubyte *)>(loader.load("glGetUnsignedBytevEXT"));
flextGL.IsMemoryObjectEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsMemoryObjectEXT"));
flextGL.MemoryObjectParameterivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLint *)>(loader.load("glMemoryObjectParameterivEXT"));
flextGL.NamedBufferStorageMemEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizeiptr, GLuint, GLuint64)>(loader.load("glNamedBufferStorageMemEXT"));
flextGL.TexStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem2DEXT"));
flextGL.TexStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem2DMultisampleEXT"));
flextGL.TexStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTexStorageMem3DEXT"));
flextGL.TexStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTexStorageMem3DMultisampleEXT"));
flextGL.TextureStorageMem2DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DEXT"));
flextGL.TextureStorageMem2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem2DMultisampleEXT"));
flextGL.TextureStorageMem3DEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DEXT"));
flextGL.TextureStorageMem3DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64)>(loader.load("glTextureStorageMem3DMultisampleEXT"));
/* GL_EXT_memory_object_fd */
flextGL.ImportMemoryFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, GLint)>(loader.load("glImportMemoryFdEXT"));
/* GL_EXT_memory_object_win32 */
flextGL.ImportMemoryWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, void *)>(loader.load("glImportMemoryWin32HandleEXT"));
flextGL.ImportMemoryWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint64, GLenum, const void *)>(loader.load("glImportMemoryWin32NameEXT"));
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(loader.load("glMultiDrawArraysEXT")); flextGL.MultiDrawArraysEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLint *, const GLsizei *, GLsizei)>(loader.load("glMultiDrawArraysEXT"));
flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsEXT")); flextGL.MultiDrawElementsEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei)>(loader.load("glMultiDrawElementsEXT"));
/* GL_EXT_multi_draw_indirect */
flextGL.MultiDrawArraysIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, const void *, GLsizei, GLsizei)>(loader.load("glMultiDrawArraysIndirectEXT"));
flextGL.MultiDrawElementsIndirectEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, const void *, GLsizei, GLsizei)>(loader.load("glMultiDrawElementsIndirectEXT"));
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(loader.load("glFramebufferTexture2DMultisampleEXT")); flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei)>(loader.load("glFramebufferTexture2DMultisampleEXT"));
flextGL.RenderbufferStorageMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleEXT")); flextGL.RenderbufferStorageMultisampleEXT = reinterpret_cast<void(APIENTRY*)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)>(loader.load("glRenderbufferStorageMultisampleEXT"));
@ -447,6 +477,22 @@ void flextGLInit(Magnum::GL::Context&) {
flextGL.GetnUniformivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLint, GLsizei, GLint *)>(loader.load("glGetnUniformivEXT")); flextGL.GetnUniformivEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLint, GLsizei, GLint *)>(loader.load("glGetnUniformivEXT"));
flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(loader.load("glReadnPixelsEXT")); flextGL.ReadnPixelsEXT = reinterpret_cast<void(APIENTRY*)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *)>(loader.load("glReadnPixelsEXT"));
/* GL_EXT_semaphore */
flextGL.DeleteSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, const GLuint *)>(loader.load("glDeleteSemaphoresEXT"));
flextGL.GenSemaphoresEXT = reinterpret_cast<void(APIENTRY*)(GLsizei, GLuint *)>(loader.load("glGenSemaphoresEXT"));
flextGL.GetSemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLuint64 *)>(loader.load("glGetSemaphoreParameterui64vEXT"));
flextGL.IsSemaphoreEXT = reinterpret_cast<GLboolean(APIENTRY*)(GLuint)>(loader.load("glIsSemaphoreEXT"));
flextGL.SemaphoreParameterui64vEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const GLuint64 *)>(loader.load("glSemaphoreParameterui64vEXT"));
flextGL.SignalSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glSignalSemaphoreEXT"));
flextGL.WaitSemaphoreEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *)>(loader.load("glWaitSemaphoreEXT"));
/* GL_EXT_semaphore_fd */
flextGL.ImportSemaphoreFdEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, GLint)>(loader.load("glImportSemaphoreFdEXT"));
/* GL_EXT_semaphore_win32 */
flextGL.ImportSemaphoreWin32HandleEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, void *)>(loader.load("glImportSemaphoreWin32HandleEXT"));
flextGL.ImportSemaphoreWin32NameEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLenum, const void *)>(loader.load("glImportSemaphoreWin32NameEXT"));
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgramEXT")); flextGL.ActiveShaderProgramEXT = reinterpret_cast<void(APIENTRY*)(GLuint, GLuint)>(loader.load("glActiveShaderProgramEXT"));
flextGL.BindProgramPipelineEXT = reinterpret_cast<void(APIENTRY*)(GLuint)>(loader.load("glBindProgramPipelineEXT")); flextGL.BindProgramPipelineEXT = reinterpret_cast<void(APIENTRY*)(GLuint)>(loader.load("glBindProgramPipelineEXT"));

166
src/MagnumExternal/OpenGL/GLES3/flextGLWindowsDesktop.h vendored

@ -1565,6 +1565,36 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
/* GL_EXT_memory_object */
#define GL_TEXTURE_TILING_EXT 0x9580
#define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581
#define GL_PROTECTED_MEMORY_OBJECT_EXT 0x959B
#define GL_NUM_TILING_TYPES_EXT 0x9582
#define GL_TILING_TYPES_EXT 0x9583
#define GL_OPTIMAL_TILING_EXT 0x9584
#define GL_LINEAR_TILING_EXT 0x9585
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
/* GL_EXT_memory_object_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_memory_object_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_TILEPOOL_EXT 0x9589
#define GL_HANDLE_TYPE_D3D12_RESOURCE_EXT 0x958A
#define GL_HANDLE_TYPE_D3D11_IMAGE_EXT 0x958B
#define GL_HANDLE_TYPE_D3D11_IMAGE_KMT_EXT 0x958C
/* GL_EXT_texture_norm16 */ /* GL_EXT_texture_norm16 */
#define GL_R16_EXT 0x822A #define GL_R16_EXT 0x822A
@ -1624,6 +1654,36 @@ typedef void (APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLen
#define GL_CLIP_DISTANCE6_EXT 0x3006 #define GL_CLIP_DISTANCE6_EXT 0x3006
#define GL_CLIP_DISTANCE7_EXT 0x3007 #define GL_CLIP_DISTANCE7_EXT 0x3007
/* GL_EXT_semaphore */
#define GL_NUM_DEVICE_UUIDS_EXT 0x9596
#define GL_DEVICE_UUID_EXT 0x9597
#define GL_DRIVER_UUID_EXT 0x9598
#define GL_UUID_SIZE_EXT 16
#define GL_LAYOUT_GENERAL_EXT 0x958D
#define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E
#define GL_LAYOUT_DEPTH_STENCIL_ATTACHMENT_EXT 0x958F
#define GL_LAYOUT_DEPTH_STENCIL_READ_ONLY_EXT 0x9590
#define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591
#define GL_LAYOUT_TRANSFER_SRC_EXT 0x9592
#define GL_LAYOUT_TRANSFER_DST_EXT 0x9593
#define GL_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_EXT 0x9530
#define GL_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_EXT 0x9531
/* GL_EXT_semaphore_fd */
#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586
/* GL_EXT_semaphore_win32 */
#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587
#define GL_HANDLE_TYPE_OPAQUE_WIN32_KMT_EXT 0x9588
#define GL_DEVICE_LUID_EXT 0x9599
#define GL_DEVICE_NODE_MASK_EXT 0x959A
#define GL_LUID_SIZE_EXT 8
#define GL_HANDLE_TYPE_D3D12_FENCE_EXT 0x9594
#define GL_D3D12_FENCE_VALUE_EXT 0x9595
/* GL_EXT_texture_compression_rgtc */ /* GL_EXT_texture_compression_rgtc */
#define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB #define GL_COMPRESSED_RED_RGTC1_EXT 0x8DBB
@ -2233,11 +2293,45 @@ struct FlextGL {
void(APIENTRY *FramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint); void(APIENTRY *FramebufferTextureEXT)(GLenum, GLenum, GLuint, GLint);
/* GL_EXT_memory_object */
void(APIENTRY *BufferStorageMemEXT)(GLenum, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *CreateMemoryObjectsEXT)(GLsizei, GLuint *);
void(APIENTRY *DeleteMemoryObjectsEXT)(GLsizei, const GLuint *);
void(APIENTRY *GetMemoryObjectParameterivEXT)(GLuint, GLenum, GLint *);
void(APIENTRY *GetUnsignedBytei_vEXT)(GLenum, GLuint, GLubyte *);
void(APIENTRY *GetUnsignedBytevEXT)(GLenum, GLubyte *);
GLboolean(APIENTRY *IsMemoryObjectEXT)(GLuint);
void(APIENTRY *MemoryObjectParameterivEXT)(GLuint, GLenum, const GLint *);
void(APIENTRY *NamedBufferStorageMemEXT)(GLuint, GLsizeiptr, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem2DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TexStorageMem3DMultisampleEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem2DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLuint, GLuint64);
void(APIENTRY *TextureStorageMem3DMultisampleEXT)(GLuint, GLsizei, GLenum, GLsizei, GLsizei, GLsizei, GLboolean, GLuint, GLuint64);
/* GL_EXT_memory_object_fd */
void(APIENTRY *ImportMemoryFdEXT)(GLuint, GLuint64, GLenum, GLint);
/* GL_EXT_memory_object_win32 */
void(APIENTRY *ImportMemoryWin32HandleEXT)(GLuint, GLuint64, GLenum, void *);
void(APIENTRY *ImportMemoryWin32NameEXT)(GLuint, GLuint64, GLenum, const void *);
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
void(APIENTRY *MultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei); void(APIENTRY *MultiDrawArraysEXT)(GLenum, const GLint *, const GLsizei *, GLsizei);
void(APIENTRY *MultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei); void(APIENTRY *MultiDrawElementsEXT)(GLenum, const GLsizei *, GLenum, const void *const*, GLsizei);
/* GL_EXT_multi_draw_indirect */
void(APIENTRY *MultiDrawArraysIndirectEXT)(GLenum, const void *, GLsizei, GLsizei);
void(APIENTRY *MultiDrawElementsIndirectEXT)(GLenum, GLenum, const void *, GLsizei, GLsizei);
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
void(APIENTRY *FramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); void(APIENTRY *FramebufferTexture2DMultisampleEXT)(GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
@ -2258,6 +2352,25 @@ struct FlextGL {
void(APIENTRY *GetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *); void(APIENTRY *GetnUniformivEXT)(GLuint, GLint, GLsizei, GLint *);
void(APIENTRY *ReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *); void(APIENTRY *ReadnPixelsEXT)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, void *);
/* GL_EXT_semaphore */
void(APIENTRY *DeleteSemaphoresEXT)(GLsizei, const GLuint *);
void(APIENTRY *GenSemaphoresEXT)(GLsizei, GLuint *);
void(APIENTRY *GetSemaphoreParameterui64vEXT)(GLuint, GLenum, GLuint64 *);
GLboolean(APIENTRY *IsSemaphoreEXT)(GLuint);
void(APIENTRY *SemaphoreParameterui64vEXT)(GLuint, GLenum, const GLuint64 *);
void(APIENTRY *SignalSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
void(APIENTRY *WaitSemaphoreEXT)(GLuint, GLuint, const GLuint *, GLuint, const GLuint *, const GLenum *);
/* GL_EXT_semaphore_fd */
void(APIENTRY *ImportSemaphoreFdEXT)(GLuint, GLenum, GLint);
/* GL_EXT_semaphore_win32 */
void(APIENTRY *ImportSemaphoreWin32HandleEXT)(GLuint, GLenum, void *);
void(APIENTRY *ImportSemaphoreWin32NameEXT)(GLuint, GLenum, const void *);
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
void(APIENTRY *ActiveShaderProgramEXT)(GLuint, GLuint); void(APIENTRY *ActiveShaderProgramEXT)(GLuint, GLuint);
@ -2812,11 +2925,45 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glFramebufferTextureEXT flextGL.FramebufferTextureEXT #define glFramebufferTextureEXT flextGL.FramebufferTextureEXT
/* GL_EXT_memory_object */
#define glBufferStorageMemEXT flextGL.BufferStorageMemEXT
#define glCreateMemoryObjectsEXT flextGL.CreateMemoryObjectsEXT
#define glDeleteMemoryObjectsEXT flextGL.DeleteMemoryObjectsEXT
#define glGetMemoryObjectParameterivEXT flextGL.GetMemoryObjectParameterivEXT
#define glGetUnsignedBytei_vEXT flextGL.GetUnsignedBytei_vEXT
#define glGetUnsignedBytevEXT flextGL.GetUnsignedBytevEXT
#define glIsMemoryObjectEXT flextGL.IsMemoryObjectEXT
#define glMemoryObjectParameterivEXT flextGL.MemoryObjectParameterivEXT
#define glNamedBufferStorageMemEXT flextGL.NamedBufferStorageMemEXT
#define glTexStorageMem2DEXT flextGL.TexStorageMem2DEXT
#define glTexStorageMem2DMultisampleEXT flextGL.TexStorageMem2DMultisampleEXT
#define glTexStorageMem3DEXT flextGL.TexStorageMem3DEXT
#define glTexStorageMem3DMultisampleEXT flextGL.TexStorageMem3DMultisampleEXT
#define glTextureStorageMem2DEXT flextGL.TextureStorageMem2DEXT
#define glTextureStorageMem2DMultisampleEXT flextGL.TextureStorageMem2DMultisampleEXT
#define glTextureStorageMem3DEXT flextGL.TextureStorageMem3DEXT
#define glTextureStorageMem3DMultisampleEXT flextGL.TextureStorageMem3DMultisampleEXT
/* GL_EXT_memory_object_fd */
#define glImportMemoryFdEXT flextGL.ImportMemoryFdEXT
/* GL_EXT_memory_object_win32 */
#define glImportMemoryWin32HandleEXT flextGL.ImportMemoryWin32HandleEXT
#define glImportMemoryWin32NameEXT flextGL.ImportMemoryWin32NameEXT
/* GL_EXT_multi_draw_arrays */ /* GL_EXT_multi_draw_arrays */
#define glMultiDrawArraysEXT flextGL.MultiDrawArraysEXT #define glMultiDrawArraysEXT flextGL.MultiDrawArraysEXT
#define glMultiDrawElementsEXT flextGL.MultiDrawElementsEXT #define glMultiDrawElementsEXT flextGL.MultiDrawElementsEXT
/* GL_EXT_multi_draw_indirect */
#define glMultiDrawArraysIndirectEXT flextGL.MultiDrawArraysIndirectEXT
#define glMultiDrawElementsIndirectEXT flextGL.MultiDrawElementsIndirectEXT
/* GL_EXT_multisampled_render_to_texture */ /* GL_EXT_multisampled_render_to_texture */
#define glFramebufferTexture2DMultisampleEXT flextGL.FramebufferTexture2DMultisampleEXT #define glFramebufferTexture2DMultisampleEXT flextGL.FramebufferTexture2DMultisampleEXT
@ -2837,6 +2984,25 @@ extern FLEXTGL_EXPORT FlextGL flextGL;
#define glGetnUniformivEXT flextGL.GetnUniformivEXT #define glGetnUniformivEXT flextGL.GetnUniformivEXT
#define glReadnPixelsEXT flextGL.ReadnPixelsEXT #define glReadnPixelsEXT flextGL.ReadnPixelsEXT
/* GL_EXT_semaphore */
#define glDeleteSemaphoresEXT flextGL.DeleteSemaphoresEXT
#define glGenSemaphoresEXT flextGL.GenSemaphoresEXT
#define glGetSemaphoreParameterui64vEXT flextGL.GetSemaphoreParameterui64vEXT
#define glIsSemaphoreEXT flextGL.IsSemaphoreEXT
#define glSemaphoreParameterui64vEXT flextGL.SemaphoreParameterui64vEXT
#define glSignalSemaphoreEXT flextGL.SignalSemaphoreEXT
#define glWaitSemaphoreEXT flextGL.WaitSemaphoreEXT
/* GL_EXT_semaphore_fd */
#define glImportSemaphoreFdEXT flextGL.ImportSemaphoreFdEXT
/* GL_EXT_semaphore_win32 */
#define glImportSemaphoreWin32HandleEXT flextGL.ImportSemaphoreWin32HandleEXT
#define glImportSemaphoreWin32NameEXT flextGL.ImportSemaphoreWin32NameEXT
/* GL_EXT_separate_shader_objects */ /* GL_EXT_separate_shader_objects */
#define glActiveShaderProgramEXT flextGL.ActiveShaderProgramEXT #define glActiveShaderProgramEXT flextGL.ActiveShaderProgramEXT

Loading…
Cancel
Save