Add an auto-generated dispatch table for GL bindings.
This will more easily allow us to extend our implementation to make a
NULL or "stub" set of bindings. It also exposes a lot more function
permutations via extension variations.
It might improve the loading speed for bindings obtained via
extensions. Instead of generating a list every time an extension is
checked, we use a single std::set for a fast query. However because
more extensions are checked for more entry points, it might not make
a huge difference.
This also fixes an issue where the "real" ANGLE GL headers were being
propagated to the entry point dispatch table definitions, instead of
being in a totally isolated file. This patch adds the missing typedefs
to our proxy headers.
It also fixes the naming of a few entry points which was inconsistent
with the spec. It also makes an XML adjustment to GL_NV_path_rendering
to accomodate a hole in the spec where glLoadMatrixfEXT was not ever
defined in OpenGL ES. A spec oddity with the TexStorage extension is
not resolved - in this case, some methods are only exposed if other
extensions are present, but this information is missing from gl.xml.
BUG=angleproject:2188
Change-Id: I0fd61dd32de6fadd55fa6bd79295833392d51104
Reviewed-on: https://chromium-review.googlesource.com/726949
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
diff --git a/src/libANGLE/Version.h b/src/libANGLE/Version.h
index 4c9730c..7bd4184 100644
--- a/src/libANGLE/Version.h
+++ b/src/libANGLE/Version.h
@@ -9,18 +9,16 @@
#ifndef LIBANGLE_VERSION_H_
#define LIBANGLE_VERSION_H_
-#include <angle_gl.h>
-
namespace gl
{
struct Version
{
constexpr Version();
- constexpr Version(GLuint major, GLuint minor);
+ constexpr Version(unsigned int major, unsigned int minor);
- GLuint major;
- GLuint minor;
+ unsigned int major;
+ unsigned int minor;
};
bool operator==(const Version &a, const Version &b);
diff --git a/src/libANGLE/Version.inl b/src/libANGLE/Version.inl
index 4952097..c980548 100644
--- a/src/libANGLE/Version.inl
+++ b/src/libANGLE/Version.inl
@@ -20,7 +20,7 @@
#undef major
#undef minor
-constexpr Version::Version(GLuint major_, GLuint minor_)
+constexpr Version::Version(unsigned int major_, unsigned int minor_)
: major(major_),
minor(minor_)
{
@@ -56,4 +56,4 @@
return std::tie(a.major, a.minor) > std::tie(b.major, b.minor);
}
-}
+} // namespace gl
diff --git a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
new file mode 100644
index 0000000..418f3a4
--- /dev/null
+++ b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.cpp
@@ -0,0 +1,2733 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by generate_gl_dispatch_table.py using data from gl_bindings_data.json and gl.xml.
+//
+// Copyright 2017 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// DispatchTableGL_autogen.cpp:
+// Initialize the native bindings for ANGLE's OpenGL back-end.
+
+#include "libANGLE/renderer/gl/DispatchTableGL_autogen.h"
+
+#include "libANGLE/Version.h"
+#include "libANGLE/renderer/gl/FunctionsGL.h"
+
+// Check for nullptr so extensions do not overwrite core imports.
+#define ASSIGN(NAME, FP) \
+ if (!FP) \
+ *reinterpret_cast<void **>(&FP) = loadProcAddress(NAME)
+
+namespace rx
+{
+
+void DispatchTableGL::initProcsDesktopGL(const gl::Version &version,
+ const std::set<std::string> &extensions)
+{
+ if (version >= gl::Version(1, 0))
+ {
+ ASSIGN("glBlendFunc", blendFunc);
+ ASSIGN("glClear", clear);
+ ASSIGN("glClearColor", clearColor);
+ ASSIGN("glClearDepth", clearDepth);
+ ASSIGN("glClearStencil", clearStencil);
+ ASSIGN("glColorMask", colorMask);
+ ASSIGN("glCullFace", cullFace);
+ ASSIGN("glDepthFunc", depthFunc);
+ ASSIGN("glDepthMask", depthMask);
+ ASSIGN("glDepthRange", depthRange);
+ ASSIGN("glDisable", disable);
+ ASSIGN("glDrawBuffer", drawBuffer);
+ ASSIGN("glEnable", enable);
+ ASSIGN("glFinish", finish);
+ ASSIGN("glFlush", flush);
+ ASSIGN("glFrontFace", frontFace);
+ ASSIGN("glGetBooleanv", getBooleanv);
+ ASSIGN("glGetDoublev", getDoublev);
+ ASSIGN("glGetError", getError);
+ ASSIGN("glGetFloatv", getFloatv);
+ ASSIGN("glGetIntegerv", getIntegerv);
+ ASSIGN("glGetString", getString);
+ ASSIGN("glGetTexImage", getTexImage);
+ ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
+ ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
+ ASSIGN("glGetTexParameterfv", getTexParameterfv);
+ ASSIGN("glGetTexParameteriv", getTexParameteriv);
+ ASSIGN("glHint", hint);
+ ASSIGN("glIsEnabled", isEnabled);
+ ASSIGN("glLineWidth", lineWidth);
+ ASSIGN("glLogicOp", logicOp);
+ ASSIGN("glPixelStoref", pixelStoref);
+ ASSIGN("glPixelStorei", pixelStorei);
+ ASSIGN("glPointSize", pointSize);
+ ASSIGN("glPolygonMode", polygonMode);
+ ASSIGN("glReadBuffer", readBuffer);
+ ASSIGN("glReadPixels", readPixels);
+ ASSIGN("glScissor", scissor);
+ ASSIGN("glStencilFunc", stencilFunc);
+ ASSIGN("glStencilMask", stencilMask);
+ ASSIGN("glStencilOp", stencilOp);
+ ASSIGN("glTexImage1D", texImage1D);
+ ASSIGN("glTexImage2D", texImage2D);
+ ASSIGN("glTexParameterf", texParameterf);
+ ASSIGN("glTexParameterfv", texParameterfv);
+ ASSIGN("glTexParameteri", texParameteri);
+ ASSIGN("glTexParameteriv", texParameteriv);
+ ASSIGN("glViewport", viewport);
+ }
+
+ if (version >= gl::Version(1, 1))
+ {
+ ASSIGN("glBindTexture", bindTexture);
+ ASSIGN("glCopyTexImage1D", copyTexImage1D);
+ ASSIGN("glCopyTexImage2D", copyTexImage2D);
+ ASSIGN("glCopyTexSubImage1D", copyTexSubImage1D);
+ ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
+ ASSIGN("glDeleteTextures", deleteTextures);
+ ASSIGN("glDrawArrays", drawArrays);
+ ASSIGN("glDrawElements", drawElements);
+ ASSIGN("glGenTextures", genTextures);
+ ASSIGN("glIsTexture", isTexture);
+ ASSIGN("glPolygonOffset", polygonOffset);
+ ASSIGN("glTexSubImage1D", texSubImage1D);
+ ASSIGN("glTexSubImage2D", texSubImage2D);
+ }
+
+ if (version >= gl::Version(1, 2))
+ {
+ ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
+ ASSIGN("glDrawRangeElements", drawRangeElements);
+ ASSIGN("glTexImage3D", texImage3D);
+ ASSIGN("glTexSubImage3D", texSubImage3D);
+ }
+
+ if (version >= gl::Version(1, 3))
+ {
+ ASSIGN("glActiveTexture", activeTexture);
+ ASSIGN("glCompressedTexImage1D", compressedTexImage1D);
+ ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
+ ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
+ ASSIGN("glCompressedTexSubImage1D", compressedTexSubImage1D);
+ ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
+ ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
+ ASSIGN("glGetCompressedTexImage", getCompressedTexImage);
+ ASSIGN("glSampleCoverage", sampleCoverage);
+ }
+
+ if (version >= gl::Version(1, 4))
+ {
+ ASSIGN("glBlendColor", blendColor);
+ ASSIGN("glBlendEquation", blendEquation);
+ ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
+ ASSIGN("glMultiDrawArrays", multiDrawArrays);
+ ASSIGN("glMultiDrawElements", multiDrawElements);
+ ASSIGN("glPointParameterf", pointParameterf);
+ ASSIGN("glPointParameterfv", pointParameterfv);
+ ASSIGN("glPointParameteri", pointParameteri);
+ ASSIGN("glPointParameteriv", pointParameteriv);
+ }
+
+ if (version >= gl::Version(1, 5))
+ {
+ ASSIGN("glBeginQuery", beginQuery);
+ ASSIGN("glBindBuffer", bindBuffer);
+ ASSIGN("glBufferData", bufferData);
+ ASSIGN("glBufferSubData", bufferSubData);
+ ASSIGN("glDeleteBuffers", deleteBuffers);
+ ASSIGN("glDeleteQueries", deleteQueries);
+ ASSIGN("glEndQuery", endQuery);
+ ASSIGN("glGenBuffers", genBuffers);
+ ASSIGN("glGenQueries", genQueries);
+ ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
+ ASSIGN("glGetBufferPointerv", getBufferPointerv);
+ ASSIGN("glGetBufferSubData", getBufferSubData);
+ ASSIGN("glGetQueryObjectiv", getQueryObjectiv);
+ ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
+ ASSIGN("glGetQueryiv", getQueryiv);
+ ASSIGN("glIsBuffer", isBuffer);
+ ASSIGN("glIsQuery", isQuery);
+ ASSIGN("glMapBuffer", mapBuffer);
+ ASSIGN("glUnmapBuffer", unmapBuffer);
+ }
+
+ if (version >= gl::Version(2, 0))
+ {
+ ASSIGN("glAttachShader", attachShader);
+ ASSIGN("glBindAttribLocation", bindAttribLocation);
+ ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
+ ASSIGN("glCompileShader", compileShader);
+ ASSIGN("glCreateProgram", createProgram);
+ ASSIGN("glCreateShader", createShader);
+ ASSIGN("glDeleteProgram", deleteProgram);
+ ASSIGN("glDeleteShader", deleteShader);
+ ASSIGN("glDetachShader", detachShader);
+ ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
+ ASSIGN("glDrawBuffers", drawBuffers);
+ ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
+ ASSIGN("glGetActiveAttrib", getActiveAttrib);
+ ASSIGN("glGetActiveUniform", getActiveUniform);
+ ASSIGN("glGetAttachedShaders", getAttachedShaders);
+ ASSIGN("glGetAttribLocation", getAttribLocation);
+ ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
+ ASSIGN("glGetProgramiv", getProgramiv);
+ ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
+ ASSIGN("glGetShaderSource", getShaderSource);
+ ASSIGN("glGetShaderiv", getShaderiv);
+ ASSIGN("glGetUniformLocation", getUniformLocation);
+ ASSIGN("glGetUniformfv", getUniformfv);
+ ASSIGN("glGetUniformiv", getUniformiv);
+ ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
+ ASSIGN("glGetVertexAttribdv", getVertexAttribdv);
+ ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
+ ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
+ ASSIGN("glIsProgram", isProgram);
+ ASSIGN("glIsShader", isShader);
+ ASSIGN("glLinkProgram", linkProgram);
+ ASSIGN("glShaderSource", shaderSource);
+ ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
+ ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
+ ASSIGN("glStencilOpSeparate", stencilOpSeparate);
+ ASSIGN("glUniform1f", uniform1f);
+ ASSIGN("glUniform1fv", uniform1fv);
+ ASSIGN("glUniform1i", uniform1i);
+ ASSIGN("glUniform1iv", uniform1iv);
+ ASSIGN("glUniform2f", uniform2f);
+ ASSIGN("glUniform2fv", uniform2fv);
+ ASSIGN("glUniform2i", uniform2i);
+ ASSIGN("glUniform2iv", uniform2iv);
+ ASSIGN("glUniform3f", uniform3f);
+ ASSIGN("glUniform3fv", uniform3fv);
+ ASSIGN("glUniform3i", uniform3i);
+ ASSIGN("glUniform3iv", uniform3iv);
+ ASSIGN("glUniform4f", uniform4f);
+ ASSIGN("glUniform4fv", uniform4fv);
+ ASSIGN("glUniform4i", uniform4i);
+ ASSIGN("glUniform4iv", uniform4iv);
+ ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
+ ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
+ ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
+ ASSIGN("glUseProgram", useProgram);
+ ASSIGN("glValidateProgram", validateProgram);
+ ASSIGN("glVertexAttrib1d", vertexAttrib1d);
+ ASSIGN("glVertexAttrib1dv", vertexAttrib1dv);
+ ASSIGN("glVertexAttrib1f", vertexAttrib1f);
+ ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
+ ASSIGN("glVertexAttrib1s", vertexAttrib1s);
+ ASSIGN("glVertexAttrib1sv", vertexAttrib1sv);
+ ASSIGN("glVertexAttrib2d", vertexAttrib2d);
+ ASSIGN("glVertexAttrib2dv", vertexAttrib2dv);
+ ASSIGN("glVertexAttrib2f", vertexAttrib2f);
+ ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
+ ASSIGN("glVertexAttrib2s", vertexAttrib2s);
+ ASSIGN("glVertexAttrib2sv", vertexAttrib2sv);
+ ASSIGN("glVertexAttrib3d", vertexAttrib3d);
+ ASSIGN("glVertexAttrib3dv", vertexAttrib3dv);
+ ASSIGN("glVertexAttrib3f", vertexAttrib3f);
+ ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
+ ASSIGN("glVertexAttrib3s", vertexAttrib3s);
+ ASSIGN("glVertexAttrib3sv", vertexAttrib3sv);
+ ASSIGN("glVertexAttrib4Nbv", vertexAttrib4Nbv);
+ ASSIGN("glVertexAttrib4Niv", vertexAttrib4Niv);
+ ASSIGN("glVertexAttrib4Nsv", vertexAttrib4Nsv);
+ ASSIGN("glVertexAttrib4Nub", vertexAttrib4Nub);
+ ASSIGN("glVertexAttrib4Nubv", vertexAttrib4Nubv);
+ ASSIGN("glVertexAttrib4Nuiv", vertexAttrib4Nuiv);
+ ASSIGN("glVertexAttrib4Nusv", vertexAttrib4Nusv);
+ ASSIGN("glVertexAttrib4bv", vertexAttrib4bv);
+ ASSIGN("glVertexAttrib4d", vertexAttrib4d);
+ ASSIGN("glVertexAttrib4dv", vertexAttrib4dv);
+ ASSIGN("glVertexAttrib4f", vertexAttrib4f);
+ ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
+ ASSIGN("glVertexAttrib4iv", vertexAttrib4iv);
+ ASSIGN("glVertexAttrib4s", vertexAttrib4s);
+ ASSIGN("glVertexAttrib4sv", vertexAttrib4sv);
+ ASSIGN("glVertexAttrib4ubv", vertexAttrib4ubv);
+ ASSIGN("glVertexAttrib4uiv", vertexAttrib4uiv);
+ ASSIGN("glVertexAttrib4usv", vertexAttrib4usv);
+ ASSIGN("glVertexAttribPointer", vertexAttribPointer);
+ }
+
+ if (version >= gl::Version(2, 1))
+ {
+ ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
+ ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
+ ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
+ ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
+ ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
+ ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
+ }
+
+ if (version >= gl::Version(3, 0))
+ {
+ ASSIGN("glBeginConditionalRender", beginConditionalRender);
+ ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
+ ASSIGN("glBindBufferBase", bindBufferBase);
+ ASSIGN("glBindBufferRange", bindBufferRange);
+ ASSIGN("glBindFragDataLocation", bindFragDataLocation);
+ ASSIGN("glBindFramebuffer", bindFramebuffer);
+ ASSIGN("glBindRenderbuffer", bindRenderbuffer);
+ ASSIGN("glBindVertexArray", bindVertexArray);
+ ASSIGN("glBlitFramebuffer", blitFramebuffer);
+ ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
+ ASSIGN("glClampColor", clampColor);
+ ASSIGN("glClearBufferfi", clearBufferfi);
+ ASSIGN("glClearBufferfv", clearBufferfv);
+ ASSIGN("glClearBufferiv", clearBufferiv);
+ ASSIGN("glClearBufferuiv", clearBufferuiv);
+ ASSIGN("glColorMaski", colorMaski);
+ ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
+ ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
+ ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
+ ASSIGN("glDisablei", disablei);
+ ASSIGN("glEnablei", enablei);
+ ASSIGN("glEndConditionalRender", endConditionalRender);
+ ASSIGN("glEndTransformFeedback", endTransformFeedback);
+ ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
+ ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
+ ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
+ ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
+ ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
+ ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
+ ASSIGN("glGenFramebuffers", genFramebuffers);
+ ASSIGN("glGenRenderbuffers", genRenderbuffers);
+ ASSIGN("glGenVertexArrays", genVertexArrays);
+ ASSIGN("glGenerateMipmap", generateMipmap);
+ ASSIGN("glGetBooleani_v", getBooleani_v);
+ ASSIGN("glGetFragDataLocation", getFragDataLocation);
+ ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
+ ASSIGN("glGetIntegeri_v", getIntegeri_v);
+ ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
+ ASSIGN("glGetStringi", getStringi);
+ ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
+ ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
+ ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
+ ASSIGN("glGetUniformuiv", getUniformuiv);
+ ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
+ ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
+ ASSIGN("glIsEnabledi", isEnabledi);
+ ASSIGN("glIsFramebuffer", isFramebuffer);
+ ASSIGN("glIsRenderbuffer", isRenderbuffer);
+ ASSIGN("glIsVertexArray", isVertexArray);
+ ASSIGN("glMapBufferRange", mapBufferRange);
+ ASSIGN("glRenderbufferStorage", renderbufferStorage);
+ ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
+ ASSIGN("glTexParameterIiv", texParameterIiv);
+ ASSIGN("glTexParameterIuiv", texParameterIuiv);
+ ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
+ ASSIGN("glUniform1ui", uniform1ui);
+ ASSIGN("glUniform1uiv", uniform1uiv);
+ ASSIGN("glUniform2ui", uniform2ui);
+ ASSIGN("glUniform2uiv", uniform2uiv);
+ ASSIGN("glUniform3ui", uniform3ui);
+ ASSIGN("glUniform3uiv", uniform3uiv);
+ ASSIGN("glUniform4ui", uniform4ui);
+ ASSIGN("glUniform4uiv", uniform4uiv);
+ ASSIGN("glVertexAttribI1i", vertexAttribI1i);
+ ASSIGN("glVertexAttribI1iv", vertexAttribI1iv);
+ ASSIGN("glVertexAttribI1ui", vertexAttribI1ui);
+ ASSIGN("glVertexAttribI1uiv", vertexAttribI1uiv);
+ ASSIGN("glVertexAttribI2i", vertexAttribI2i);
+ ASSIGN("glVertexAttribI2iv", vertexAttribI2iv);
+ ASSIGN("glVertexAttribI2ui", vertexAttribI2ui);
+ ASSIGN("glVertexAttribI2uiv", vertexAttribI2uiv);
+ ASSIGN("glVertexAttribI3i", vertexAttribI3i);
+ ASSIGN("glVertexAttribI3iv", vertexAttribI3iv);
+ ASSIGN("glVertexAttribI3ui", vertexAttribI3ui);
+ ASSIGN("glVertexAttribI3uiv", vertexAttribI3uiv);
+ ASSIGN("glVertexAttribI4bv", vertexAttribI4bv);
+ ASSIGN("glVertexAttribI4i", vertexAttribI4i);
+ ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
+ ASSIGN("glVertexAttribI4sv", vertexAttribI4sv);
+ ASSIGN("glVertexAttribI4ubv", vertexAttribI4ubv);
+ ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
+ ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
+ ASSIGN("glVertexAttribI4usv", vertexAttribI4usv);
+ ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
+ }
+
+ if (version >= gl::Version(3, 1))
+ {
+ ASSIGN("glCopyBufferSubData", copyBufferSubData);
+ ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
+ ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
+ ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
+ ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
+ ASSIGN("glGetActiveUniformName", getActiveUniformName);
+ ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
+ ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
+ ASSIGN("glGetUniformIndices", getUniformIndices);
+ ASSIGN("glPrimitiveRestartIndex", primitiveRestartIndex);
+ ASSIGN("glTexBuffer", texBuffer);
+ ASSIGN("glUniformBlockBinding", uniformBlockBinding);
+ }
+
+ if (version >= gl::Version(3, 2))
+ {
+ ASSIGN("glClientWaitSync", clientWaitSync);
+ ASSIGN("glDeleteSync", deleteSync);
+ ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
+ ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
+ ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
+ ASSIGN("glFenceSync", fenceSync);
+ ASSIGN("glFramebufferTexture", framebufferTexture);
+ ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
+ ASSIGN("glGetInteger64i_v", getInteger64i_v);
+ ASSIGN("glGetInteger64v", getInteger64v);
+ ASSIGN("glGetMultisamplefv", getMultisamplefv);
+ ASSIGN("glGetSynciv", getSynciv);
+ ASSIGN("glIsSync", isSync);
+ ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
+ ASSIGN("glProvokingVertex", provokingVertex);
+ ASSIGN("glSampleMaski", sampleMaski);
+ ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
+ ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
+ ASSIGN("glWaitSync", waitSync);
+ }
+
+ if (version >= gl::Version(3, 3))
+ {
+ ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
+ ASSIGN("glBindSampler", bindSampler);
+ ASSIGN("glDeleteSamplers", deleteSamplers);
+ ASSIGN("glGenSamplers", genSamplers);
+ ASSIGN("glGetFragDataIndex", getFragDataIndex);
+ ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
+ ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
+ ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
+ ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
+ ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
+ ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
+ ASSIGN("glIsSampler", isSampler);
+ ASSIGN("glQueryCounter", queryCounter);
+ ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
+ ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
+ ASSIGN("glSamplerParameterf", samplerParameterf);
+ ASSIGN("glSamplerParameterfv", samplerParameterfv);
+ ASSIGN("glSamplerParameteri", samplerParameteri);
+ ASSIGN("glSamplerParameteriv", samplerParameteriv);
+ ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
+ ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
+ ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
+ ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
+ ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
+ ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
+ ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
+ ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
+ ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
+ }
+
+ if (version >= gl::Version(4, 0))
+ {
+ ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
+ ASSIGN("glBindTransformFeedback", bindTransformFeedback);
+ ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
+ ASSIGN("glBlendEquationi", blendEquationi);
+ ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
+ ASSIGN("glBlendFunci", blendFunci);
+ ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
+ ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
+ ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
+ ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
+ ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
+ ASSIGN("glEndQueryIndexed", endQueryIndexed);
+ ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
+ ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
+ ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
+ ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
+ ASSIGN("glGetProgramStageiv", getProgramStageiv);
+ ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
+ ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
+ ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
+ ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
+ ASSIGN("glGetUniformdv", getUniformdv);
+ ASSIGN("glIsTransformFeedback", isTransformFeedback);
+ ASSIGN("glMinSampleShading", minSampleShading);
+ ASSIGN("glPatchParameterfv", patchParameterfv);
+ ASSIGN("glPatchParameteri", patchParameteri);
+ ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
+ ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
+ ASSIGN("glUniform1d", uniform1d);
+ ASSIGN("glUniform1dv", uniform1dv);
+ ASSIGN("glUniform2d", uniform2d);
+ ASSIGN("glUniform2dv", uniform2dv);
+ ASSIGN("glUniform3d", uniform3d);
+ ASSIGN("glUniform3dv", uniform3dv);
+ ASSIGN("glUniform4d", uniform4d);
+ ASSIGN("glUniform4dv", uniform4dv);
+ ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
+ ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
+ ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
+ ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
+ ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
+ ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
+ ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
+ ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
+ ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
+ ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
+ }
+
+ if (version >= gl::Version(4, 1))
+ {
+ ASSIGN("glActiveShaderProgram", activeShaderProgram);
+ ASSIGN("glBindProgramPipeline", bindProgramPipeline);
+ ASSIGN("glClearDepthf", clearDepthf);
+ ASSIGN("glCreateShaderProgramv", createShaderProgramv);
+ ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
+ ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
+ ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
+ ASSIGN("glDepthRangef", depthRangef);
+ ASSIGN("glGenProgramPipelines", genProgramPipelines);
+ ASSIGN("glGetDoublei_v", getDoublei_v);
+ ASSIGN("glGetFloati_v", getFloati_v);
+ ASSIGN("glGetProgramBinary", getProgramBinary);
+ ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
+ ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
+ ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
+ ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
+ ASSIGN("glIsProgramPipeline", isProgramPipeline);
+ ASSIGN("glProgramBinary", programBinary);
+ ASSIGN("glProgramParameteri", programParameteri);
+ ASSIGN("glProgramUniform1d", programUniform1d);
+ ASSIGN("glProgramUniform1dv", programUniform1dv);
+ ASSIGN("glProgramUniform1f", programUniform1f);
+ ASSIGN("glProgramUniform1fv", programUniform1fv);
+ ASSIGN("glProgramUniform1i", programUniform1i);
+ ASSIGN("glProgramUniform1iv", programUniform1iv);
+ ASSIGN("glProgramUniform1ui", programUniform1ui);
+ ASSIGN("glProgramUniform1uiv", programUniform1uiv);
+ ASSIGN("glProgramUniform2d", programUniform2d);
+ ASSIGN("glProgramUniform2dv", programUniform2dv);
+ ASSIGN("glProgramUniform2f", programUniform2f);
+ ASSIGN("glProgramUniform2fv", programUniform2fv);
+ ASSIGN("glProgramUniform2i", programUniform2i);
+ ASSIGN("glProgramUniform2iv", programUniform2iv);
+ ASSIGN("glProgramUniform2ui", programUniform2ui);
+ ASSIGN("glProgramUniform2uiv", programUniform2uiv);
+ ASSIGN("glProgramUniform3d", programUniform3d);
+ ASSIGN("glProgramUniform3dv", programUniform3dv);
+ ASSIGN("glProgramUniform3f", programUniform3f);
+ ASSIGN("glProgramUniform3fv", programUniform3fv);
+ ASSIGN("glProgramUniform3i", programUniform3i);
+ ASSIGN("glProgramUniform3iv", programUniform3iv);
+ ASSIGN("glProgramUniform3ui", programUniform3ui);
+ ASSIGN("glProgramUniform3uiv", programUniform3uiv);
+ ASSIGN("glProgramUniform4d", programUniform4d);
+ ASSIGN("glProgramUniform4dv", programUniform4dv);
+ ASSIGN("glProgramUniform4f", programUniform4f);
+ ASSIGN("glProgramUniform4fv", programUniform4fv);
+ ASSIGN("glProgramUniform4i", programUniform4i);
+ ASSIGN("glProgramUniform4iv", programUniform4iv);
+ ASSIGN("glProgramUniform4ui", programUniform4ui);
+ ASSIGN("glProgramUniform4uiv", programUniform4uiv);
+ ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
+ ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
+ ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
+ ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
+ ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
+ ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
+ ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
+ ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
+ ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
+ ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
+ ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
+ ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
+ ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
+ ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
+ ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
+ ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
+ ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
+ ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
+ ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
+ ASSIGN("glScissorArrayv", scissorArrayv);
+ ASSIGN("glScissorIndexed", scissorIndexed);
+ ASSIGN("glScissorIndexedv", scissorIndexedv);
+ ASSIGN("glShaderBinary", shaderBinary);
+ ASSIGN("glUseProgramStages", useProgramStages);
+ ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
+ ASSIGN("glVertexAttribL1d", vertexAttribL1d);
+ ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
+ ASSIGN("glVertexAttribL2d", vertexAttribL2d);
+ ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
+ ASSIGN("glVertexAttribL3d", vertexAttribL3d);
+ ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
+ ASSIGN("glVertexAttribL4d", vertexAttribL4d);
+ ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
+ ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
+ ASSIGN("glViewportArrayv", viewportArrayv);
+ ASSIGN("glViewportIndexedf", viewportIndexedf);
+ ASSIGN("glViewportIndexedfv", viewportIndexedfv);
+ }
+
+ if (version >= gl::Version(4, 2))
+ {
+ ASSIGN("glBindImageTexture", bindImageTexture);
+ ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance",
+ drawElementsInstancedBaseVertexBaseInstance);
+ ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
+ ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
+ ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
+ ASSIGN("glGetInternalformativ", getInternalformativ);
+ ASSIGN("glMemoryBarrier", memoryBarrier);
+ ASSIGN("glTexStorage1D", texStorage1D);
+ ASSIGN("glTexStorage2D", texStorage2D);
+ ASSIGN("glTexStorage3D", texStorage3D);
+ }
+
+ if (version >= gl::Version(4, 3))
+ {
+ ASSIGN("glBindVertexBuffer", bindVertexBuffer);
+ ASSIGN("glClearBufferData", clearBufferData);
+ ASSIGN("glClearBufferSubData", clearBufferSubData);
+ ASSIGN("glCopyImageSubData", copyImageSubData);
+ ASSIGN("glDebugMessageCallback", debugMessageCallback);
+ ASSIGN("glDebugMessageControl", debugMessageControl);
+ ASSIGN("glDebugMessageInsert", debugMessageInsert);
+ ASSIGN("glDispatchCompute", dispatchCompute);
+ ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
+ ASSIGN("glFramebufferParameteri", framebufferParameteri);
+ ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
+ ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
+ ASSIGN("glGetInternalformati64v", getInternalformati64v);
+ ASSIGN("glGetObjectLabel", getObjectLabel);
+ ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
+ ASSIGN("glGetPointerv", getPointerv);
+ ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
+ ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
+ ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
+ ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
+ ASSIGN("glGetProgramResourceName", getProgramResourceName);
+ ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
+ ASSIGN("glInvalidateBufferData", invalidateBufferData);
+ ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
+ ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
+ ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
+ ASSIGN("glInvalidateTexImage", invalidateTexImage);
+ ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
+ ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
+ ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
+ ASSIGN("glObjectLabel", objectLabel);
+ ASSIGN("glObjectPtrLabel", objectPtrLabel);
+ ASSIGN("glPopDebugGroup", popDebugGroup);
+ ASSIGN("glPushDebugGroup", pushDebugGroup);
+ ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
+ ASSIGN("glTexBufferRange", texBufferRange);
+ ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
+ ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
+ ASSIGN("glTextureView", textureView);
+ ASSIGN("glVertexAttribBinding", vertexAttribBinding);
+ ASSIGN("glVertexAttribFormat", vertexAttribFormat);
+ ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
+ ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
+ ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
+ }
+
+ if (version >= gl::Version(4, 4))
+ {
+ ASSIGN("glBindBuffersBase", bindBuffersBase);
+ ASSIGN("glBindBuffersRange", bindBuffersRange);
+ ASSIGN("glBindImageTextures", bindImageTextures);
+ ASSIGN("glBindSamplers", bindSamplers);
+ ASSIGN("glBindTextures", bindTextures);
+ ASSIGN("glBindVertexBuffers", bindVertexBuffers);
+ ASSIGN("glBufferStorage", bufferStorage);
+ ASSIGN("glClearTexImage", clearTexImage);
+ ASSIGN("glClearTexSubImage", clearTexSubImage);
+ }
+
+ if (version >= gl::Version(4, 5))
+ {
+ ASSIGN("glBindTextureUnit", bindTextureUnit);
+ ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
+ ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
+ ASSIGN("glClearNamedBufferData", clearNamedBufferData);
+ ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
+ ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
+ ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
+ ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
+ ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
+ ASSIGN("glClipControl", clipControl);
+ ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
+ ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
+ ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
+ ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
+ ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
+ ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
+ ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
+ ASSIGN("glCreateBuffers", createBuffers);
+ ASSIGN("glCreateFramebuffers", createFramebuffers);
+ ASSIGN("glCreateProgramPipelines", createProgramPipelines);
+ ASSIGN("glCreateQueries", createQueries);
+ ASSIGN("glCreateRenderbuffers", createRenderbuffers);
+ ASSIGN("glCreateSamplers", createSamplers);
+ ASSIGN("glCreateTextures", createTextures);
+ ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
+ ASSIGN("glCreateVertexArrays", createVertexArrays);
+ ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
+ ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
+ ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
+ ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
+ ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
+ ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
+ ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
+ ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
+ ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
+ ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
+ ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
+ ASSIGN("glGetNamedFramebufferAttachmentParameteriv",
+ getNamedFramebufferAttachmentParameteriv);
+ ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
+ ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
+ ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
+ ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
+ ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
+ ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
+ ASSIGN("glGetTextureImage", getTextureImage);
+ ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
+ ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
+ ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
+ ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
+ ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
+ ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
+ ASSIGN("glGetTextureSubImage", getTextureSubImage);
+ ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
+ ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
+ ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
+ ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
+ ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
+ ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
+ ASSIGN("glGetnCompressedTexImage", getnCompressedTexImage);
+ ASSIGN("glGetnTexImage", getnTexImage);
+ ASSIGN("glGetnUniformdv", getnUniformdv);
+ ASSIGN("glGetnUniformfv", getnUniformfv);
+ ASSIGN("glGetnUniformiv", getnUniformiv);
+ ASSIGN("glGetnUniformuiv", getnUniformuiv);
+ ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
+ ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
+ ASSIGN("glMapNamedBuffer", mapNamedBuffer);
+ ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
+ ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
+ ASSIGN("glNamedBufferData", namedBufferData);
+ ASSIGN("glNamedBufferStorage", namedBufferStorage);
+ ASSIGN("glNamedBufferSubData", namedBufferSubData);
+ ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
+ ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
+ ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
+ ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
+ ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
+ ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
+ ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
+ ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
+ ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
+ ASSIGN("glReadnPixels", readnPixels);
+ ASSIGN("glTextureBarrier", textureBarrier);
+ ASSIGN("glTextureBuffer", textureBuffer);
+ ASSIGN("glTextureBufferRange", textureBufferRange);
+ ASSIGN("glTextureParameterIiv", textureParameterIiv);
+ ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
+ ASSIGN("glTextureParameterf", textureParameterf);
+ ASSIGN("glTextureParameterfv", textureParameterfv);
+ ASSIGN("glTextureParameteri", textureParameteri);
+ ASSIGN("glTextureParameteriv", textureParameteriv);
+ ASSIGN("glTextureStorage1D", textureStorage1D);
+ ASSIGN("glTextureStorage2D", textureStorage2D);
+ ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
+ ASSIGN("glTextureStorage3D", textureStorage3D);
+ ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
+ ASSIGN("glTextureSubImage1D", textureSubImage1D);
+ ASSIGN("glTextureSubImage2D", textureSubImage2D);
+ ASSIGN("glTextureSubImage3D", textureSubImage3D);
+ ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
+ ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
+ ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
+ ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
+ ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
+ ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
+ ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
+ ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
+ ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
+ ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
+ ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
+ }
+
+ if (extensions.count("GL_ARB_ES2_compatibility") != 0)
+ {
+ ASSIGN("glClearDepthf", clearDepthf);
+ ASSIGN("glDepthRangef", depthRangef);
+ ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
+ ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
+ ASSIGN("glShaderBinary", shaderBinary);
+ }
+
+ if (extensions.count("GL_ARB_ES3_1_compatibility") != 0)
+ {
+ ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
+ }
+
+ if (extensions.count("GL_ARB_ES3_2_compatibility") != 0)
+ {
+ ASSIGN("glPrimitiveBoundingBoxARB", primitiveBoundingBox);
+ }
+
+ if (extensions.count("GL_ARB_base_instance") != 0)
+ {
+ ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance",
+ drawElementsInstancedBaseVertexBaseInstance);
+ }
+
+ if (extensions.count("GL_ARB_blend_func_extended") != 0)
+ {
+ ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
+ ASSIGN("glGetFragDataIndex", getFragDataIndex);
+ }
+
+ if (extensions.count("GL_ARB_buffer_storage") != 0)
+ {
+ ASSIGN("glBufferStorage", bufferStorage);
+ }
+
+ if (extensions.count("GL_ARB_clear_buffer_object") != 0)
+ {
+ ASSIGN("glClearBufferData", clearBufferData);
+ ASSIGN("glClearBufferSubData", clearBufferSubData);
+ }
+
+ if (extensions.count("GL_ARB_clear_texture") != 0)
+ {
+ ASSIGN("glClearTexImage", clearTexImage);
+ ASSIGN("glClearTexSubImage", clearTexSubImage);
+ }
+
+ if (extensions.count("GL_ARB_clip_control") != 0)
+ {
+ ASSIGN("glClipControl", clipControl);
+ }
+
+ if (extensions.count("GL_ARB_color_buffer_float") != 0)
+ {
+ ASSIGN("glClampColorARB", clampColor);
+ }
+
+ if (extensions.count("GL_ARB_compute_shader") != 0)
+ {
+ ASSIGN("glDispatchCompute", dispatchCompute);
+ ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
+ }
+
+ if (extensions.count("GL_ARB_copy_buffer") != 0)
+ {
+ ASSIGN("glCopyBufferSubData", copyBufferSubData);
+ }
+
+ if (extensions.count("GL_ARB_copy_image") != 0)
+ {
+ ASSIGN("glCopyImageSubData", copyImageSubData);
+ }
+
+ if (extensions.count("GL_ARB_debug_output") != 0)
+ {
+ ASSIGN("glDebugMessageCallbackARB", debugMessageCallback);
+ ASSIGN("glDebugMessageControlARB", debugMessageControl);
+ ASSIGN("glDebugMessageInsertARB", debugMessageInsert);
+ ASSIGN("glGetDebugMessageLogARB", getDebugMessageLog);
+ }
+
+ if (extensions.count("GL_ARB_direct_state_access") != 0)
+ {
+ ASSIGN("glBindTextureUnit", bindTextureUnit);
+ ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
+ ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
+ ASSIGN("glClearNamedBufferData", clearNamedBufferData);
+ ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
+ ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
+ ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
+ ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
+ ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
+ ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
+ ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
+ ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
+ ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
+ ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
+ ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
+ ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
+ ASSIGN("glCreateBuffers", createBuffers);
+ ASSIGN("glCreateFramebuffers", createFramebuffers);
+ ASSIGN("glCreateProgramPipelines", createProgramPipelines);
+ ASSIGN("glCreateQueries", createQueries);
+ ASSIGN("glCreateRenderbuffers", createRenderbuffers);
+ ASSIGN("glCreateSamplers", createSamplers);
+ ASSIGN("glCreateTextures", createTextures);
+ ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
+ ASSIGN("glCreateVertexArrays", createVertexArrays);
+ ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
+ ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
+ ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
+ ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
+ ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
+ ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
+ ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
+ ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
+ ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
+ ASSIGN("glGetNamedFramebufferAttachmentParameteriv",
+ getNamedFramebufferAttachmentParameteriv);
+ ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
+ ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
+ ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
+ ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
+ ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
+ ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
+ ASSIGN("glGetTextureImage", getTextureImage);
+ ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
+ ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
+ ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
+ ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
+ ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
+ ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
+ ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
+ ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
+ ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
+ ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
+ ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
+ ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
+ ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
+ ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
+ ASSIGN("glMapNamedBuffer", mapNamedBuffer);
+ ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
+ ASSIGN("glNamedBufferData", namedBufferData);
+ ASSIGN("glNamedBufferStorage", namedBufferStorage);
+ ASSIGN("glNamedBufferSubData", namedBufferSubData);
+ ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
+ ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
+ ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
+ ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
+ ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
+ ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
+ ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
+ ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
+ ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
+ ASSIGN("glTextureBuffer", textureBuffer);
+ ASSIGN("glTextureBufferRange", textureBufferRange);
+ ASSIGN("glTextureParameterIiv", textureParameterIiv);
+ ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
+ ASSIGN("glTextureParameterf", textureParameterf);
+ ASSIGN("glTextureParameterfv", textureParameterfv);
+ ASSIGN("glTextureParameteri", textureParameteri);
+ ASSIGN("glTextureParameteriv", textureParameteriv);
+ ASSIGN("glTextureStorage1D", textureStorage1D);
+ ASSIGN("glTextureStorage2D", textureStorage2D);
+ ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
+ ASSIGN("glTextureStorage3D", textureStorage3D);
+ ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
+ ASSIGN("glTextureSubImage1D", textureSubImage1D);
+ ASSIGN("glTextureSubImage2D", textureSubImage2D);
+ ASSIGN("glTextureSubImage3D", textureSubImage3D);
+ ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
+ ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
+ ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
+ ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
+ ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
+ ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
+ ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
+ ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
+ ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
+ ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
+ ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
+ }
+
+ if (extensions.count("GL_ARB_draw_buffers") != 0)
+ {
+ ASSIGN("glDrawBuffersARB", drawBuffers);
+ }
+
+ if (extensions.count("GL_ARB_draw_buffers_blend") != 0)
+ {
+ ASSIGN("glBlendEquationSeparateiARB", blendEquationSeparatei);
+ ASSIGN("glBlendEquationiARB", blendEquationi);
+ ASSIGN("glBlendFuncSeparateiARB", blendFuncSeparatei);
+ ASSIGN("glBlendFunciARB", blendFunci);
+ }
+
+ if (extensions.count("GL_ARB_draw_elements_base_vertex") != 0)
+ {
+ ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
+ ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
+ ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
+ ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
+ }
+
+ if (extensions.count("GL_ARB_draw_indirect") != 0)
+ {
+ ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
+ ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
+ }
+
+ if (extensions.count("GL_ARB_draw_instanced") != 0)
+ {
+ ASSIGN("glDrawArraysInstancedARB", drawArraysInstanced);
+ ASSIGN("glDrawElementsInstancedARB", drawElementsInstanced);
+ }
+
+ if (extensions.count("GL_ARB_fragment_program") != 0)
+ {
+ ASSIGN("glGetProgramivARB", getProgramiv);
+ ASSIGN("glIsProgramARB", isProgram);
+ }
+
+ if (extensions.count("GL_ARB_framebuffer_no_attachments") != 0)
+ {
+ ASSIGN("glFramebufferParameteri", framebufferParameteri);
+ ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
+ }
+
+ if (extensions.count("GL_ARB_framebuffer_object") != 0)
+ {
+ ASSIGN("glBindFramebuffer", bindFramebuffer);
+ ASSIGN("glBindRenderbuffer", bindRenderbuffer);
+ ASSIGN("glBlitFramebuffer", blitFramebuffer);
+ ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
+ ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
+ ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
+ ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
+ ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
+ ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
+ ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
+ ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
+ ASSIGN("glGenFramebuffers", genFramebuffers);
+ ASSIGN("glGenRenderbuffers", genRenderbuffers);
+ ASSIGN("glGenerateMipmap", generateMipmap);
+ ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
+ ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
+ ASSIGN("glIsFramebuffer", isFramebuffer);
+ ASSIGN("glIsRenderbuffer", isRenderbuffer);
+ ASSIGN("glRenderbufferStorage", renderbufferStorage);
+ ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
+ }
+
+ if (extensions.count("GL_ARB_geometry_shader4") != 0)
+ {
+ ASSIGN("glFramebufferTextureARB", framebufferTexture);
+ ASSIGN("glFramebufferTextureLayerARB", framebufferTextureLayer);
+ ASSIGN("glProgramParameteriARB", programParameteri);
+ }
+
+ if (extensions.count("GL_ARB_get_program_binary") != 0)
+ {
+ ASSIGN("glGetProgramBinary", getProgramBinary);
+ ASSIGN("glProgramBinary", programBinary);
+ ASSIGN("glProgramParameteri", programParameteri);
+ }
+
+ if (extensions.count("GL_ARB_get_texture_sub_image") != 0)
+ {
+ ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
+ ASSIGN("glGetTextureSubImage", getTextureSubImage);
+ }
+
+ if (extensions.count("GL_ARB_gpu_shader_fp64") != 0)
+ {
+ ASSIGN("glGetUniformdv", getUniformdv);
+ ASSIGN("glUniform1d", uniform1d);
+ ASSIGN("glUniform1dv", uniform1dv);
+ ASSIGN("glUniform2d", uniform2d);
+ ASSIGN("glUniform2dv", uniform2dv);
+ ASSIGN("glUniform3d", uniform3d);
+ ASSIGN("glUniform3dv", uniform3dv);
+ ASSIGN("glUniform4d", uniform4d);
+ ASSIGN("glUniform4dv", uniform4dv);
+ ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
+ ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
+ ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
+ ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
+ ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
+ ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
+ ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
+ ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
+ ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
+ }
+
+ if (extensions.count("GL_ARB_imaging") != 0)
+ {
+ ASSIGN("glBlendColor", blendColor);
+ ASSIGN("glBlendEquation", blendEquation);
+ }
+
+ if (extensions.count("GL_ARB_instanced_arrays") != 0)
+ {
+ ASSIGN("glVertexAttribDivisorARB", vertexAttribDivisor);
+ }
+
+ if (extensions.count("GL_ARB_internalformat_query") != 0)
+ {
+ ASSIGN("glGetInternalformativ", getInternalformativ);
+ }
+
+ if (extensions.count("GL_ARB_internalformat_query2") != 0)
+ {
+ ASSIGN("glGetInternalformati64v", getInternalformati64v);
+ }
+
+ if (extensions.count("GL_ARB_invalidate_subdata") != 0)
+ {
+ ASSIGN("glInvalidateBufferData", invalidateBufferData);
+ ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
+ ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
+ ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
+ ASSIGN("glInvalidateTexImage", invalidateTexImage);
+ ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
+ }
+
+ if (extensions.count("GL_ARB_map_buffer_range") != 0)
+ {
+ ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
+ ASSIGN("glMapBufferRange", mapBufferRange);
+ }
+
+ if (extensions.count("GL_ARB_multi_bind") != 0)
+ {
+ ASSIGN("glBindBuffersBase", bindBuffersBase);
+ ASSIGN("glBindBuffersRange", bindBuffersRange);
+ ASSIGN("glBindImageTextures", bindImageTextures);
+ ASSIGN("glBindSamplers", bindSamplers);
+ ASSIGN("glBindTextures", bindTextures);
+ ASSIGN("glBindVertexBuffers", bindVertexBuffers);
+ }
+
+ if (extensions.count("GL_ARB_multi_draw_indirect") != 0)
+ {
+ ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
+ ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
+ }
+
+ if (extensions.count("GL_ARB_multisample") != 0)
+ {
+ ASSIGN("glSampleCoverageARB", sampleCoverage);
+ }
+
+ if (extensions.count("GL_ARB_multitexture") != 0)
+ {
+ ASSIGN("glActiveTextureARB", activeTexture);
+ }
+
+ if (extensions.count("GL_ARB_occlusion_query") != 0)
+ {
+ ASSIGN("glBeginQueryARB", beginQuery);
+ ASSIGN("glDeleteQueriesARB", deleteQueries);
+ ASSIGN("glEndQueryARB", endQuery);
+ ASSIGN("glGenQueriesARB", genQueries);
+ ASSIGN("glGetQueryObjectivARB", getQueryObjectiv);
+ ASSIGN("glGetQueryObjectuivARB", getQueryObjectuiv);
+ ASSIGN("glGetQueryivARB", getQueryiv);
+ ASSIGN("glIsQueryARB", isQuery);
+ }
+
+ if (extensions.count("GL_ARB_point_parameters") != 0)
+ {
+ ASSIGN("glPointParameterfARB", pointParameterf);
+ ASSIGN("glPointParameterfvARB", pointParameterfv);
+ }
+
+ if (extensions.count("GL_ARB_program_interface_query") != 0)
+ {
+ ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
+ ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
+ ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
+ ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
+ ASSIGN("glGetProgramResourceName", getProgramResourceName);
+ ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
+ }
+
+ if (extensions.count("GL_ARB_provoking_vertex") != 0)
+ {
+ ASSIGN("glProvokingVertex", provokingVertex);
+ }
+
+ if (extensions.count("GL_ARB_robustness") != 0)
+ {
+ ASSIGN("glGetGraphicsResetStatusARB", getGraphicsResetStatus);
+ ASSIGN("glGetnCompressedTexImageARB", getnCompressedTexImage);
+ ASSIGN("glGetnTexImageARB", getnTexImage);
+ ASSIGN("glGetnUniformdvARB", getnUniformdv);
+ ASSIGN("glGetnUniformfvARB", getnUniformfv);
+ ASSIGN("glGetnUniformivARB", getnUniformiv);
+ ASSIGN("glGetnUniformuivARB", getnUniformuiv);
+ ASSIGN("glReadnPixelsARB", readnPixels);
+ }
+
+ if (extensions.count("GL_ARB_sample_shading") != 0)
+ {
+ ASSIGN("glMinSampleShadingARB", minSampleShading);
+ }
+
+ if (extensions.count("GL_ARB_sampler_objects") != 0)
+ {
+ ASSIGN("glBindSampler", bindSampler);
+ ASSIGN("glDeleteSamplers", deleteSamplers);
+ ASSIGN("glGenSamplers", genSamplers);
+ ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
+ ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
+ ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
+ ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
+ ASSIGN("glIsSampler", isSampler);
+ ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
+ ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
+ ASSIGN("glSamplerParameterf", samplerParameterf);
+ ASSIGN("glSamplerParameterfv", samplerParameterfv);
+ ASSIGN("glSamplerParameteri", samplerParameteri);
+ ASSIGN("glSamplerParameteriv", samplerParameteriv);
+ }
+
+ if (extensions.count("GL_ARB_separate_shader_objects") != 0)
+ {
+ ASSIGN("glActiveShaderProgram", activeShaderProgram);
+ ASSIGN("glBindProgramPipeline", bindProgramPipeline);
+ ASSIGN("glCreateShaderProgramv", createShaderProgramv);
+ ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
+ ASSIGN("glGenProgramPipelines", genProgramPipelines);
+ ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
+ ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
+ ASSIGN("glIsProgramPipeline", isProgramPipeline);
+ ASSIGN("glProgramUniform1d", programUniform1d);
+ ASSIGN("glProgramUniform1dv", programUniform1dv);
+ ASSIGN("glProgramUniform1f", programUniform1f);
+ ASSIGN("glProgramUniform1fv", programUniform1fv);
+ ASSIGN("glProgramUniform1i", programUniform1i);
+ ASSIGN("glProgramUniform1iv", programUniform1iv);
+ ASSIGN("glProgramUniform1ui", programUniform1ui);
+ ASSIGN("glProgramUniform1uiv", programUniform1uiv);
+ ASSIGN("glProgramUniform2d", programUniform2d);
+ ASSIGN("glProgramUniform2dv", programUniform2dv);
+ ASSIGN("glProgramUniform2f", programUniform2f);
+ ASSIGN("glProgramUniform2fv", programUniform2fv);
+ ASSIGN("glProgramUniform2i", programUniform2i);
+ ASSIGN("glProgramUniform2iv", programUniform2iv);
+ ASSIGN("glProgramUniform2ui", programUniform2ui);
+ ASSIGN("glProgramUniform2uiv", programUniform2uiv);
+ ASSIGN("glProgramUniform3d", programUniform3d);
+ ASSIGN("glProgramUniform3dv", programUniform3dv);
+ ASSIGN("glProgramUniform3f", programUniform3f);
+ ASSIGN("glProgramUniform3fv", programUniform3fv);
+ ASSIGN("glProgramUniform3i", programUniform3i);
+ ASSIGN("glProgramUniform3iv", programUniform3iv);
+ ASSIGN("glProgramUniform3ui", programUniform3ui);
+ ASSIGN("glProgramUniform3uiv", programUniform3uiv);
+ ASSIGN("glProgramUniform4d", programUniform4d);
+ ASSIGN("glProgramUniform4dv", programUniform4dv);
+ ASSIGN("glProgramUniform4f", programUniform4f);
+ ASSIGN("glProgramUniform4fv", programUniform4fv);
+ ASSIGN("glProgramUniform4i", programUniform4i);
+ ASSIGN("glProgramUniform4iv", programUniform4iv);
+ ASSIGN("glProgramUniform4ui", programUniform4ui);
+ ASSIGN("glProgramUniform4uiv", programUniform4uiv);
+ ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
+ ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
+ ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
+ ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
+ ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
+ ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
+ ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
+ ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
+ ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
+ ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
+ ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
+ ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
+ ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
+ ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
+ ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
+ ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
+ ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
+ ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
+ ASSIGN("glUseProgramStages", useProgramStages);
+ ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
+ }
+
+ if (extensions.count("GL_ARB_shader_atomic_counters") != 0)
+ {
+ ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
+ }
+
+ if (extensions.count("GL_ARB_shader_image_load_store") != 0)
+ {
+ ASSIGN("glBindImageTexture", bindImageTexture);
+ ASSIGN("glMemoryBarrier", memoryBarrier);
+ }
+
+ if (extensions.count("GL_ARB_shader_objects") != 0)
+ {
+ ASSIGN("glCompileShaderARB", compileShader);
+ ASSIGN("glGetActiveUniformARB", getActiveUniform);
+ ASSIGN("glGetShaderSourceARB", getShaderSource);
+ ASSIGN("glGetUniformLocationARB", getUniformLocation);
+ ASSIGN("glGetUniformfvARB", getUniformfv);
+ ASSIGN("glGetUniformivARB", getUniformiv);
+ ASSIGN("glLinkProgramARB", linkProgram);
+ ASSIGN("glShaderSourceARB", shaderSource);
+ ASSIGN("glUniform1fARB", uniform1f);
+ ASSIGN("glUniform1fvARB", uniform1fv);
+ ASSIGN("glUniform1iARB", uniform1i);
+ ASSIGN("glUniform1ivARB", uniform1iv);
+ ASSIGN("glUniform2fARB", uniform2f);
+ ASSIGN("glUniform2fvARB", uniform2fv);
+ ASSIGN("glUniform2iARB", uniform2i);
+ ASSIGN("glUniform2ivARB", uniform2iv);
+ ASSIGN("glUniform3fARB", uniform3f);
+ ASSIGN("glUniform3fvARB", uniform3fv);
+ ASSIGN("glUniform3iARB", uniform3i);
+ ASSIGN("glUniform3ivARB", uniform3iv);
+ ASSIGN("glUniform4fARB", uniform4f);
+ ASSIGN("glUniform4fvARB", uniform4fv);
+ ASSIGN("glUniform4iARB", uniform4i);
+ ASSIGN("glUniform4ivARB", uniform4iv);
+ ASSIGN("glUniformMatrix2fvARB", uniformMatrix2fv);
+ ASSIGN("glUniformMatrix3fvARB", uniformMatrix3fv);
+ ASSIGN("glUniformMatrix4fvARB", uniformMatrix4fv);
+ ASSIGN("glValidateProgramARB", validateProgram);
+ }
+
+ if (extensions.count("GL_ARB_shader_storage_buffer_object") != 0)
+ {
+ ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
+ }
+
+ if (extensions.count("GL_ARB_shader_subroutine") != 0)
+ {
+ ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
+ ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
+ ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
+ ASSIGN("glGetProgramStageiv", getProgramStageiv);
+ ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
+ ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
+ ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
+ ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
+ }
+
+ if (extensions.count("GL_ARB_sync") != 0)
+ {
+ ASSIGN("glClientWaitSync", clientWaitSync);
+ ASSIGN("glDeleteSync", deleteSync);
+ ASSIGN("glFenceSync", fenceSync);
+ ASSIGN("glGetInteger64v", getInteger64v);
+ ASSIGN("glGetSynciv", getSynciv);
+ ASSIGN("glIsSync", isSync);
+ ASSIGN("glWaitSync", waitSync);
+ }
+
+ if (extensions.count("GL_ARB_tessellation_shader") != 0)
+ {
+ ASSIGN("glPatchParameterfv", patchParameterfv);
+ ASSIGN("glPatchParameteri", patchParameteri);
+ }
+
+ if (extensions.count("GL_ARB_texture_barrier") != 0)
+ {
+ ASSIGN("glTextureBarrier", textureBarrier);
+ }
+
+ if (extensions.count("GL_ARB_texture_buffer_object") != 0)
+ {
+ ASSIGN("glTexBufferARB", texBuffer);
+ }
+
+ if (extensions.count("GL_ARB_texture_buffer_range") != 0)
+ {
+ ASSIGN("glTexBufferRange", texBufferRange);
+ }
+
+ if (extensions.count("GL_ARB_texture_compression") != 0)
+ {
+ ASSIGN("glCompressedTexImage1DARB", compressedTexImage1D);
+ ASSIGN("glCompressedTexImage2DARB", compressedTexImage2D);
+ ASSIGN("glCompressedTexImage3DARB", compressedTexImage3D);
+ ASSIGN("glCompressedTexSubImage1DARB", compressedTexSubImage1D);
+ ASSIGN("glCompressedTexSubImage2DARB", compressedTexSubImage2D);
+ ASSIGN("glCompressedTexSubImage3DARB", compressedTexSubImage3D);
+ ASSIGN("glGetCompressedTexImageARB", getCompressedTexImage);
+ }
+
+ if (extensions.count("GL_ARB_texture_multisample") != 0)
+ {
+ ASSIGN("glGetMultisamplefv", getMultisamplefv);
+ ASSIGN("glSampleMaski", sampleMaski);
+ ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
+ ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
+ }
+
+ if (extensions.count("GL_ARB_texture_storage") != 0)
+ {
+ ASSIGN("glTexStorage1D", texStorage1D);
+ ASSIGN("glTexStorage2D", texStorage2D);
+ ASSIGN("glTexStorage3D", texStorage3D);
+ }
+
+ if (extensions.count("GL_ARB_texture_storage_multisample") != 0)
+ {
+ ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
+ ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
+ }
+
+ if (extensions.count("GL_ARB_texture_view") != 0)
+ {
+ ASSIGN("glTextureView", textureView);
+ }
+
+ if (extensions.count("GL_ARB_timer_query") != 0)
+ {
+ ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
+ ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
+ ASSIGN("glQueryCounter", queryCounter);
+ }
+
+ if (extensions.count("GL_ARB_transform_feedback2") != 0)
+ {
+ ASSIGN("glBindTransformFeedback", bindTransformFeedback);
+ ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
+ ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
+ ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
+ ASSIGN("glIsTransformFeedback", isTransformFeedback);
+ ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
+ ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
+ }
+
+ if (extensions.count("GL_ARB_transform_feedback3") != 0)
+ {
+ ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
+ ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
+ ASSIGN("glEndQueryIndexed", endQueryIndexed);
+ ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
+ }
+
+ if (extensions.count("GL_ARB_transform_feedback_instanced") != 0)
+ {
+ ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
+ ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
+ }
+
+ if (extensions.count("GL_ARB_uniform_buffer_object") != 0)
+ {
+ ASSIGN("glBindBufferBase", bindBufferBase);
+ ASSIGN("glBindBufferRange", bindBufferRange);
+ ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
+ ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
+ ASSIGN("glGetActiveUniformName", getActiveUniformName);
+ ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
+ ASSIGN("glGetIntegeri_v", getIntegeri_v);
+ ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
+ ASSIGN("glGetUniformIndices", getUniformIndices);
+ ASSIGN("glUniformBlockBinding", uniformBlockBinding);
+ }
+
+ if (extensions.count("GL_ARB_vertex_array_object") != 0)
+ {
+ ASSIGN("glBindVertexArray", bindVertexArray);
+ ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
+ ASSIGN("glGenVertexArrays", genVertexArrays);
+ ASSIGN("glIsVertexArray", isVertexArray);
+ }
+
+ if (extensions.count("GL_ARB_vertex_attrib_64bit") != 0)
+ {
+ ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
+ ASSIGN("glVertexAttribL1d", vertexAttribL1d);
+ ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
+ ASSIGN("glVertexAttribL2d", vertexAttribL2d);
+ ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
+ ASSIGN("glVertexAttribL3d", vertexAttribL3d);
+ ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
+ ASSIGN("glVertexAttribL4d", vertexAttribL4d);
+ ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
+ ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
+ }
+
+ if (extensions.count("GL_ARB_vertex_attrib_binding") != 0)
+ {
+ ASSIGN("glBindVertexBuffer", bindVertexBuffer);
+ ASSIGN("glVertexAttribBinding", vertexAttribBinding);
+ ASSIGN("glVertexAttribFormat", vertexAttribFormat);
+ ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
+ ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
+ ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
+ }
+
+ if (extensions.count("GL_ARB_vertex_buffer_object") != 0)
+ {
+ ASSIGN("glBindBufferARB", bindBuffer);
+ ASSIGN("glBufferDataARB", bufferData);
+ ASSIGN("glBufferSubDataARB", bufferSubData);
+ ASSIGN("glDeleteBuffersARB", deleteBuffers);
+ ASSIGN("glGenBuffersARB", genBuffers);
+ ASSIGN("glGetBufferParameterivARB", getBufferParameteriv);
+ ASSIGN("glGetBufferPointervARB", getBufferPointerv);
+ ASSIGN("glGetBufferSubDataARB", getBufferSubData);
+ ASSIGN("glIsBufferARB", isBuffer);
+ ASSIGN("glMapBufferARB", mapBuffer);
+ ASSIGN("glUnmapBufferARB", unmapBuffer);
+ }
+
+ if (extensions.count("GL_ARB_vertex_program") != 0)
+ {
+ ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
+ ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
+ ASSIGN("glGetProgramivARB", getProgramiv);
+ ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
+ ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
+ ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
+ ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
+ ASSIGN("glIsProgramARB", isProgram);
+ ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
+ ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
+ ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
+ ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
+ ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
+ ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
+ ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
+ ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
+ ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
+ ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
+ ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
+ ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
+ ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
+ ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
+ ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
+ ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
+ ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
+ ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
+ ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
+ ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
+ ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
+ ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
+ ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
+ ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
+ ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
+ ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
+ ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
+ ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
+ ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
+ ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
+ ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
+ ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
+ ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
+ ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
+ ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
+ ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
+ ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
+ }
+
+ if (extensions.count("GL_ARB_vertex_shader") != 0)
+ {
+ ASSIGN("glBindAttribLocationARB", bindAttribLocation);
+ ASSIGN("glDisableVertexAttribArrayARB", disableVertexAttribArray);
+ ASSIGN("glEnableVertexAttribArrayARB", enableVertexAttribArray);
+ ASSIGN("glGetActiveAttribARB", getActiveAttrib);
+ ASSIGN("glGetAttribLocationARB", getAttribLocation);
+ ASSIGN("glGetVertexAttribPointervARB", getVertexAttribPointerv);
+ ASSIGN("glGetVertexAttribdvARB", getVertexAttribdv);
+ ASSIGN("glGetVertexAttribfvARB", getVertexAttribfv);
+ ASSIGN("glGetVertexAttribivARB", getVertexAttribiv);
+ ASSIGN("glVertexAttrib1dARB", vertexAttrib1d);
+ ASSIGN("glVertexAttrib1dvARB", vertexAttrib1dv);
+ ASSIGN("glVertexAttrib1fARB", vertexAttrib1f);
+ ASSIGN("glVertexAttrib1fvARB", vertexAttrib1fv);
+ ASSIGN("glVertexAttrib1sARB", vertexAttrib1s);
+ ASSIGN("glVertexAttrib1svARB", vertexAttrib1sv);
+ ASSIGN("glVertexAttrib2dARB", vertexAttrib2d);
+ ASSIGN("glVertexAttrib2dvARB", vertexAttrib2dv);
+ ASSIGN("glVertexAttrib2fARB", vertexAttrib2f);
+ ASSIGN("glVertexAttrib2fvARB", vertexAttrib2fv);
+ ASSIGN("glVertexAttrib2sARB", vertexAttrib2s);
+ ASSIGN("glVertexAttrib2svARB", vertexAttrib2sv);
+ ASSIGN("glVertexAttrib3dARB", vertexAttrib3d);
+ ASSIGN("glVertexAttrib3dvARB", vertexAttrib3dv);
+ ASSIGN("glVertexAttrib3fARB", vertexAttrib3f);
+ ASSIGN("glVertexAttrib3fvARB", vertexAttrib3fv);
+ ASSIGN("glVertexAttrib3sARB", vertexAttrib3s);
+ ASSIGN("glVertexAttrib3svARB", vertexAttrib3sv);
+ ASSIGN("glVertexAttrib4NbvARB", vertexAttrib4Nbv);
+ ASSIGN("glVertexAttrib4NivARB", vertexAttrib4Niv);
+ ASSIGN("glVertexAttrib4NsvARB", vertexAttrib4Nsv);
+ ASSIGN("glVertexAttrib4NubARB", vertexAttrib4Nub);
+ ASSIGN("glVertexAttrib4NubvARB", vertexAttrib4Nubv);
+ ASSIGN("glVertexAttrib4NuivARB", vertexAttrib4Nuiv);
+ ASSIGN("glVertexAttrib4NusvARB", vertexAttrib4Nusv);
+ ASSIGN("glVertexAttrib4bvARB", vertexAttrib4bv);
+ ASSIGN("glVertexAttrib4dARB", vertexAttrib4d);
+ ASSIGN("glVertexAttrib4dvARB", vertexAttrib4dv);
+ ASSIGN("glVertexAttrib4fARB", vertexAttrib4f);
+ ASSIGN("glVertexAttrib4fvARB", vertexAttrib4fv);
+ ASSIGN("glVertexAttrib4ivARB", vertexAttrib4iv);
+ ASSIGN("glVertexAttrib4sARB", vertexAttrib4s);
+ ASSIGN("glVertexAttrib4svARB", vertexAttrib4sv);
+ ASSIGN("glVertexAttrib4ubvARB", vertexAttrib4ubv);
+ ASSIGN("glVertexAttrib4uivARB", vertexAttrib4uiv);
+ ASSIGN("glVertexAttrib4usvARB", vertexAttrib4usv);
+ ASSIGN("glVertexAttribPointerARB", vertexAttribPointer);
+ }
+
+ if (extensions.count("GL_ARB_vertex_type_2_10_10_10_rev") != 0)
+ {
+ ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
+ ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
+ ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
+ ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
+ ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
+ ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
+ ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
+ ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
+ }
+
+ if (extensions.count("GL_ARB_viewport_array") != 0)
+ {
+ ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
+ ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
+ ASSIGN("glGetDoublei_v", getDoublei_v);
+ ASSIGN("glGetFloati_v", getFloati_v);
+ ASSIGN("glScissorArrayv", scissorArrayv);
+ ASSIGN("glScissorIndexed", scissorIndexed);
+ ASSIGN("glScissorIndexedv", scissorIndexedv);
+ ASSIGN("glViewportArrayv", viewportArrayv);
+ ASSIGN("glViewportIndexedf", viewportIndexedf);
+ ASSIGN("glViewportIndexedfv", viewportIndexedfv);
+ }
+
+ if (extensions.count("GL_EXT_blend_color") != 0)
+ {
+ ASSIGN("glBlendColorEXT", blendColor);
+ }
+
+ if (extensions.count("GL_EXT_blend_equation_separate") != 0)
+ {
+ ASSIGN("glBlendEquationSeparateEXT", blendEquationSeparate);
+ }
+
+ if (extensions.count("GL_EXT_blend_func_separate") != 0)
+ {
+ ASSIGN("glBlendFuncSeparateEXT", blendFuncSeparate);
+ }
+
+ if (extensions.count("GL_EXT_copy_texture") != 0)
+ {
+ ASSIGN("glCopyTexImage1DEXT", copyTexImage1D);
+ ASSIGN("glCopyTexImage2DEXT", copyTexImage2D);
+ ASSIGN("glCopyTexSubImage1DEXT", copyTexSubImage1D);
+ ASSIGN("glCopyTexSubImage2DEXT", copyTexSubImage2D);
+ ASSIGN("glCopyTexSubImage3DEXT", copyTexSubImage3D);
+ }
+
+ if (extensions.count("GL_EXT_direct_state_access") != 0)
+ {
+ ASSIGN("glCheckNamedFramebufferStatusEXT", checkNamedFramebufferStatus);
+ ASSIGN("glClearNamedBufferDataEXT", clearNamedBufferData);
+ ASSIGN("glClearNamedBufferSubDataEXT", clearNamedBufferSubData);
+ ASSIGN("glCompressedTextureSubImage1DEXT", compressedTextureSubImage1D);
+ ASSIGN("glCompressedTextureSubImage2DEXT", compressedTextureSubImage2D);
+ ASSIGN("glCompressedTextureSubImage3DEXT", compressedTextureSubImage3D);
+ ASSIGN("glCopyTextureSubImage1DEXT", copyTextureSubImage1D);
+ ASSIGN("glCopyTextureSubImage2DEXT", copyTextureSubImage2D);
+ ASSIGN("glCopyTextureSubImage3DEXT", copyTextureSubImage3D);
+ ASSIGN("glDisableVertexArrayAttribEXT", disableVertexArrayAttrib);
+ ASSIGN("glEnableVertexArrayAttribEXT", enableVertexArrayAttrib);
+ ASSIGN("glFlushMappedNamedBufferRangeEXT", flushMappedNamedBufferRange);
+ ASSIGN("glGenerateTextureMipmapEXT", generateTextureMipmap);
+ ASSIGN("glGetCompressedTextureImageEXT", getCompressedTextureImage);
+ ASSIGN("glGetDoublei_vEXT", getDoublei_v);
+ ASSIGN("glGetFloati_vEXT", getFloati_v);
+ ASSIGN("glGetFramebufferParameterivEXT", getFramebufferParameteriv);
+ ASSIGN("glGetNamedBufferParameterivEXT", getNamedBufferParameteriv);
+ ASSIGN("glGetNamedBufferPointervEXT", getNamedBufferPointerv);
+ ASSIGN("glGetNamedBufferSubDataEXT", getNamedBufferSubData);
+ ASSIGN("glGetNamedFramebufferAttachmentParameterivEXT",
+ getNamedFramebufferAttachmentParameteriv);
+ ASSIGN("glGetNamedFramebufferParameterivEXT", getNamedFramebufferParameteriv);
+ ASSIGN("glGetNamedRenderbufferParameterivEXT", getNamedRenderbufferParameteriv);
+ ASSIGN("glGetTextureImageEXT", getTextureImage);
+ ASSIGN("glGetTextureLevelParameterfvEXT", getTextureLevelParameterfv);
+ ASSIGN("glGetTextureLevelParameterivEXT", getTextureLevelParameteriv);
+ ASSIGN("glGetTextureParameterIivEXT", getTextureParameterIiv);
+ ASSIGN("glGetTextureParameterIuivEXT", getTextureParameterIuiv);
+ ASSIGN("glGetTextureParameterfvEXT", getTextureParameterfv);
+ ASSIGN("glGetTextureParameterivEXT", getTextureParameteriv);
+ ASSIGN("glMapNamedBufferEXT", mapNamedBuffer);
+ ASSIGN("glMapNamedBufferRangeEXT", mapNamedBufferRange);
+ ASSIGN("glNamedBufferDataEXT", namedBufferData);
+ ASSIGN("glNamedBufferStorageEXT", namedBufferStorage);
+ ASSIGN("glNamedBufferSubDataEXT", namedBufferSubData);
+ ASSIGN("glNamedFramebufferParameteriEXT", namedFramebufferParameteri);
+ ASSIGN("glNamedFramebufferRenderbufferEXT", namedFramebufferRenderbuffer);
+ ASSIGN("glNamedFramebufferTextureEXT", namedFramebufferTexture);
+ ASSIGN("glNamedFramebufferTextureLayerEXT", namedFramebufferTextureLayer);
+ ASSIGN("glNamedRenderbufferStorageEXT", namedRenderbufferStorage);
+ ASSIGN("glNamedRenderbufferStorageMultisampleEXT", namedRenderbufferStorageMultisample);
+ ASSIGN("glProgramUniform1dEXT", programUniform1d);
+ ASSIGN("glProgramUniform1dvEXT", programUniform1dv);
+ ASSIGN("glProgramUniform2dEXT", programUniform2d);
+ ASSIGN("glProgramUniform2dvEXT", programUniform2dv);
+ ASSIGN("glProgramUniform3dEXT", programUniform3d);
+ ASSIGN("glProgramUniform3dvEXT", programUniform3dv);
+ ASSIGN("glProgramUniform4dEXT", programUniform4d);
+ ASSIGN("glProgramUniform4dvEXT", programUniform4dv);
+ ASSIGN("glProgramUniformMatrix2dvEXT", programUniformMatrix2dv);
+ ASSIGN("glProgramUniformMatrix2x3dvEXT", programUniformMatrix2x3dv);
+ ASSIGN("glProgramUniformMatrix2x4dvEXT", programUniformMatrix2x4dv);
+ ASSIGN("glProgramUniformMatrix3dvEXT", programUniformMatrix3dv);
+ ASSIGN("glProgramUniformMatrix3x2dvEXT", programUniformMatrix3x2dv);
+ ASSIGN("glProgramUniformMatrix3x4dvEXT", programUniformMatrix3x4dv);
+ ASSIGN("glProgramUniformMatrix4dvEXT", programUniformMatrix4dv);
+ ASSIGN("glProgramUniformMatrix4x2dvEXT", programUniformMatrix4x2dv);
+ ASSIGN("glProgramUniformMatrix4x3dvEXT", programUniformMatrix4x3dv);
+ ASSIGN("glTextureBufferEXT", textureBuffer);
+ ASSIGN("glTextureBufferRangeEXT", textureBufferRange);
+ ASSIGN("glTextureParameterIivEXT", textureParameterIiv);
+ ASSIGN("glTextureParameterIuivEXT", textureParameterIuiv);
+ ASSIGN("glTextureParameterfEXT", textureParameterf);
+ ASSIGN("glTextureParameterfvEXT", textureParameterfv);
+ ASSIGN("glTextureParameteriEXT", textureParameteri);
+ ASSIGN("glTextureParameterivEXT", textureParameteriv);
+ ASSIGN("glTextureStorage1DEXT", textureStorage1D);
+ ASSIGN("glTextureStorage2DEXT", textureStorage2D);
+ ASSIGN("glTextureStorage2DMultisampleEXT", textureStorage2DMultisample);
+ ASSIGN("glTextureStorage3DEXT", textureStorage3D);
+ ASSIGN("glTextureStorage3DMultisampleEXT", textureStorage3DMultisample);
+ ASSIGN("glTextureSubImage1DEXT", textureSubImage1D);
+ ASSIGN("glTextureSubImage2DEXT", textureSubImage2D);
+ ASSIGN("glTextureSubImage3DEXT", textureSubImage3D);
+ ASSIGN("glUnmapNamedBufferEXT", unmapNamedBuffer);
+ }
+
+ if (extensions.count("GL_EXT_draw_range_elements") != 0)
+ {
+ ASSIGN("glDrawRangeElementsEXT", drawRangeElements);
+ }
+
+ if (extensions.count("GL_EXT_framebuffer_blit") != 0)
+ {
+ ASSIGN("glBlitFramebufferEXT", blitFramebuffer);
+ }
+
+ if (extensions.count("GL_EXT_framebuffer_multisample") != 0)
+ {
+ ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
+ }
+
+ if (extensions.count("GL_EXT_framebuffer_object") != 0)
+ {
+ ASSIGN("glBindFramebufferEXT", bindFramebuffer);
+ ASSIGN("glBindRenderbufferEXT", bindRenderbuffer);
+ ASSIGN("glCheckFramebufferStatusEXT", checkFramebufferStatus);
+ ASSIGN("glDeleteFramebuffersEXT", deleteFramebuffers);
+ ASSIGN("glDeleteRenderbuffersEXT", deleteRenderbuffers);
+ ASSIGN("glFramebufferRenderbufferEXT", framebufferRenderbuffer);
+ ASSIGN("glFramebufferTexture1DEXT", framebufferTexture1D);
+ ASSIGN("glFramebufferTexture2DEXT", framebufferTexture2D);
+ ASSIGN("glFramebufferTexture3DEXT", framebufferTexture3D);
+ ASSIGN("glGenFramebuffersEXT", genFramebuffers);
+ ASSIGN("glGenRenderbuffersEXT", genRenderbuffers);
+ ASSIGN("glGenerateMipmapEXT", generateMipmap);
+ ASSIGN("glGetFramebufferAttachmentParameterivEXT", getFramebufferAttachmentParameteriv);
+ ASSIGN("glGetRenderbufferParameterivEXT", getRenderbufferParameteriv);
+ ASSIGN("glIsFramebufferEXT", isFramebuffer);
+ ASSIGN("glIsRenderbufferEXT", isRenderbuffer);
+ ASSIGN("glRenderbufferStorageEXT", renderbufferStorage);
+ }
+
+ if (extensions.count("GL_EXT_gpu_shader4") != 0)
+ {
+ ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
+ ASSIGN("glGetFragDataLocationEXT", getFragDataLocation);
+ ASSIGN("glGetUniformuivEXT", getUniformuiv);
+ ASSIGN("glUniform1uiEXT", uniform1ui);
+ ASSIGN("glUniform1uivEXT", uniform1uiv);
+ ASSIGN("glUniform2uiEXT", uniform2ui);
+ ASSIGN("glUniform2uivEXT", uniform2uiv);
+ ASSIGN("glUniform3uiEXT", uniform3ui);
+ ASSIGN("glUniform3uivEXT", uniform3uiv);
+ ASSIGN("glUniform4uiEXT", uniform4ui);
+ ASSIGN("glUniform4uivEXT", uniform4uiv);
+ }
+
+ if (extensions.count("GL_EXT_point_parameters") != 0)
+ {
+ ASSIGN("glPointParameterfEXT", pointParameterf);
+ ASSIGN("glPointParameterfvEXT", pointParameterfv);
+ }
+
+ if (extensions.count("GL_EXT_polygon_offset") != 0)
+ {
+ ASSIGN("glPolygonOffsetEXT", polygonOffset);
+ }
+
+ if (extensions.count("GL_EXT_provoking_vertex") != 0)
+ {
+ ASSIGN("glProvokingVertexEXT", provokingVertex);
+ }
+
+ if (extensions.count("GL_EXT_shader_image_load_store") != 0)
+ {
+ ASSIGN("glBindImageTextureEXT", bindImageTexture);
+ ASSIGN("glMemoryBarrierEXT", memoryBarrier);
+ }
+
+ if (extensions.count("GL_EXT_subtexture") != 0)
+ {
+ ASSIGN("glTexSubImage1DEXT", texSubImage1D);
+ ASSIGN("glTexSubImage2DEXT", texSubImage2D);
+ }
+
+ if (extensions.count("GL_EXT_texture3D") != 0)
+ {
+ ASSIGN("glTexImage3DEXT", texImage3D);
+ ASSIGN("glTexSubImage3DEXT", texSubImage3D);
+ }
+
+ if (extensions.count("GL_EXT_texture_array") != 0)
+ {
+ ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
+ }
+
+ if (extensions.count("GL_EXT_texture_buffer_object") != 0)
+ {
+ ASSIGN("glTexBufferEXT", texBuffer);
+ }
+
+ if (extensions.count("GL_EXT_texture_integer") != 0)
+ {
+ ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
+ ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
+ ASSIGN("glTexParameterIivEXT", texParameterIiv);
+ ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
+ }
+
+ if (extensions.count("GL_EXT_texture_object") != 0)
+ {
+ ASSIGN("glBindTextureEXT", bindTexture);
+ ASSIGN("glDeleteTexturesEXT", deleteTextures);
+ ASSIGN("glGenTexturesEXT", genTextures);
+ ASSIGN("glIsTextureEXT", isTexture);
+ }
+
+ if (extensions.count("GL_EXT_timer_query") != 0)
+ {
+ ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
+ ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
+ }
+
+ if (extensions.count("GL_EXT_transform_feedback") != 0)
+ {
+ ASSIGN("glBeginTransformFeedbackEXT", beginTransformFeedback);
+ ASSIGN("glBindBufferBaseEXT", bindBufferBase);
+ ASSIGN("glBindBufferRangeEXT", bindBufferRange);
+ ASSIGN("glEndTransformFeedbackEXT", endTransformFeedback);
+ ASSIGN("glGetTransformFeedbackVaryingEXT", getTransformFeedbackVarying);
+ ASSIGN("glTransformFeedbackVaryingsEXT", transformFeedbackVaryings);
+ }
+
+ if (extensions.count("GL_EXT_vertex_array") != 0)
+ {
+ ASSIGN("glDrawArraysEXT", drawArrays);
+ ASSIGN("glGetPointervEXT", getPointerv);
+ }
+
+ if (extensions.count("GL_EXT_vertex_attrib_64bit") != 0)
+ {
+ ASSIGN("glGetVertexAttribLdvEXT", getVertexAttribLdv);
+ ASSIGN("glVertexAttribL1dEXT", vertexAttribL1d);
+ ASSIGN("glVertexAttribL1dvEXT", vertexAttribL1dv);
+ ASSIGN("glVertexAttribL2dEXT", vertexAttribL2d);
+ ASSIGN("glVertexAttribL2dvEXT", vertexAttribL2dv);
+ ASSIGN("glVertexAttribL3dEXT", vertexAttribL3d);
+ ASSIGN("glVertexAttribL3dvEXT", vertexAttribL3dv);
+ ASSIGN("glVertexAttribL4dEXT", vertexAttribL4d);
+ ASSIGN("glVertexAttribL4dvEXT", vertexAttribL4dv);
+ ASSIGN("glVertexAttribLPointerEXT", vertexAttribLPointer);
+ }
+
+ if (extensions.count("GL_KHR_debug") != 0)
+ {
+ ASSIGN("glDebugMessageCallback", debugMessageCallback);
+ ASSIGN("glDebugMessageControl", debugMessageControl);
+ ASSIGN("glDebugMessageInsert", debugMessageInsert);
+ ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
+ ASSIGN("glGetObjectLabel", getObjectLabel);
+ ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
+ ASSIGN("glGetPointerv", getPointerv);
+ ASSIGN("glObjectLabel", objectLabel);
+ ASSIGN("glObjectPtrLabel", objectPtrLabel);
+ ASSIGN("glPopDebugGroup", popDebugGroup);
+ ASSIGN("glPushDebugGroup", pushDebugGroup);
+ }
+
+ if (extensions.count("GL_KHR_robustness") != 0)
+ {
+ ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
+ ASSIGN("glGetnUniformfv", getnUniformfv);
+ ASSIGN("glGetnUniformiv", getnUniformiv);
+ ASSIGN("glGetnUniformuiv", getnUniformuiv);
+ ASSIGN("glReadnPixels", readnPixels);
+ }
+
+ if (extensions.count("GL_NV_geometry_program4") != 0)
+ {
+ ASSIGN("glFramebufferTextureEXT", framebufferTexture);
+ ASSIGN("glFramebufferTextureLayerEXT", framebufferTextureLayer);
+ }
+
+ if (extensions.count("GL_NV_vertex_program4") != 0)
+ {
+ ASSIGN("glGetVertexAttribIivEXT", getVertexAttribIiv);
+ ASSIGN("glGetVertexAttribIuivEXT", getVertexAttribIuiv);
+ ASSIGN("glVertexAttribI1iEXT", vertexAttribI1i);
+ ASSIGN("glVertexAttribI1ivEXT", vertexAttribI1iv);
+ ASSIGN("glVertexAttribI1uiEXT", vertexAttribI1ui);
+ ASSIGN("glVertexAttribI1uivEXT", vertexAttribI1uiv);
+ ASSIGN("glVertexAttribI2iEXT", vertexAttribI2i);
+ ASSIGN("glVertexAttribI2ivEXT", vertexAttribI2iv);
+ ASSIGN("glVertexAttribI2uiEXT", vertexAttribI2ui);
+ ASSIGN("glVertexAttribI2uivEXT", vertexAttribI2uiv);
+ ASSIGN("glVertexAttribI3iEXT", vertexAttribI3i);
+ ASSIGN("glVertexAttribI3ivEXT", vertexAttribI3iv);
+ ASSIGN("glVertexAttribI3uiEXT", vertexAttribI3ui);
+ ASSIGN("glVertexAttribI3uivEXT", vertexAttribI3uiv);
+ ASSIGN("glVertexAttribI4bvEXT", vertexAttribI4bv);
+ ASSIGN("glVertexAttribI4iEXT", vertexAttribI4i);
+ ASSIGN("glVertexAttribI4ivEXT", vertexAttribI4iv);
+ ASSIGN("glVertexAttribI4svEXT", vertexAttribI4sv);
+ ASSIGN("glVertexAttribI4ubvEXT", vertexAttribI4ubv);
+ ASSIGN("glVertexAttribI4uiEXT", vertexAttribI4ui);
+ ASSIGN("glVertexAttribI4uivEXT", vertexAttribI4uiv);
+ ASSIGN("glVertexAttribI4usvEXT", vertexAttribI4usv);
+ ASSIGN("glVertexAttribIPointerEXT", vertexAttribIPointer);
+ }
+
+ if (extensions.count("GL_OES_single_precision") != 0)
+ {
+ ASSIGN("glClearDepthfOES", clearDepthf);
+ ASSIGN("glDepthRangefOES", depthRangef);
+ }
+}
+
+void DispatchTableGL::initProcsGLES(const gl::Version &version,
+ const std::set<std::string> &extensions)
+{
+ if (version >= gl::Version(2, 0))
+ {
+ ASSIGN("glActiveTexture", activeTexture);
+ ASSIGN("glAttachShader", attachShader);
+ ASSIGN("glBindAttribLocation", bindAttribLocation);
+ ASSIGN("glBindBuffer", bindBuffer);
+ ASSIGN("glBindFramebuffer", bindFramebuffer);
+ ASSIGN("glBindRenderbuffer", bindRenderbuffer);
+ ASSIGN("glBindTexture", bindTexture);
+ ASSIGN("glBlendColor", blendColor);
+ ASSIGN("glBlendEquation", blendEquation);
+ ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
+ ASSIGN("glBlendFunc", blendFunc);
+ ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
+ ASSIGN("glBufferData", bufferData);
+ ASSIGN("glBufferSubData", bufferSubData);
+ ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
+ ASSIGN("glClear", clear);
+ ASSIGN("glClearColor", clearColor);
+ ASSIGN("glClearDepthf", clearDepthf);
+ ASSIGN("glClearStencil", clearStencil);
+ ASSIGN("glColorMask", colorMask);
+ ASSIGN("glCompileShader", compileShader);
+ ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
+ ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
+ ASSIGN("glCopyTexImage2D", copyTexImage2D);
+ ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
+ ASSIGN("glCreateProgram", createProgram);
+ ASSIGN("glCreateShader", createShader);
+ ASSIGN("glCullFace", cullFace);
+ ASSIGN("glDeleteBuffers", deleteBuffers);
+ ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
+ ASSIGN("glDeleteProgram", deleteProgram);
+ ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
+ ASSIGN("glDeleteShader", deleteShader);
+ ASSIGN("glDeleteTextures", deleteTextures);
+ ASSIGN("glDepthFunc", depthFunc);
+ ASSIGN("glDepthMask", depthMask);
+ ASSIGN("glDepthRangef", depthRangef);
+ ASSIGN("glDetachShader", detachShader);
+ ASSIGN("glDisable", disable);
+ ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
+ ASSIGN("glDrawArrays", drawArrays);
+ ASSIGN("glDrawElements", drawElements);
+ ASSIGN("glEnable", enable);
+ ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
+ ASSIGN("glFinish", finish);
+ ASSIGN("glFlush", flush);
+ ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
+ ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
+ ASSIGN("glFrontFace", frontFace);
+ ASSIGN("glGenBuffers", genBuffers);
+ ASSIGN("glGenFramebuffers", genFramebuffers);
+ ASSIGN("glGenRenderbuffers", genRenderbuffers);
+ ASSIGN("glGenTextures", genTextures);
+ ASSIGN("glGenerateMipmap", generateMipmap);
+ ASSIGN("glGetActiveAttrib", getActiveAttrib);
+ ASSIGN("glGetActiveUniform", getActiveUniform);
+ ASSIGN("glGetAttachedShaders", getAttachedShaders);
+ ASSIGN("glGetAttribLocation", getAttribLocation);
+ ASSIGN("glGetBooleanv", getBooleanv);
+ ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
+ ASSIGN("glGetError", getError);
+ ASSIGN("glGetFloatv", getFloatv);
+ ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
+ ASSIGN("glGetIntegerv", getIntegerv);
+ ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
+ ASSIGN("glGetProgramiv", getProgramiv);
+ ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
+ ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
+ ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
+ ASSIGN("glGetShaderSource", getShaderSource);
+ ASSIGN("glGetShaderiv", getShaderiv);
+ ASSIGN("glGetString", getString);
+ ASSIGN("glGetTexParameterfv", getTexParameterfv);
+ ASSIGN("glGetTexParameteriv", getTexParameteriv);
+ ASSIGN("glGetUniformLocation", getUniformLocation);
+ ASSIGN("glGetUniformfv", getUniformfv);
+ ASSIGN("glGetUniformiv", getUniformiv);
+ ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
+ ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
+ ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
+ ASSIGN("glHint", hint);
+ ASSIGN("glIsBuffer", isBuffer);
+ ASSIGN("glIsEnabled", isEnabled);
+ ASSIGN("glIsFramebuffer", isFramebuffer);
+ ASSIGN("glIsProgram", isProgram);
+ ASSIGN("glIsRenderbuffer", isRenderbuffer);
+ ASSIGN("glIsShader", isShader);
+ ASSIGN("glIsTexture", isTexture);
+ ASSIGN("glLineWidth", lineWidth);
+ ASSIGN("glLinkProgram", linkProgram);
+ ASSIGN("glPixelStorei", pixelStorei);
+ ASSIGN("glPolygonOffset", polygonOffset);
+ ASSIGN("glReadPixels", readPixels);
+ ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
+ ASSIGN("glRenderbufferStorage", renderbufferStorage);
+ ASSIGN("glSampleCoverage", sampleCoverage);
+ ASSIGN("glScissor", scissor);
+ ASSIGN("glShaderBinary", shaderBinary);
+ ASSIGN("glShaderSource", shaderSource);
+ ASSIGN("glStencilFunc", stencilFunc);
+ ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
+ ASSIGN("glStencilMask", stencilMask);
+ ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
+ ASSIGN("glStencilOp", stencilOp);
+ ASSIGN("glStencilOpSeparate", stencilOpSeparate);
+ ASSIGN("glTexImage2D", texImage2D);
+ ASSIGN("glTexParameterf", texParameterf);
+ ASSIGN("glTexParameterfv", texParameterfv);
+ ASSIGN("glTexParameteri", texParameteri);
+ ASSIGN("glTexParameteriv", texParameteriv);
+ ASSIGN("glTexSubImage2D", texSubImage2D);
+ ASSIGN("glUniform1f", uniform1f);
+ ASSIGN("glUniform1fv", uniform1fv);
+ ASSIGN("glUniform1i", uniform1i);
+ ASSIGN("glUniform1iv", uniform1iv);
+ ASSIGN("glUniform2f", uniform2f);
+ ASSIGN("glUniform2fv", uniform2fv);
+ ASSIGN("glUniform2i", uniform2i);
+ ASSIGN("glUniform2iv", uniform2iv);
+ ASSIGN("glUniform3f", uniform3f);
+ ASSIGN("glUniform3fv", uniform3fv);
+ ASSIGN("glUniform3i", uniform3i);
+ ASSIGN("glUniform3iv", uniform3iv);
+ ASSIGN("glUniform4f", uniform4f);
+ ASSIGN("glUniform4fv", uniform4fv);
+ ASSIGN("glUniform4i", uniform4i);
+ ASSIGN("glUniform4iv", uniform4iv);
+ ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
+ ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
+ ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
+ ASSIGN("glUseProgram", useProgram);
+ ASSIGN("glValidateProgram", validateProgram);
+ ASSIGN("glVertexAttrib1f", vertexAttrib1f);
+ ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
+ ASSIGN("glVertexAttrib2f", vertexAttrib2f);
+ ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
+ ASSIGN("glVertexAttrib3f", vertexAttrib3f);
+ ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
+ ASSIGN("glVertexAttrib4f", vertexAttrib4f);
+ ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
+ ASSIGN("glVertexAttribPointer", vertexAttribPointer);
+ ASSIGN("glViewport", viewport);
+ }
+
+ if (version >= gl::Version(3, 0))
+ {
+ ASSIGN("glBeginQuery", beginQuery);
+ ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
+ ASSIGN("glBindBufferBase", bindBufferBase);
+ ASSIGN("glBindBufferRange", bindBufferRange);
+ ASSIGN("glBindSampler", bindSampler);
+ ASSIGN("glBindTransformFeedback", bindTransformFeedback);
+ ASSIGN("glBindVertexArray", bindVertexArray);
+ ASSIGN("glBlitFramebuffer", blitFramebuffer);
+ ASSIGN("glClearBufferfi", clearBufferfi);
+ ASSIGN("glClearBufferfv", clearBufferfv);
+ ASSIGN("glClearBufferiv", clearBufferiv);
+ ASSIGN("glClearBufferuiv", clearBufferuiv);
+ ASSIGN("glClientWaitSync", clientWaitSync);
+ ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
+ ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
+ ASSIGN("glCopyBufferSubData", copyBufferSubData);
+ ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
+ ASSIGN("glDeleteQueries", deleteQueries);
+ ASSIGN("glDeleteSamplers", deleteSamplers);
+ ASSIGN("glDeleteSync", deleteSync);
+ ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
+ ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
+ ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
+ ASSIGN("glDrawBuffers", drawBuffers);
+ ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
+ ASSIGN("glDrawRangeElements", drawRangeElements);
+ ASSIGN("glEndQuery", endQuery);
+ ASSIGN("glEndTransformFeedback", endTransformFeedback);
+ ASSIGN("glFenceSync", fenceSync);
+ ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
+ ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
+ ASSIGN("glGenQueries", genQueries);
+ ASSIGN("glGenSamplers", genSamplers);
+ ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
+ ASSIGN("glGenVertexArrays", genVertexArrays);
+ ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
+ ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
+ ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
+ ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
+ ASSIGN("glGetBufferPointerv", getBufferPointerv);
+ ASSIGN("glGetFragDataLocation", getFragDataLocation);
+ ASSIGN("glGetInteger64i_v", getInteger64i_v);
+ ASSIGN("glGetInteger64v", getInteger64v);
+ ASSIGN("glGetIntegeri_v", getIntegeri_v);
+ ASSIGN("glGetInternalformativ", getInternalformativ);
+ ASSIGN("glGetProgramBinary", getProgramBinary);
+ ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
+ ASSIGN("glGetQueryiv", getQueryiv);
+ ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
+ ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
+ ASSIGN("glGetStringi", getStringi);
+ ASSIGN("glGetSynciv", getSynciv);
+ ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
+ ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
+ ASSIGN("glGetUniformIndices", getUniformIndices);
+ ASSIGN("glGetUniformuiv", getUniformuiv);
+ ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
+ ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
+ ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
+ ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
+ ASSIGN("glIsQuery", isQuery);
+ ASSIGN("glIsSampler", isSampler);
+ ASSIGN("glIsSync", isSync);
+ ASSIGN("glIsTransformFeedback", isTransformFeedback);
+ ASSIGN("glIsVertexArray", isVertexArray);
+ ASSIGN("glMapBufferRange", mapBufferRange);
+ ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
+ ASSIGN("glProgramBinary", programBinary);
+ ASSIGN("glProgramParameteri", programParameteri);
+ ASSIGN("glReadBuffer", readBuffer);
+ ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
+ ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
+ ASSIGN("glSamplerParameterf", samplerParameterf);
+ ASSIGN("glSamplerParameterfv", samplerParameterfv);
+ ASSIGN("glSamplerParameteri", samplerParameteri);
+ ASSIGN("glSamplerParameteriv", samplerParameteriv);
+ ASSIGN("glTexImage3D", texImage3D);
+ ASSIGN("glTexStorage2D", texStorage2D);
+ ASSIGN("glTexStorage3D", texStorage3D);
+ ASSIGN("glTexSubImage3D", texSubImage3D);
+ ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
+ ASSIGN("glUniform1ui", uniform1ui);
+ ASSIGN("glUniform1uiv", uniform1uiv);
+ ASSIGN("glUniform2ui", uniform2ui);
+ ASSIGN("glUniform2uiv", uniform2uiv);
+ ASSIGN("glUniform3ui", uniform3ui);
+ ASSIGN("glUniform3uiv", uniform3uiv);
+ ASSIGN("glUniform4ui", uniform4ui);
+ ASSIGN("glUniform4uiv", uniform4uiv);
+ ASSIGN("glUniformBlockBinding", uniformBlockBinding);
+ ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
+ ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
+ ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
+ ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
+ ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
+ ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
+ ASSIGN("glUnmapBuffer", unmapBuffer);
+ ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
+ ASSIGN("glVertexAttribI4i", vertexAttribI4i);
+ ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
+ ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
+ ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
+ ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
+ ASSIGN("glWaitSync", waitSync);
+ }
+
+ if (version >= gl::Version(3, 1))
+ {
+ ASSIGN("glActiveShaderProgram", activeShaderProgram);
+ ASSIGN("glBindImageTexture", bindImageTexture);
+ ASSIGN("glBindProgramPipeline", bindProgramPipeline);
+ ASSIGN("glBindVertexBuffer", bindVertexBuffer);
+ ASSIGN("glCreateShaderProgramv", createShaderProgramv);
+ ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
+ ASSIGN("glDispatchCompute", dispatchCompute);
+ ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
+ ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
+ ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
+ ASSIGN("glFramebufferParameteri", framebufferParameteri);
+ ASSIGN("glGenProgramPipelines", genProgramPipelines);
+ ASSIGN("glGetBooleani_v", getBooleani_v);
+ ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
+ ASSIGN("glGetMultisamplefv", getMultisamplefv);
+ ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
+ ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
+ ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
+ ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
+ ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
+ ASSIGN("glGetProgramResourceName", getProgramResourceName);
+ ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
+ ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
+ ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
+ ASSIGN("glIsProgramPipeline", isProgramPipeline);
+ ASSIGN("glMemoryBarrier", memoryBarrier);
+ ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
+ ASSIGN("glProgramUniform1f", programUniform1f);
+ ASSIGN("glProgramUniform1fv", programUniform1fv);
+ ASSIGN("glProgramUniform1i", programUniform1i);
+ ASSIGN("glProgramUniform1iv", programUniform1iv);
+ ASSIGN("glProgramUniform1ui", programUniform1ui);
+ ASSIGN("glProgramUniform1uiv", programUniform1uiv);
+ ASSIGN("glProgramUniform2f", programUniform2f);
+ ASSIGN("glProgramUniform2fv", programUniform2fv);
+ ASSIGN("glProgramUniform2i", programUniform2i);
+ ASSIGN("glProgramUniform2iv", programUniform2iv);
+ ASSIGN("glProgramUniform2ui", programUniform2ui);
+ ASSIGN("glProgramUniform2uiv", programUniform2uiv);
+ ASSIGN("glProgramUniform3f", programUniform3f);
+ ASSIGN("glProgramUniform3fv", programUniform3fv);
+ ASSIGN("glProgramUniform3i", programUniform3i);
+ ASSIGN("glProgramUniform3iv", programUniform3iv);
+ ASSIGN("glProgramUniform3ui", programUniform3ui);
+ ASSIGN("glProgramUniform3uiv", programUniform3uiv);
+ ASSIGN("glProgramUniform4f", programUniform4f);
+ ASSIGN("glProgramUniform4fv", programUniform4fv);
+ ASSIGN("glProgramUniform4i", programUniform4i);
+ ASSIGN("glProgramUniform4iv", programUniform4iv);
+ ASSIGN("glProgramUniform4ui", programUniform4ui);
+ ASSIGN("glProgramUniform4uiv", programUniform4uiv);
+ ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
+ ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
+ ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
+ ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
+ ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
+ ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
+ ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
+ ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
+ ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
+ ASSIGN("glSampleMaski", sampleMaski);
+ ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
+ ASSIGN("glUseProgramStages", useProgramStages);
+ ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
+ ASSIGN("glVertexAttribBinding", vertexAttribBinding);
+ ASSIGN("glVertexAttribFormat", vertexAttribFormat);
+ ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
+ ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
+ }
+
+ if (version >= gl::Version(3, 2))
+ {
+ ASSIGN("glBlendBarrier", blendBarrier);
+ ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
+ ASSIGN("glBlendEquationi", blendEquationi);
+ ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
+ ASSIGN("glBlendFunci", blendFunci);
+ ASSIGN("glColorMaski", colorMaski);
+ ASSIGN("glCopyImageSubData", copyImageSubData);
+ ASSIGN("glDebugMessageCallback", debugMessageCallback);
+ ASSIGN("glDebugMessageControl", debugMessageControl);
+ ASSIGN("glDebugMessageInsert", debugMessageInsert);
+ ASSIGN("glDisablei", disablei);
+ ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
+ ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
+ ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
+ ASSIGN("glEnablei", enablei);
+ ASSIGN("glFramebufferTexture", framebufferTexture);
+ ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
+ ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
+ ASSIGN("glGetObjectLabel", getObjectLabel);
+ ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
+ ASSIGN("glGetPointerv", getPointerv);
+ ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
+ ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
+ ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
+ ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
+ ASSIGN("glGetnUniformfv", getnUniformfv);
+ ASSIGN("glGetnUniformiv", getnUniformiv);
+ ASSIGN("glGetnUniformuiv", getnUniformuiv);
+ ASSIGN("glIsEnabledi", isEnabledi);
+ ASSIGN("glMinSampleShading", minSampleShading);
+ ASSIGN("glObjectLabel", objectLabel);
+ ASSIGN("glObjectPtrLabel", objectPtrLabel);
+ ASSIGN("glPatchParameteri", patchParameteri);
+ ASSIGN("glPopDebugGroup", popDebugGroup);
+ ASSIGN("glPrimitiveBoundingBox", primitiveBoundingBox);
+ ASSIGN("glPushDebugGroup", pushDebugGroup);
+ ASSIGN("glReadnPixels", readnPixels);
+ ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
+ ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
+ ASSIGN("glTexBuffer", texBuffer);
+ ASSIGN("glTexBufferRange", texBufferRange);
+ ASSIGN("glTexParameterIiv", texParameterIiv);
+ ASSIGN("glTexParameterIuiv", texParameterIuiv);
+ ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
+ }
+
+ if (extensions.count("GL_EXT_base_instance") != 0)
+ {
+ ASSIGN("glDrawArraysInstancedBaseInstanceEXT", drawArraysInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseInstanceEXT", drawElementsInstancedBaseInstance);
+ ASSIGN("glDrawElementsInstancedBaseVertexBaseInstanceEXT",
+ drawElementsInstancedBaseVertexBaseInstance);
+ }
+
+ if (extensions.count("GL_EXT_blend_func_extended") != 0)
+ {
+ ASSIGN("glBindFragDataLocationEXT", bindFragDataLocation);
+ ASSIGN("glBindFragDataLocationIndexedEXT", bindFragDataLocationIndexed);
+ ASSIGN("glGetFragDataIndexEXT", getFragDataIndex);
+ ASSIGN("glGetProgramResourceLocationIndexEXT", getProgramResourceLocationIndex);
+ }
+
+ if (extensions.count("GL_EXT_buffer_storage") != 0)
+ {
+ ASSIGN("glBufferStorageEXT", bufferStorage);
+ }
+
+ if (extensions.count("GL_EXT_clear_texture") != 0)
+ {
+ ASSIGN("glClearTexImageEXT", clearTexImage);
+ ASSIGN("glClearTexSubImageEXT", clearTexSubImage);
+ }
+
+ if (extensions.count("GL_EXT_copy_image") != 0)
+ {
+ ASSIGN("glCopyImageSubDataEXT", copyImageSubData);
+ }
+
+ if (extensions.count("GL_EXT_discard_framebuffer") != 0)
+ {
+ ASSIGN("glDiscardFramebufferEXT", discardFramebufferEXT);
+ }
+
+ if (extensions.count("GL_EXT_disjoint_timer_query") != 0)
+ {
+ ASSIGN("glBeginQueryEXT", beginQuery);
+ ASSIGN("glDeleteQueriesEXT", deleteQueries);
+ ASSIGN("glEndQueryEXT", endQuery);
+ ASSIGN("glGenQueriesEXT", genQueries);
+ ASSIGN("glGetQueryObjecti64vEXT", getQueryObjecti64v);
+ ASSIGN("glGetQueryObjectivEXT", getQueryObjectiv);
+ ASSIGN("glGetQueryObjectui64vEXT", getQueryObjectui64v);
+ ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
+ ASSIGN("glGetQueryivEXT", getQueryiv);
+ ASSIGN("glIsQueryEXT", isQuery);
+ ASSIGN("glQueryCounterEXT", queryCounter);
+ }
+
+ if (extensions.count("GL_EXT_draw_buffers") != 0)
+ {
+ ASSIGN("glDrawBuffersEXT", drawBuffers);
+ }
+
+ if (extensions.count("GL_EXT_draw_buffers_indexed") != 0)
+ {
+ ASSIGN("glBlendEquationSeparateiEXT", blendEquationSeparatei);
+ ASSIGN("glBlendEquationiEXT", blendEquationi);
+ ASSIGN("glBlendFuncSeparateiEXT", blendFuncSeparatei);
+ ASSIGN("glBlendFunciEXT", blendFunci);
+ ASSIGN("glColorMaskiEXT", colorMaski);
+ ASSIGN("glDisableiEXT", disablei);
+ ASSIGN("glEnableiEXT", enablei);
+ ASSIGN("glIsEnablediEXT", isEnabledi);
+ }
+
+ if (extensions.count("GL_EXT_draw_elements_base_vertex") != 0)
+ {
+ ASSIGN("glDrawElementsBaseVertexEXT", drawElementsBaseVertex);
+ ASSIGN("glDrawElementsInstancedBaseVertexEXT", drawElementsInstancedBaseVertex);
+ ASSIGN("glDrawRangeElementsBaseVertexEXT", drawRangeElementsBaseVertex);
+ ASSIGN("glMultiDrawElementsBaseVertexEXT", multiDrawElementsBaseVertex);
+ }
+
+ if (extensions.count("GL_EXT_draw_transform_feedback") != 0)
+ {
+ ASSIGN("glDrawTransformFeedbackEXT", drawTransformFeedback);
+ ASSIGN("glDrawTransformFeedbackInstancedEXT", drawTransformFeedbackInstanced);
+ }
+
+ if (extensions.count("GL_EXT_geometry_shader") != 0)
+ {
+ ASSIGN("glFramebufferTextureEXT", framebufferTexture);
+ }
+
+ if (extensions.count("GL_EXT_instanced_arrays") != 0)
+ {
+ ASSIGN("glVertexAttribDivisorEXT", vertexAttribDivisor);
+ }
+
+ if (extensions.count("GL_EXT_map_buffer_range") != 0)
+ {
+ ASSIGN("glFlushMappedBufferRangeEXT", flushMappedBufferRange);
+ ASSIGN("glMapBufferRangeEXT", mapBufferRange);
+ }
+
+ if (extensions.count("GL_EXT_multi_draw_indirect") != 0)
+ {
+ ASSIGN("glMultiDrawArraysIndirectEXT", multiDrawArraysIndirect);
+ ASSIGN("glMultiDrawElementsIndirectEXT", multiDrawElementsIndirect);
+ }
+
+ if (extensions.count("GL_EXT_multisampled_render_to_texture") != 0)
+ {
+ ASSIGN("glRenderbufferStorageMultisampleEXT", renderbufferStorageMultisample);
+ }
+
+ if (extensions.count("GL_EXT_multiview_draw_buffers") != 0)
+ {
+ ASSIGN("glGetIntegeri_vEXT", getIntegeri_v);
+ }
+
+ if (extensions.count("GL_EXT_occlusion_query_boolean") != 0)
+ {
+ ASSIGN("glBeginQueryEXT", beginQuery);
+ ASSIGN("glDeleteQueriesEXT", deleteQueries);
+ ASSIGN("glEndQueryEXT", endQuery);
+ ASSIGN("glGenQueriesEXT", genQueries);
+ ASSIGN("glGetQueryObjectuivEXT", getQueryObjectuiv);
+ ASSIGN("glGetQueryivEXT", getQueryiv);
+ ASSIGN("glIsQueryEXT", isQuery);
+ }
+
+ if (extensions.count("GL_EXT_primitive_bounding_box") != 0)
+ {
+ ASSIGN("glPrimitiveBoundingBoxEXT", primitiveBoundingBox);
+ }
+
+ if (extensions.count("GL_EXT_robustness") != 0)
+ {
+ ASSIGN("glGetGraphicsResetStatusEXT", getGraphicsResetStatus);
+ ASSIGN("glGetnUniformfvEXT", getnUniformfv);
+ ASSIGN("glGetnUniformivEXT", getnUniformiv);
+ ASSIGN("glReadnPixelsEXT", readnPixels);
+ }
+
+ if (extensions.count("GL_EXT_tessellation_shader") != 0)
+ {
+ ASSIGN("glPatchParameteriEXT", patchParameteri);
+ }
+
+ if (extensions.count("GL_EXT_texture_border_clamp") != 0)
+ {
+ ASSIGN("glGetSamplerParameterIivEXT", getSamplerParameterIiv);
+ ASSIGN("glGetSamplerParameterIuivEXT", getSamplerParameterIuiv);
+ ASSIGN("glGetTexParameterIivEXT", getTexParameterIiv);
+ ASSIGN("glGetTexParameterIuivEXT", getTexParameterIuiv);
+ ASSIGN("glSamplerParameterIivEXT", samplerParameterIiv);
+ ASSIGN("glSamplerParameterIuivEXT", samplerParameterIuiv);
+ ASSIGN("glTexParameterIivEXT", texParameterIiv);
+ ASSIGN("glTexParameterIuivEXT", texParameterIuiv);
+ }
+
+ if (extensions.count("GL_EXT_texture_buffer") != 0)
+ {
+ ASSIGN("glTexBufferEXT", texBuffer);
+ ASSIGN("glTexBufferRangeEXT", texBufferRange);
+ }
+
+ if (extensions.count("GL_EXT_texture_storage") != 0)
+ {
+ ASSIGN("glTexStorage1DEXT", texStorage1D);
+ ASSIGN("glTexStorage2DEXT", texStorage2D);
+ ASSIGN("glTexStorage3DEXT", texStorage3D);
+ ASSIGN("glTextureStorage1DEXT", textureStorage1D);
+ ASSIGN("glTextureStorage2DEXT", textureStorage2D);
+ ASSIGN("glTextureStorage3DEXT", textureStorage3D);
+ }
+
+ if (extensions.count("GL_EXT_texture_view") != 0)
+ {
+ ASSIGN("glTextureViewEXT", textureView);
+ }
+
+ if (extensions.count("GL_KHR_debug") != 0)
+ {
+ ASSIGN("glDebugMessageCallbackKHR", debugMessageCallback);
+ ASSIGN("glDebugMessageControlKHR", debugMessageControl);
+ ASSIGN("glDebugMessageInsertKHR", debugMessageInsert);
+ ASSIGN("glGetDebugMessageLogKHR", getDebugMessageLog);
+ ASSIGN("glGetObjectLabelKHR", getObjectLabel);
+ ASSIGN("glGetObjectPtrLabelKHR", getObjectPtrLabel);
+ ASSIGN("glGetPointervKHR", getPointerv);
+ ASSIGN("glObjectLabelKHR", objectLabel);
+ ASSIGN("glObjectPtrLabelKHR", objectPtrLabel);
+ ASSIGN("glPopDebugGroupKHR", popDebugGroup);
+ ASSIGN("glPushDebugGroupKHR", pushDebugGroup);
+ }
+
+ if (extensions.count("GL_KHR_robustness") != 0)
+ {
+ ASSIGN("glGetGraphicsResetStatusKHR", getGraphicsResetStatus);
+ ASSIGN("glGetnUniformfvKHR", getnUniformfv);
+ ASSIGN("glGetnUniformivKHR", getnUniformiv);
+ ASSIGN("glGetnUniformuivKHR", getnUniformuiv);
+ ASSIGN("glReadnPixelsKHR", readnPixels);
+ }
+
+ if (extensions.count("GL_OES_EGL_image") != 0)
+ {
+ ASSIGN("glEGLImageTargetRenderbufferStorageOES", eGLImageTargetRenderbufferStorageOES);
+ ASSIGN("glEGLImageTargetTexture2DOES", eGLImageTargetTexture2DOES);
+ }
+
+ if (extensions.count("GL_OES_copy_image") != 0)
+ {
+ ASSIGN("glCopyImageSubDataOES", copyImageSubData);
+ }
+
+ if (extensions.count("GL_OES_draw_buffers_indexed") != 0)
+ {
+ ASSIGN("glBlendEquationSeparateiOES", blendEquationSeparatei);
+ ASSIGN("glBlendEquationiOES", blendEquationi);
+ ASSIGN("glBlendFuncSeparateiOES", blendFuncSeparatei);
+ ASSIGN("glBlendFunciOES", blendFunci);
+ ASSIGN("glColorMaskiOES", colorMaski);
+ ASSIGN("glDisableiOES", disablei);
+ ASSIGN("glEnableiOES", enablei);
+ ASSIGN("glIsEnablediOES", isEnabledi);
+ }
+
+ if (extensions.count("GL_OES_draw_elements_base_vertex") != 0)
+ {
+ ASSIGN("glDrawElementsBaseVertexOES", drawElementsBaseVertex);
+ ASSIGN("glDrawElementsInstancedBaseVertexOES", drawElementsInstancedBaseVertex);
+ ASSIGN("glDrawRangeElementsBaseVertexOES", drawRangeElementsBaseVertex);
+ ASSIGN("glMultiDrawElementsBaseVertexOES", multiDrawElementsBaseVertex);
+ }
+
+ if (extensions.count("GL_OES_geometry_shader") != 0)
+ {
+ ASSIGN("glFramebufferTextureOES", framebufferTexture);
+ }
+
+ if (extensions.count("GL_OES_get_program_binary") != 0)
+ {
+ ASSIGN("glGetProgramBinaryOES", getProgramBinary);
+ ASSIGN("glProgramBinaryOES", programBinary);
+ }
+
+ if (extensions.count("GL_OES_mapbuffer") != 0)
+ {
+ ASSIGN("glGetBufferPointervOES", getBufferPointerv);
+ ASSIGN("glMapBufferOES", mapBuffer);
+ ASSIGN("glUnmapBufferOES", unmapBuffer);
+ }
+
+ if (extensions.count("GL_OES_primitive_bounding_box") != 0)
+ {
+ ASSIGN("glPrimitiveBoundingBoxOES", primitiveBoundingBox);
+ }
+
+ if (extensions.count("GL_OES_sample_shading") != 0)
+ {
+ ASSIGN("glMinSampleShadingOES", minSampleShading);
+ }
+
+ if (extensions.count("GL_OES_tessellation_shader") != 0)
+ {
+ ASSIGN("glPatchParameteriOES", patchParameteri);
+ }
+
+ if (extensions.count("GL_OES_texture_3D") != 0)
+ {
+ ASSIGN("glCompressedTexImage3DOES", compressedTexImage3D);
+ ASSIGN("glCompressedTexSubImage3DOES", compressedTexSubImage3D);
+ ASSIGN("glCopyTexSubImage3DOES", copyTexSubImage3D);
+ ASSIGN("glFramebufferTexture3DOES", framebufferTexture3D);
+ ASSIGN("glTexImage3DOES", texImage3D);
+ ASSIGN("glTexSubImage3DOES", texSubImage3D);
+ }
+
+ if (extensions.count("GL_OES_texture_border_clamp") != 0)
+ {
+ ASSIGN("glGetSamplerParameterIivOES", getSamplerParameterIiv);
+ ASSIGN("glGetSamplerParameterIuivOES", getSamplerParameterIuiv);
+ ASSIGN("glGetTexParameterIivOES", getTexParameterIiv);
+ ASSIGN("glGetTexParameterIuivOES", getTexParameterIuiv);
+ ASSIGN("glSamplerParameterIivOES", samplerParameterIiv);
+ ASSIGN("glSamplerParameterIuivOES", samplerParameterIuiv);
+ ASSIGN("glTexParameterIivOES", texParameterIiv);
+ ASSIGN("glTexParameterIuivOES", texParameterIuiv);
+ }
+
+ if (extensions.count("GL_OES_texture_buffer") != 0)
+ {
+ ASSIGN("glTexBufferOES", texBuffer);
+ ASSIGN("glTexBufferRangeOES", texBufferRange);
+ }
+
+ if (extensions.count("GL_OES_texture_storage_multisample_2d_array") != 0)
+ {
+ ASSIGN("glTexStorage3DMultisampleOES", texStorage3DMultisample);
+ }
+
+ if (extensions.count("GL_OES_texture_view") != 0)
+ {
+ ASSIGN("glTextureViewOES", textureView);
+ }
+
+ if (extensions.count("GL_OES_vertex_array_object") != 0)
+ {
+ ASSIGN("glBindVertexArrayOES", bindVertexArray);
+ ASSIGN("glDeleteVertexArraysOES", deleteVertexArrays);
+ ASSIGN("glGenVertexArraysOES", genVertexArrays);
+ ASSIGN("glIsVertexArrayOES", isVertexArray);
+ }
+
+ if (extensions.count("GL_OES_viewport_array") != 0)
+ {
+ ASSIGN("glDisableiOES", disablei);
+ ASSIGN("glEnableiOES", enablei);
+ ASSIGN("glGetFloati_vOES", getFloati_v);
+ ASSIGN("glIsEnablediOES", isEnabledi);
+ ASSIGN("glScissorArrayvOES", scissorArrayv);
+ ASSIGN("glScissorIndexedOES", scissorIndexed);
+ ASSIGN("glScissorIndexedvOES", scissorIndexedv);
+ ASSIGN("glViewportArrayvOES", viewportArrayv);
+ ASSIGN("glViewportIndexedfOES", viewportIndexedf);
+ ASSIGN("glViewportIndexedfvOES", viewportIndexedfv);
+ }
+}
+
+void DispatchTableGL::initProcsSharedExtensions(const std::set<std::string> &extensions)
+{
+ if (extensions.count("GL_EXT_blend_minmax") != 0)
+ {
+ ASSIGN("glBlendEquationEXT", blendEquation);
+ }
+
+ if (extensions.count("GL_EXT_debug_label") != 0)
+ {
+ ASSIGN("glGetObjectLabelEXT", getObjectLabel);
+ }
+
+ if (extensions.count("GL_EXT_draw_instanced") != 0)
+ {
+ ASSIGN("glDrawArraysInstancedEXT", drawArraysInstanced);
+ ASSIGN("glDrawElementsInstancedEXT", drawElementsInstanced);
+ }
+
+ if (extensions.count("GL_EXT_multi_draw_arrays") != 0)
+ {
+ ASSIGN("glMultiDrawArraysEXT", multiDrawArrays);
+ ASSIGN("glMultiDrawElementsEXT", multiDrawElements);
+ }
+
+ if (extensions.count("GL_EXT_separate_shader_objects") != 0)
+ {
+ ASSIGN("glActiveShaderProgramEXT", activeShaderProgram);
+ ASSIGN("glBindProgramPipelineEXT", bindProgramPipeline);
+ ASSIGN("glCreateShaderProgramvEXT", createShaderProgramv);
+ ASSIGN("glDeleteProgramPipelinesEXT", deleteProgramPipelines);
+ ASSIGN("glGenProgramPipelinesEXT", genProgramPipelines);
+ ASSIGN("glGetProgramPipelineInfoLogEXT", getProgramPipelineInfoLog);
+ ASSIGN("glGetProgramPipelineivEXT", getProgramPipelineiv);
+ ASSIGN("glIsProgramPipelineEXT", isProgramPipeline);
+ ASSIGN("glProgramParameteriEXT", programParameteri);
+ ASSIGN("glProgramUniform1fEXT", programUniform1f);
+ ASSIGN("glProgramUniform1fvEXT", programUniform1fv);
+ ASSIGN("glProgramUniform1iEXT", programUniform1i);
+ ASSIGN("glProgramUniform1ivEXT", programUniform1iv);
+ ASSIGN("glProgramUniform1uiEXT", programUniform1ui);
+ ASSIGN("glProgramUniform1uivEXT", programUniform1uiv);
+ ASSIGN("glProgramUniform2fEXT", programUniform2f);
+ ASSIGN("glProgramUniform2fvEXT", programUniform2fv);
+ ASSIGN("glProgramUniform2iEXT", programUniform2i);
+ ASSIGN("glProgramUniform2ivEXT", programUniform2iv);
+ ASSIGN("glProgramUniform2uiEXT", programUniform2ui);
+ ASSIGN("glProgramUniform2uivEXT", programUniform2uiv);
+ ASSIGN("glProgramUniform3fEXT", programUniform3f);
+ ASSIGN("glProgramUniform3fvEXT", programUniform3fv);
+ ASSIGN("glProgramUniform3iEXT", programUniform3i);
+ ASSIGN("glProgramUniform3ivEXT", programUniform3iv);
+ ASSIGN("glProgramUniform3uiEXT", programUniform3ui);
+ ASSIGN("glProgramUniform3uivEXT", programUniform3uiv);
+ ASSIGN("glProgramUniform4fEXT", programUniform4f);
+ ASSIGN("glProgramUniform4fvEXT", programUniform4fv);
+ ASSIGN("glProgramUniform4iEXT", programUniform4i);
+ ASSIGN("glProgramUniform4ivEXT", programUniform4iv);
+ ASSIGN("glProgramUniform4uiEXT", programUniform4ui);
+ ASSIGN("glProgramUniform4uivEXT", programUniform4uiv);
+ ASSIGN("glProgramUniformMatrix2fvEXT", programUniformMatrix2fv);
+ ASSIGN("glProgramUniformMatrix2x3fvEXT", programUniformMatrix2x3fv);
+ ASSIGN("glProgramUniformMatrix2x4fvEXT", programUniformMatrix2x4fv);
+ ASSIGN("glProgramUniformMatrix3fvEXT", programUniformMatrix3fv);
+ ASSIGN("glProgramUniformMatrix3x2fvEXT", programUniformMatrix3x2fv);
+ ASSIGN("glProgramUniformMatrix3x4fvEXT", programUniformMatrix3x4fv);
+ ASSIGN("glProgramUniformMatrix4fvEXT", programUniformMatrix4fv);
+ ASSIGN("glProgramUniformMatrix4fvEXT", programUniformMatrix4fv);
+ ASSIGN("glProgramUniformMatrix4x2fvEXT", programUniformMatrix4x2fv);
+ ASSIGN("glProgramUniformMatrix4x3fvEXT", programUniformMatrix4x3fv);
+ ASSIGN("glUseProgramStagesEXT", useProgramStages);
+ ASSIGN("glValidateProgramPipelineEXT", validateProgramPipeline);
+ }
+
+ if (extensions.count("GL_NV_fence") != 0)
+ {
+ ASSIGN("glDeleteFencesNV", deleteFencesNV);
+ ASSIGN("glFinishFenceNV", finishFenceNV);
+ ASSIGN("glGenFencesNV", genFencesNV);
+ ASSIGN("glGetFenceivNV", getFenceivNV);
+ ASSIGN("glIsFenceNV", isFenceNV);
+ ASSIGN("glSetFenceNV", setFenceNV);
+ ASSIGN("glTestFenceNV", testFenceNV);
+ }
+
+ if (extensions.count("GL_NV_framebuffer_mixed_samples") != 0)
+ {
+ ASSIGN("glCoverageModulationNV", coverageModulationNV);
+ }
+
+ if (extensions.count("GL_NV_internalformat_sample_query") != 0)
+ {
+ ASSIGN("glGetInternalformatSampleivNV", getInternalformatSampleivNV);
+ }
+
+ if (extensions.count("GL_NV_path_rendering") != 0)
+ {
+ ASSIGN("glCoverFillPathInstancedNV", coverFillPathInstancedNV);
+ ASSIGN("glCoverFillPathNV", coverFillPathNV);
+ ASSIGN("glCoverStrokePathInstancedNV", coverStrokePathInstancedNV);
+ ASSIGN("glCoverStrokePathNV", coverStrokePathNV);
+ ASSIGN("glDeletePathsNV", deletePathsNV);
+ ASSIGN("glGenPathsNV", genPathsNV);
+ ASSIGN("glGetPathParameterfvNV", getPathParameterfvNV);
+ ASSIGN("glGetPathParameterivNV", getPathParameterivNV);
+ ASSIGN("glIsPathNV", isPathNV);
+ ASSIGN("glMatrixLoadfEXT", matrixLoadfEXT);
+ ASSIGN("glPathCommandsNV", pathCommandsNV);
+ ASSIGN("glPathParameterfNV", pathParameterfNV);
+ ASSIGN("glPathParameteriNV", pathParameteriNV);
+ ASSIGN("glPathStencilFuncNV", pathStencilFuncNV);
+ ASSIGN("glProgramPathFragmentInputGenNV", programPathFragmentInputGenNV);
+ ASSIGN("glStencilFillPathInstancedNV", stencilFillPathInstancedNV);
+ ASSIGN("glStencilFillPathNV", stencilFillPathNV);
+ ASSIGN("glStencilStrokePathInstancedNV", stencilStrokePathInstancedNV);
+ ASSIGN("glStencilStrokePathNV", stencilStrokePathNV);
+ ASSIGN("glStencilThenCoverFillPathInstancedNV", stencilThenCoverFillPathInstancedNV);
+ ASSIGN("glStencilThenCoverFillPathNV", stencilThenCoverFillPathNV);
+ ASSIGN("glStencilThenCoverStrokePathInstancedNV", stencilThenCoverStrokePathInstancedNV);
+ ASSIGN("glStencilThenCoverStrokePathNV", stencilThenCoverStrokePathNV);
+ }
+}
+
+} // namespace rx
diff --git a/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h
new file mode 100644
index 0000000..fafc949
--- /dev/null
+++ b/src/libANGLE/renderer/gl/DispatchTableGL_autogen.h
@@ -0,0 +1,779 @@
+// GENERATED FILE - DO NOT EDIT.
+// Generated by generate_gl_dispatch_table.py using data from gl_bindings_data.json and gl.xml.
+//
+// Copyright 2017 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// DispatchTableGL_autogen.h:
+// Defines the native binding interface for ANGLE's OpenGL back-end.
+
+#ifndef LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
+#define LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
+
+#include "common/angleutils.h"
+#include "libANGLE/renderer/gl/functionsgl_typedefs.h"
+
+#include <set>
+
+namespace gl
+{
+struct Version;
+} // namespace gl
+
+namespace rx
+{
+class DispatchTableGL : angle::NonCopyable
+{
+ public:
+ // 1.0
+ PFNGLBLENDFUNCPROC blendFunc = nullptr;
+ PFNGLCLEARPROC clear = nullptr;
+ PFNGLCLEARCOLORPROC clearColor = nullptr;
+ PFNGLCLEARDEPTHPROC clearDepth = nullptr;
+ PFNGLCLEARSTENCILPROC clearStencil = nullptr;
+ PFNGLCOLORMASKPROC colorMask = nullptr;
+ PFNGLCULLFACEPROC cullFace = nullptr;
+ PFNGLDEPTHFUNCPROC depthFunc = nullptr;
+ PFNGLDEPTHMASKPROC depthMask = nullptr;
+ PFNGLDEPTHRANGEPROC depthRange = nullptr;
+ PFNGLDISABLEPROC disable = nullptr;
+ PFNGLDRAWBUFFERPROC drawBuffer = nullptr;
+ PFNGLENABLEPROC enable = nullptr;
+ PFNGLFINISHPROC finish = nullptr;
+ PFNGLFLUSHPROC flush = nullptr;
+ PFNGLFRONTFACEPROC frontFace = nullptr;
+ PFNGLGETBOOLEANVPROC getBooleanv = nullptr;
+ PFNGLGETDOUBLEVPROC getDoublev = nullptr;
+ PFNGLGETERRORPROC getError = nullptr;
+ PFNGLGETFLOATVPROC getFloatv = nullptr;
+ PFNGLGETINTEGERVPROC getIntegerv = nullptr;
+ PFNGLGETSTRINGPROC getString = nullptr;
+ PFNGLGETTEXIMAGEPROC getTexImage = nullptr;
+ PFNGLGETTEXLEVELPARAMETERFVPROC getTexLevelParameterfv = nullptr;
+ PFNGLGETTEXLEVELPARAMETERIVPROC getTexLevelParameteriv = nullptr;
+ PFNGLGETTEXPARAMETERFVPROC getTexParameterfv = nullptr;
+ PFNGLGETTEXPARAMETERIVPROC getTexParameteriv = nullptr;
+ PFNGLHINTPROC hint = nullptr;
+ PFNGLISENABLEDPROC isEnabled = nullptr;
+ PFNGLLINEWIDTHPROC lineWidth = nullptr;
+ PFNGLLOGICOPPROC logicOp = nullptr;
+ PFNGLPIXELSTOREFPROC pixelStoref = nullptr;
+ PFNGLPIXELSTOREIPROC pixelStorei = nullptr;
+ PFNGLPOINTSIZEPROC pointSize = nullptr;
+ PFNGLPOLYGONMODEPROC polygonMode = nullptr;
+ PFNGLREADBUFFERPROC readBuffer = nullptr;
+ PFNGLREADPIXELSPROC readPixels = nullptr;
+ PFNGLSCISSORPROC scissor = nullptr;
+ PFNGLSTENCILFUNCPROC stencilFunc = nullptr;
+ PFNGLSTENCILMASKPROC stencilMask = nullptr;
+ PFNGLSTENCILOPPROC stencilOp = nullptr;
+ PFNGLTEXIMAGE1DPROC texImage1D = nullptr;
+ PFNGLTEXIMAGE2DPROC texImage2D = nullptr;
+ PFNGLTEXPARAMETERFPROC texParameterf = nullptr;
+ PFNGLTEXPARAMETERFVPROC texParameterfv = nullptr;
+ PFNGLTEXPARAMETERIPROC texParameteri = nullptr;
+ PFNGLTEXPARAMETERIVPROC texParameteriv = nullptr;
+ PFNGLVIEWPORTPROC viewport = nullptr;
+
+ // 1.1
+ PFNGLBINDTEXTUREPROC bindTexture = nullptr;
+ PFNGLCOPYTEXIMAGE1DPROC copyTexImage1D = nullptr;
+ PFNGLCOPYTEXIMAGE2DPROC copyTexImage2D = nullptr;
+ PFNGLCOPYTEXSUBIMAGE1DPROC copyTexSubImage1D = nullptr;
+ PFNGLCOPYTEXSUBIMAGE2DPROC copyTexSubImage2D = nullptr;
+ PFNGLDELETETEXTURESPROC deleteTextures = nullptr;
+ PFNGLDRAWARRAYSPROC drawArrays = nullptr;
+ PFNGLDRAWELEMENTSPROC drawElements = nullptr;
+ PFNGLGENTEXTURESPROC genTextures = nullptr;
+ PFNGLISTEXTUREPROC isTexture = nullptr;
+ PFNGLPOLYGONOFFSETPROC polygonOffset = nullptr;
+ PFNGLTEXSUBIMAGE1DPROC texSubImage1D = nullptr;
+ PFNGLTEXSUBIMAGE2DPROC texSubImage2D = nullptr;
+
+ // 1.2
+ PFNGLBLENDCOLORPROC blendColor = nullptr;
+ PFNGLBLENDEQUATIONPROC blendEquation = nullptr;
+ PFNGLCOPYTEXSUBIMAGE3DPROC copyTexSubImage3D = nullptr;
+ PFNGLDRAWRANGEELEMENTSPROC drawRangeElements = nullptr;
+ PFNGLTEXIMAGE3DPROC texImage3D = nullptr;
+ PFNGLTEXSUBIMAGE3DPROC texSubImage3D = nullptr;
+
+ // 1.2 Extensions
+ PFNGLDELETEFENCESNVPROC deleteFencesNV = nullptr;
+ PFNGLFINISHFENCENVPROC finishFenceNV = nullptr;
+ PFNGLGENFENCESNVPROC genFencesNV = nullptr;
+ PFNGLGETFENCEIVNVPROC getFenceivNV = nullptr;
+ PFNGLISFENCENVPROC isFenceNV = nullptr;
+ PFNGLSETFENCENVPROC setFenceNV = nullptr;
+ PFNGLTESTFENCENVPROC testFenceNV = nullptr;
+
+ // 1.3
+ PFNGLACTIVETEXTUREPROC activeTexture = nullptr;
+ PFNGLCOMPRESSEDTEXIMAGE1DPROC compressedTexImage1D = nullptr;
+ PFNGLCOMPRESSEDTEXIMAGE2DPROC compressedTexImage2D = nullptr;
+ PFNGLCOMPRESSEDTEXIMAGE3DPROC compressedTexImage3D = nullptr;
+ PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC compressedTexSubImage1D = nullptr;
+ PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC compressedTexSubImage2D = nullptr;
+ PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC compressedTexSubImage3D = nullptr;
+ PFNGLGETCOMPRESSEDTEXIMAGEPROC getCompressedTexImage = nullptr;
+ PFNGLSAMPLECOVERAGEPROC sampleCoverage = nullptr;
+
+ // 1.4
+ PFNGLBLENDFUNCSEPARATEPROC blendFuncSeparate = nullptr;
+ PFNGLMULTIDRAWARRAYSPROC multiDrawArrays = nullptr;
+ PFNGLMULTIDRAWELEMENTSPROC multiDrawElements = nullptr;
+ PFNGLPOINTPARAMETERFPROC pointParameterf = nullptr;
+ PFNGLPOINTPARAMETERFVPROC pointParameterfv = nullptr;
+ PFNGLPOINTPARAMETERIPROC pointParameteri = nullptr;
+ PFNGLPOINTPARAMETERIVPROC pointParameteriv = nullptr;
+
+ // 1.5
+ PFNGLBEGINQUERYPROC beginQuery = nullptr;
+ PFNGLBINDBUFFERPROC bindBuffer = nullptr;
+ PFNGLBUFFERDATAPROC bufferData = nullptr;
+ PFNGLBUFFERSUBDATAPROC bufferSubData = nullptr;
+ PFNGLDELETEBUFFERSPROC deleteBuffers = nullptr;
+ PFNGLDELETEQUERIESPROC deleteQueries = nullptr;
+ PFNGLENDQUERYPROC endQuery = nullptr;
+ PFNGLGENBUFFERSPROC genBuffers = nullptr;
+ PFNGLGENQUERIESPROC genQueries = nullptr;
+ PFNGLGETBUFFERPARAMETERIVPROC getBufferParameteriv = nullptr;
+ PFNGLGETBUFFERPOINTERVPROC getBufferPointerv = nullptr;
+ PFNGLGETBUFFERSUBDATAPROC getBufferSubData = nullptr;
+ PFNGLGETQUERYOBJECTIVPROC getQueryObjectiv = nullptr;
+ PFNGLGETQUERYOBJECTUIVPROC getQueryObjectuiv = nullptr;
+ PFNGLGETQUERYIVPROC getQueryiv = nullptr;
+ PFNGLISBUFFERPROC isBuffer = nullptr;
+ PFNGLISQUERYPROC isQuery = nullptr;
+ PFNGLMAPBUFFERPROC mapBuffer = nullptr;
+ PFNGLUNMAPBUFFERPROC unmapBuffer = nullptr;
+
+ // 2.0
+ PFNGLATTACHSHADERPROC attachShader = nullptr;
+ PFNGLBINDATTRIBLOCATIONPROC bindAttribLocation = nullptr;
+ PFNGLBLENDEQUATIONSEPARATEPROC blendEquationSeparate = nullptr;
+ PFNGLCOMPILESHADERPROC compileShader = nullptr;
+ PFNGLCREATEPROGRAMPROC createProgram = nullptr;
+ PFNGLCREATESHADERPROC createShader = nullptr;
+ PFNGLDELETEPROGRAMPROC deleteProgram = nullptr;
+ PFNGLDELETESHADERPROC deleteShader = nullptr;
+ PFNGLDETACHSHADERPROC detachShader = nullptr;
+ PFNGLDISABLEVERTEXATTRIBARRAYPROC disableVertexAttribArray = nullptr;
+ PFNGLDRAWBUFFERSPROC drawBuffers = nullptr;
+ PFNGLENABLEVERTEXATTRIBARRAYPROC enableVertexAttribArray = nullptr;
+ PFNGLGETACTIVEATTRIBPROC getActiveAttrib = nullptr;
+ PFNGLGETACTIVEUNIFORMPROC getActiveUniform = nullptr;
+ PFNGLGETATTACHEDSHADERSPROC getAttachedShaders = nullptr;
+ PFNGLGETATTRIBLOCATIONPROC getAttribLocation = nullptr;
+ PFNGLGETPROGRAMINFOLOGPROC getProgramInfoLog = nullptr;
+ PFNGLGETPROGRAMIVPROC getProgramiv = nullptr;
+ PFNGLGETSHADERINFOLOGPROC getShaderInfoLog = nullptr;
+ PFNGLGETSHADERSOURCEPROC getShaderSource = nullptr;
+ PFNGLGETSHADERIVPROC getShaderiv = nullptr;
+ PFNGLGETUNIFORMLOCATIONPROC getUniformLocation = nullptr;
+ PFNGLGETUNIFORMFVPROC getUniformfv = nullptr;
+ PFNGLGETUNIFORMIVPROC getUniformiv = nullptr;
+ PFNGLGETVERTEXATTRIBPOINTERVPROC getVertexAttribPointerv = nullptr;
+ PFNGLGETVERTEXATTRIBDVPROC getVertexAttribdv = nullptr;
+ PFNGLGETVERTEXATTRIBFVPROC getVertexAttribfv = nullptr;
+ PFNGLGETVERTEXATTRIBIVPROC getVertexAttribiv = nullptr;
+ PFNGLISPROGRAMPROC isProgram = nullptr;
+ PFNGLISSHADERPROC isShader = nullptr;
+ PFNGLLINKPROGRAMPROC linkProgram = nullptr;
+ PFNGLSHADERSOURCEPROC shaderSource = nullptr;
+ PFNGLSTENCILFUNCSEPARATEPROC stencilFuncSeparate = nullptr;
+ PFNGLSTENCILMASKSEPARATEPROC stencilMaskSeparate = nullptr;
+ PFNGLSTENCILOPSEPARATEPROC stencilOpSeparate = nullptr;
+ PFNGLUNIFORM1FPROC uniform1f = nullptr;
+ PFNGLUNIFORM1FVPROC uniform1fv = nullptr;
+ PFNGLUNIFORM1IPROC uniform1i = nullptr;
+ PFNGLUNIFORM1IVPROC uniform1iv = nullptr;
+ PFNGLUNIFORM2FPROC uniform2f = nullptr;
+ PFNGLUNIFORM2FVPROC uniform2fv = nullptr;
+ PFNGLUNIFORM2IPROC uniform2i = nullptr;
+ PFNGLUNIFORM2IVPROC uniform2iv = nullptr;
+ PFNGLUNIFORM3FPROC uniform3f = nullptr;
+ PFNGLUNIFORM3FVPROC uniform3fv = nullptr;
+ PFNGLUNIFORM3IPROC uniform3i = nullptr;
+ PFNGLUNIFORM3IVPROC uniform3iv = nullptr;
+ PFNGLUNIFORM4FPROC uniform4f = nullptr;
+ PFNGLUNIFORM4FVPROC uniform4fv = nullptr;
+ PFNGLUNIFORM4IPROC uniform4i = nullptr;
+ PFNGLUNIFORM4IVPROC uniform4iv = nullptr;
+ PFNGLUNIFORMMATRIX2FVPROC uniformMatrix2fv = nullptr;
+ PFNGLUNIFORMMATRIX3FVPROC uniformMatrix3fv = nullptr;
+ PFNGLUNIFORMMATRIX4FVPROC uniformMatrix4fv = nullptr;
+ PFNGLUSEPROGRAMPROC useProgram = nullptr;
+ PFNGLVALIDATEPROGRAMPROC validateProgram = nullptr;
+ PFNGLVERTEXATTRIB1DPROC vertexAttrib1d = nullptr;
+ PFNGLVERTEXATTRIB1DVPROC vertexAttrib1dv = nullptr;
+ PFNGLVERTEXATTRIB1FPROC vertexAttrib1f = nullptr;
+ PFNGLVERTEXATTRIB1FVPROC vertexAttrib1fv = nullptr;
+ PFNGLVERTEXATTRIB1SPROC vertexAttrib1s = nullptr;
+ PFNGLVERTEXATTRIB1SVPROC vertexAttrib1sv = nullptr;
+ PFNGLVERTEXATTRIB2DPROC vertexAttrib2d = nullptr;
+ PFNGLVERTEXATTRIB2DVPROC vertexAttrib2dv = nullptr;
+ PFNGLVERTEXATTRIB2FPROC vertexAttrib2f = nullptr;
+ PFNGLVERTEXATTRIB2FVPROC vertexAttrib2fv = nullptr;
+ PFNGLVERTEXATTRIB2SPROC vertexAttrib2s = nullptr;
+ PFNGLVERTEXATTRIB2SVPROC vertexAttrib2sv = nullptr;
+ PFNGLVERTEXATTRIB3DPROC vertexAttrib3d = nullptr;
+ PFNGLVERTEXATTRIB3DVPROC vertexAttrib3dv = nullptr;
+ PFNGLVERTEXATTRIB3FPROC vertexAttrib3f = nullptr;
+ PFNGLVERTEXATTRIB3FVPROC vertexAttrib3fv = nullptr;
+ PFNGLVERTEXATTRIB3SPROC vertexAttrib3s = nullptr;
+ PFNGLVERTEXATTRIB3SVPROC vertexAttrib3sv = nullptr;
+ PFNGLVERTEXATTRIB4NBVPROC vertexAttrib4Nbv = nullptr;
+ PFNGLVERTEXATTRIB4NIVPROC vertexAttrib4Niv = nullptr;
+ PFNGLVERTEXATTRIB4NSVPROC vertexAttrib4Nsv = nullptr;
+ PFNGLVERTEXATTRIB4NUBPROC vertexAttrib4Nub = nullptr;
+ PFNGLVERTEXATTRIB4NUBVPROC vertexAttrib4Nubv = nullptr;
+ PFNGLVERTEXATTRIB4NUIVPROC vertexAttrib4Nuiv = nullptr;
+ PFNGLVERTEXATTRIB4NUSVPROC vertexAttrib4Nusv = nullptr;
+ PFNGLVERTEXATTRIB4BVPROC vertexAttrib4bv = nullptr;
+ PFNGLVERTEXATTRIB4DPROC vertexAttrib4d = nullptr;
+ PFNGLVERTEXATTRIB4DVPROC vertexAttrib4dv = nullptr;
+ PFNGLVERTEXATTRIB4FPROC vertexAttrib4f = nullptr;
+ PFNGLVERTEXATTRIB4FVPROC vertexAttrib4fv = nullptr;
+ PFNGLVERTEXATTRIB4IVPROC vertexAttrib4iv = nullptr;
+ PFNGLVERTEXATTRIB4SPROC vertexAttrib4s = nullptr;
+ PFNGLVERTEXATTRIB4SVPROC vertexAttrib4sv = nullptr;
+ PFNGLVERTEXATTRIB4UBVPROC vertexAttrib4ubv = nullptr;
+ PFNGLVERTEXATTRIB4UIVPROC vertexAttrib4uiv = nullptr;
+ PFNGLVERTEXATTRIB4USVPROC vertexAttrib4usv = nullptr;
+ PFNGLVERTEXATTRIBPOINTERPROC vertexAttribPointer = nullptr;
+
+ // 2.1
+ PFNGLUNIFORMMATRIX2X3FVPROC uniformMatrix2x3fv = nullptr;
+ PFNGLUNIFORMMATRIX2X4FVPROC uniformMatrix2x4fv = nullptr;
+ PFNGLUNIFORMMATRIX3X2FVPROC uniformMatrix3x2fv = nullptr;
+ PFNGLUNIFORMMATRIX3X4FVPROC uniformMatrix3x4fv = nullptr;
+ PFNGLUNIFORMMATRIX4X2FVPROC uniformMatrix4x2fv = nullptr;
+ PFNGLUNIFORMMATRIX4X3FVPROC uniformMatrix4x3fv = nullptr;
+
+ // 3.0
+ PFNGLBEGINCONDITIONALRENDERPROC beginConditionalRender = nullptr;
+ PFNGLBEGINTRANSFORMFEEDBACKPROC beginTransformFeedback = nullptr;
+ PFNGLBINDBUFFERBASEPROC bindBufferBase = nullptr;
+ PFNGLBINDBUFFERRANGEPROC bindBufferRange = nullptr;
+ PFNGLBINDFRAGDATALOCATIONPROC bindFragDataLocation = nullptr;
+ PFNGLBINDFRAMEBUFFERPROC bindFramebuffer = nullptr;
+ PFNGLBINDRENDERBUFFERPROC bindRenderbuffer = nullptr;
+ PFNGLBINDVERTEXARRAYPROC bindVertexArray = nullptr;
+ PFNGLBLITFRAMEBUFFERPROC blitFramebuffer = nullptr;
+ PFNGLCHECKFRAMEBUFFERSTATUSPROC checkFramebufferStatus = nullptr;
+ PFNGLCLAMPCOLORPROC clampColor = nullptr;
+ PFNGLCLEARBUFFERFIPROC clearBufferfi = nullptr;
+ PFNGLCLEARBUFFERFVPROC clearBufferfv = nullptr;
+ PFNGLCLEARBUFFERIVPROC clearBufferiv = nullptr;
+ PFNGLCLEARBUFFERUIVPROC clearBufferuiv = nullptr;
+ PFNGLCOLORMASKIPROC colorMaski = nullptr;
+ PFNGLDELETEFRAMEBUFFERSPROC deleteFramebuffers = nullptr;
+ PFNGLDELETERENDERBUFFERSPROC deleteRenderbuffers = nullptr;
+ PFNGLDELETEVERTEXARRAYSPROC deleteVertexArrays = nullptr;
+ PFNGLDISABLEIPROC disablei = nullptr;
+ PFNGLENABLEIPROC enablei = nullptr;
+ PFNGLENDCONDITIONALRENDERPROC endConditionalRender = nullptr;
+ PFNGLENDTRANSFORMFEEDBACKPROC endTransformFeedback = nullptr;
+ PFNGLFLUSHMAPPEDBUFFERRANGEPROC flushMappedBufferRange = nullptr;
+ PFNGLFRAMEBUFFERRENDERBUFFERPROC framebufferRenderbuffer = nullptr;
+ PFNGLFRAMEBUFFERTEXTURE1DPROC framebufferTexture1D = nullptr;
+ PFNGLFRAMEBUFFERTEXTURE2DPROC framebufferTexture2D = nullptr;
+ PFNGLFRAMEBUFFERTEXTURE3DPROC framebufferTexture3D = nullptr;
+ PFNGLFRAMEBUFFERTEXTURELAYERPROC framebufferTextureLayer = nullptr;
+ PFNGLGENFRAMEBUFFERSPROC genFramebuffers = nullptr;
+ PFNGLGENRENDERBUFFERSPROC genRenderbuffers = nullptr;
+ PFNGLGENVERTEXARRAYSPROC genVertexArrays = nullptr;
+ PFNGLGENERATEMIPMAPPROC generateMipmap = nullptr;
+ PFNGLGETBOOLEANI_VPROC getBooleani_v = nullptr;
+ PFNGLGETFRAGDATALOCATIONPROC getFragDataLocation = nullptr;
+ PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC getFramebufferAttachmentParameteriv = nullptr;
+ PFNGLGETINTEGERI_VPROC getIntegeri_v = nullptr;
+ PFNGLGETRENDERBUFFERPARAMETERIVPROC getRenderbufferParameteriv = nullptr;
+ PFNGLGETSTRINGIPROC getStringi = nullptr;
+ PFNGLGETTEXPARAMETERIIVPROC getTexParameterIiv = nullptr;
+ PFNGLGETTEXPARAMETERIUIVPROC getTexParameterIuiv = nullptr;
+ PFNGLGETTRANSFORMFEEDBACKVARYINGPROC getTransformFeedbackVarying = nullptr;
+ PFNGLGETUNIFORMUIVPROC getUniformuiv = nullptr;
+ PFNGLGETVERTEXATTRIBIIVPROC getVertexAttribIiv = nullptr;
+ PFNGLGETVERTEXATTRIBIUIVPROC getVertexAttribIuiv = nullptr;
+ PFNGLISENABLEDIPROC isEnabledi = nullptr;
+ PFNGLISFRAMEBUFFERPROC isFramebuffer = nullptr;
+ PFNGLISRENDERBUFFERPROC isRenderbuffer = nullptr;
+ PFNGLISVERTEXARRAYPROC isVertexArray = nullptr;
+ PFNGLMAPBUFFERRANGEPROC mapBufferRange = nullptr;
+ PFNGLRENDERBUFFERSTORAGEPROC renderbufferStorage = nullptr;
+ PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC renderbufferStorageMultisample = nullptr;
+ PFNGLTEXPARAMETERIIVPROC texParameterIiv = nullptr;
+ PFNGLTEXPARAMETERIUIVPROC texParameterIuiv = nullptr;
+ PFNGLTRANSFORMFEEDBACKVARYINGSPROC transformFeedbackVaryings = nullptr;
+ PFNGLUNIFORM1UIPROC uniform1ui = nullptr;
+ PFNGLUNIFORM1UIVPROC uniform1uiv = nullptr;
+ PFNGLUNIFORM2UIPROC uniform2ui = nullptr;
+ PFNGLUNIFORM2UIVPROC uniform2uiv = nullptr;
+ PFNGLUNIFORM3UIPROC uniform3ui = nullptr;
+ PFNGLUNIFORM3UIVPROC uniform3uiv = nullptr;
+ PFNGLUNIFORM4UIPROC uniform4ui = nullptr;
+ PFNGLUNIFORM4UIVPROC uniform4uiv = nullptr;
+ PFNGLVERTEXATTRIBI1IPROC vertexAttribI1i = nullptr;
+ PFNGLVERTEXATTRIBI1IVPROC vertexAttribI1iv = nullptr;
+ PFNGLVERTEXATTRIBI1UIPROC vertexAttribI1ui = nullptr;
+ PFNGLVERTEXATTRIBI1UIVPROC vertexAttribI1uiv = nullptr;
+ PFNGLVERTEXATTRIBI2IPROC vertexAttribI2i = nullptr;
+ PFNGLVERTEXATTRIBI2IVPROC vertexAttribI2iv = nullptr;
+ PFNGLVERTEXATTRIBI2UIPROC vertexAttribI2ui = nullptr;
+ PFNGLVERTEXATTRIBI2UIVPROC vertexAttribI2uiv = nullptr;
+ PFNGLVERTEXATTRIBI3IPROC vertexAttribI3i = nullptr;
+ PFNGLVERTEXATTRIBI3IVPROC vertexAttribI3iv = nullptr;
+ PFNGLVERTEXATTRIBI3UIPROC vertexAttribI3ui = nullptr;
+ PFNGLVERTEXATTRIBI3UIVPROC vertexAttribI3uiv = nullptr;
+ PFNGLVERTEXATTRIBI4BVPROC vertexAttribI4bv = nullptr;
+ PFNGLVERTEXATTRIBI4IPROC vertexAttribI4i = nullptr;
+ PFNGLVERTEXATTRIBI4IVPROC vertexAttribI4iv = nullptr;
+ PFNGLVERTEXATTRIBI4SVPROC vertexAttribI4sv = nullptr;
+ PFNGLVERTEXATTRIBI4UBVPROC vertexAttribI4ubv = nullptr;
+ PFNGLVERTEXATTRIBI4UIPROC vertexAttribI4ui = nullptr;
+ PFNGLVERTEXATTRIBI4UIVPROC vertexAttribI4uiv = nullptr;
+ PFNGLVERTEXATTRIBI4USVPROC vertexAttribI4usv = nullptr;
+ PFNGLVERTEXATTRIBIPOINTERPROC vertexAttribIPointer = nullptr;
+
+ // 3.1
+ PFNGLCOPYBUFFERSUBDATAPROC copyBufferSubData = nullptr;
+ PFNGLDRAWARRAYSINSTANCEDPROC drawArraysInstanced = nullptr;
+ PFNGLDRAWELEMENTSINSTANCEDPROC drawElementsInstanced = nullptr;
+ PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC getActiveUniformBlockName = nullptr;
+ PFNGLGETACTIVEUNIFORMBLOCKIVPROC getActiveUniformBlockiv = nullptr;
+ PFNGLGETACTIVEUNIFORMNAMEPROC getActiveUniformName = nullptr;
+ PFNGLGETACTIVEUNIFORMSIVPROC getActiveUniformsiv = nullptr;
+ PFNGLGETUNIFORMBLOCKINDEXPROC getUniformBlockIndex = nullptr;
+ PFNGLGETUNIFORMINDICESPROC getUniformIndices = nullptr;
+ PFNGLPRIMITIVERESTARTINDEXPROC primitiveRestartIndex = nullptr;
+ PFNGLTEXBUFFERPROC texBuffer = nullptr;
+ PFNGLUNIFORMBLOCKBINDINGPROC uniformBlockBinding = nullptr;
+
+ // 3.2
+ PFNGLCLIENTWAITSYNCPROC clientWaitSync = nullptr;
+ PFNGLDELETESYNCPROC deleteSync = nullptr;
+ PFNGLDRAWELEMENTSBASEVERTEXPROC drawElementsBaseVertex = nullptr;
+ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC drawElementsInstancedBaseVertex = nullptr;
+ PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC drawRangeElementsBaseVertex = nullptr;
+ PFNGLFENCESYNCPROC fenceSync = nullptr;
+ PFNGLFRAMEBUFFERTEXTUREPROC framebufferTexture = nullptr;
+ PFNGLGETBUFFERPARAMETERI64VPROC getBufferParameteri64v = nullptr;
+ PFNGLGETINTEGER64I_VPROC getInteger64i_v = nullptr;
+ PFNGLGETINTEGER64VPROC getInteger64v = nullptr;
+ PFNGLGETMULTISAMPLEFVPROC getMultisamplefv = nullptr;
+ PFNGLGETSYNCIVPROC getSynciv = nullptr;
+ PFNGLISSYNCPROC isSync = nullptr;
+ PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC multiDrawElementsBaseVertex = nullptr;
+ PFNGLPROVOKINGVERTEXPROC provokingVertex = nullptr;
+ PFNGLSAMPLEMASKIPROC sampleMaski = nullptr;
+ PFNGLTEXIMAGE2DMULTISAMPLEPROC texImage2DMultisample = nullptr;
+ PFNGLTEXIMAGE3DMULTISAMPLEPROC texImage3DMultisample = nullptr;
+ PFNGLWAITSYNCPROC waitSync = nullptr;
+
+ // 3.3
+ PFNGLBINDFRAGDATALOCATIONINDEXEDPROC bindFragDataLocationIndexed = nullptr;
+ PFNGLBINDSAMPLERPROC bindSampler = nullptr;
+ PFNGLDELETESAMPLERSPROC deleteSamplers = nullptr;
+ PFNGLGENSAMPLERSPROC genSamplers = nullptr;
+ PFNGLGETFRAGDATAINDEXPROC getFragDataIndex = nullptr;
+ PFNGLGETQUERYOBJECTI64VPROC getQueryObjecti64v = nullptr;
+ PFNGLGETQUERYOBJECTUI64VPROC getQueryObjectui64v = nullptr;
+ PFNGLGETSAMPLERPARAMETERIIVPROC getSamplerParameterIiv = nullptr;
+ PFNGLGETSAMPLERPARAMETERIUIVPROC getSamplerParameterIuiv = nullptr;
+ PFNGLGETSAMPLERPARAMETERFVPROC getSamplerParameterfv = nullptr;
+ PFNGLGETSAMPLERPARAMETERIVPROC getSamplerParameteriv = nullptr;
+ PFNGLISSAMPLERPROC isSampler = nullptr;
+ PFNGLQUERYCOUNTERPROC queryCounter = nullptr;
+ PFNGLSAMPLERPARAMETERIIVPROC samplerParameterIiv = nullptr;
+ PFNGLSAMPLERPARAMETERIUIVPROC samplerParameterIuiv = nullptr;
+ PFNGLSAMPLERPARAMETERFPROC samplerParameterf = nullptr;
+ PFNGLSAMPLERPARAMETERFVPROC samplerParameterfv = nullptr;
+ PFNGLSAMPLERPARAMETERIPROC samplerParameteri = nullptr;
+ PFNGLSAMPLERPARAMETERIVPROC samplerParameteriv = nullptr;
+ PFNGLVERTEXATTRIBDIVISORPROC vertexAttribDivisor = nullptr;
+ PFNGLVERTEXATTRIBP1UIPROC vertexAttribP1ui = nullptr;
+ PFNGLVERTEXATTRIBP1UIVPROC vertexAttribP1uiv = nullptr;
+ PFNGLVERTEXATTRIBP2UIPROC vertexAttribP2ui = nullptr;
+ PFNGLVERTEXATTRIBP2UIVPROC vertexAttribP2uiv = nullptr;
+ PFNGLVERTEXATTRIBP3UIPROC vertexAttribP3ui = nullptr;
+ PFNGLVERTEXATTRIBP3UIVPROC vertexAttribP3uiv = nullptr;
+ PFNGLVERTEXATTRIBP4UIPROC vertexAttribP4ui = nullptr;
+ PFNGLVERTEXATTRIBP4UIVPROC vertexAttribP4uiv = nullptr;
+
+ // 4.0
+ PFNGLBEGINQUERYINDEXEDPROC beginQueryIndexed = nullptr;
+ PFNGLBINDTRANSFORMFEEDBACKPROC bindTransformFeedback = nullptr;
+ PFNGLBLENDEQUATIONSEPARATEIPROC blendEquationSeparatei = nullptr;
+ PFNGLBLENDEQUATIONIPROC blendEquationi = nullptr;
+ PFNGLBLENDFUNCSEPARATEIPROC blendFuncSeparatei = nullptr;
+ PFNGLBLENDFUNCIPROC blendFunci = nullptr;
+ PFNGLDELETETRANSFORMFEEDBACKSPROC deleteTransformFeedbacks = nullptr;
+ PFNGLDRAWARRAYSINDIRECTPROC drawArraysIndirect = nullptr;
+ PFNGLDRAWELEMENTSINDIRECTPROC drawElementsIndirect = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKPROC drawTransformFeedback = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC drawTransformFeedbackStream = nullptr;
+ PFNGLENDQUERYINDEXEDPROC endQueryIndexed = nullptr;
+ PFNGLGENTRANSFORMFEEDBACKSPROC genTransformFeedbacks = nullptr;
+ PFNGLGETACTIVESUBROUTINENAMEPROC getActiveSubroutineName = nullptr;
+ PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC getActiveSubroutineUniformName = nullptr;
+ PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC getActiveSubroutineUniformiv = nullptr;
+ PFNGLGETPROGRAMSTAGEIVPROC getProgramStageiv = nullptr;
+ PFNGLGETQUERYINDEXEDIVPROC getQueryIndexediv = nullptr;
+ PFNGLGETSUBROUTINEINDEXPROC getSubroutineIndex = nullptr;
+ PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC getSubroutineUniformLocation = nullptr;
+ PFNGLGETUNIFORMSUBROUTINEUIVPROC getUniformSubroutineuiv = nullptr;
+ PFNGLGETUNIFORMDVPROC getUniformdv = nullptr;
+ PFNGLISTRANSFORMFEEDBACKPROC isTransformFeedback = nullptr;
+ PFNGLMINSAMPLESHADINGPROC minSampleShading = nullptr;
+ PFNGLPATCHPARAMETERFVPROC patchParameterfv = nullptr;
+ PFNGLPATCHPARAMETERIPROC patchParameteri = nullptr;
+ PFNGLPAUSETRANSFORMFEEDBACKPROC pauseTransformFeedback = nullptr;
+ PFNGLRESUMETRANSFORMFEEDBACKPROC resumeTransformFeedback = nullptr;
+ PFNGLUNIFORM1DPROC uniform1d = nullptr;
+ PFNGLUNIFORM1DVPROC uniform1dv = nullptr;
+ PFNGLUNIFORM2DPROC uniform2d = nullptr;
+ PFNGLUNIFORM2DVPROC uniform2dv = nullptr;
+ PFNGLUNIFORM3DPROC uniform3d = nullptr;
+ PFNGLUNIFORM3DVPROC uniform3dv = nullptr;
+ PFNGLUNIFORM4DPROC uniform4d = nullptr;
+ PFNGLUNIFORM4DVPROC uniform4dv = nullptr;
+ PFNGLUNIFORMMATRIX2DVPROC uniformMatrix2dv = nullptr;
+ PFNGLUNIFORMMATRIX2X3DVPROC uniformMatrix2x3dv = nullptr;
+ PFNGLUNIFORMMATRIX2X4DVPROC uniformMatrix2x4dv = nullptr;
+ PFNGLUNIFORMMATRIX3DVPROC uniformMatrix3dv = nullptr;
+ PFNGLUNIFORMMATRIX3X2DVPROC uniformMatrix3x2dv = nullptr;
+ PFNGLUNIFORMMATRIX3X4DVPROC uniformMatrix3x4dv = nullptr;
+ PFNGLUNIFORMMATRIX4DVPROC uniformMatrix4dv = nullptr;
+ PFNGLUNIFORMMATRIX4X2DVPROC uniformMatrix4x2dv = nullptr;
+ PFNGLUNIFORMMATRIX4X3DVPROC uniformMatrix4x3dv = nullptr;
+ PFNGLUNIFORMSUBROUTINESUIVPROC uniformSubroutinesuiv = nullptr;
+
+ // 4.1
+ PFNGLACTIVESHADERPROGRAMPROC activeShaderProgram = nullptr;
+ PFNGLBINDPROGRAMPIPELINEPROC bindProgramPipeline = nullptr;
+ PFNGLCLEARDEPTHFPROC clearDepthf = nullptr;
+ PFNGLCREATESHADERPROGRAMVPROC createShaderProgramv = nullptr;
+ PFNGLDELETEPROGRAMPIPELINESPROC deleteProgramPipelines = nullptr;
+ PFNGLDEPTHRANGEARRAYVPROC depthRangeArrayv = nullptr;
+ PFNGLDEPTHRANGEINDEXEDPROC depthRangeIndexed = nullptr;
+ PFNGLDEPTHRANGEFPROC depthRangef = nullptr;
+ PFNGLGENPROGRAMPIPELINESPROC genProgramPipelines = nullptr;
+ PFNGLGETDOUBLEI_VPROC getDoublei_v = nullptr;
+ PFNGLGETFLOATI_VPROC getFloati_v = nullptr;
+ PFNGLGETPROGRAMBINARYPROC getProgramBinary = nullptr;
+ PFNGLGETPROGRAMPIPELINEINFOLOGPROC getProgramPipelineInfoLog = nullptr;
+ PFNGLGETPROGRAMPIPELINEIVPROC getProgramPipelineiv = nullptr;
+ PFNGLGETSHADERPRECISIONFORMATPROC getShaderPrecisionFormat = nullptr;
+ PFNGLGETVERTEXATTRIBLDVPROC getVertexAttribLdv = nullptr;
+ PFNGLISPROGRAMPIPELINEPROC isProgramPipeline = nullptr;
+ PFNGLPROGRAMBINARYPROC programBinary = nullptr;
+ PFNGLPROGRAMPARAMETERIPROC programParameteri = nullptr;
+ PFNGLPROGRAMUNIFORM1DPROC programUniform1d = nullptr;
+ PFNGLPROGRAMUNIFORM1DVPROC programUniform1dv = nullptr;
+ PFNGLPROGRAMUNIFORM1FPROC programUniform1f = nullptr;
+ PFNGLPROGRAMUNIFORM1FVPROC programUniform1fv = nullptr;
+ PFNGLPROGRAMUNIFORM1IPROC programUniform1i = nullptr;
+ PFNGLPROGRAMUNIFORM1IVPROC programUniform1iv = nullptr;
+ PFNGLPROGRAMUNIFORM1UIPROC programUniform1ui = nullptr;
+ PFNGLPROGRAMUNIFORM1UIVPROC programUniform1uiv = nullptr;
+ PFNGLPROGRAMUNIFORM2DPROC programUniform2d = nullptr;
+ PFNGLPROGRAMUNIFORM2DVPROC programUniform2dv = nullptr;
+ PFNGLPROGRAMUNIFORM2FPROC programUniform2f = nullptr;
+ PFNGLPROGRAMUNIFORM2FVPROC programUniform2fv = nullptr;
+ PFNGLPROGRAMUNIFORM2IPROC programUniform2i = nullptr;
+ PFNGLPROGRAMUNIFORM2IVPROC programUniform2iv = nullptr;
+ PFNGLPROGRAMUNIFORM2UIPROC programUniform2ui = nullptr;
+ PFNGLPROGRAMUNIFORM2UIVPROC programUniform2uiv = nullptr;
+ PFNGLPROGRAMUNIFORM3DPROC programUniform3d = nullptr;
+ PFNGLPROGRAMUNIFORM3DVPROC programUniform3dv = nullptr;
+ PFNGLPROGRAMUNIFORM3FPROC programUniform3f = nullptr;
+ PFNGLPROGRAMUNIFORM3FVPROC programUniform3fv = nullptr;
+ PFNGLPROGRAMUNIFORM3IPROC programUniform3i = nullptr;
+ PFNGLPROGRAMUNIFORM3IVPROC programUniform3iv = nullptr;
+ PFNGLPROGRAMUNIFORM3UIPROC programUniform3ui = nullptr;
+ PFNGLPROGRAMUNIFORM3UIVPROC programUniform3uiv = nullptr;
+ PFNGLPROGRAMUNIFORM4DPROC programUniform4d = nullptr;
+ PFNGLPROGRAMUNIFORM4DVPROC programUniform4dv = nullptr;
+ PFNGLPROGRAMUNIFORM4FPROC programUniform4f = nullptr;
+ PFNGLPROGRAMUNIFORM4FVPROC programUniform4fv = nullptr;
+ PFNGLPROGRAMUNIFORM4IPROC programUniform4i = nullptr;
+ PFNGLPROGRAMUNIFORM4IVPROC programUniform4iv = nullptr;
+ PFNGLPROGRAMUNIFORM4UIPROC programUniform4ui = nullptr;
+ PFNGLPROGRAMUNIFORM4UIVPROC programUniform4uiv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2DVPROC programUniformMatrix2dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2FVPROC programUniformMatrix2fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC programUniformMatrix2x3dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC programUniformMatrix2x3fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC programUniformMatrix2x4dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC programUniformMatrix2x4fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3DVPROC programUniformMatrix3dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3FVPROC programUniformMatrix3fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC programUniformMatrix3x2dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC programUniformMatrix3x2fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC programUniformMatrix3x4dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC programUniformMatrix3x4fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4DVPROC programUniformMatrix4dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4FVPROC programUniformMatrix4fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC programUniformMatrix4x2dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC programUniformMatrix4x2fv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC programUniformMatrix4x3dv = nullptr;
+ PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC programUniformMatrix4x3fv = nullptr;
+ PFNGLRELEASESHADERCOMPILERPROC releaseShaderCompiler = nullptr;
+ PFNGLSCISSORARRAYVPROC scissorArrayv = nullptr;
+ PFNGLSCISSORINDEXEDPROC scissorIndexed = nullptr;
+ PFNGLSCISSORINDEXEDVPROC scissorIndexedv = nullptr;
+ PFNGLSHADERBINARYPROC shaderBinary = nullptr;
+ PFNGLUSEPROGRAMSTAGESPROC useProgramStages = nullptr;
+ PFNGLVALIDATEPROGRAMPIPELINEPROC validateProgramPipeline = nullptr;
+ PFNGLVERTEXATTRIBL1DPROC vertexAttribL1d = nullptr;
+ PFNGLVERTEXATTRIBL1DVPROC vertexAttribL1dv = nullptr;
+ PFNGLVERTEXATTRIBL2DPROC vertexAttribL2d = nullptr;
+ PFNGLVERTEXATTRIBL2DVPROC vertexAttribL2dv = nullptr;
+ PFNGLVERTEXATTRIBL3DPROC vertexAttribL3d = nullptr;
+ PFNGLVERTEXATTRIBL3DVPROC vertexAttribL3dv = nullptr;
+ PFNGLVERTEXATTRIBL4DPROC vertexAttribL4d = nullptr;
+ PFNGLVERTEXATTRIBL4DVPROC vertexAttribL4dv = nullptr;
+ PFNGLVERTEXATTRIBLPOINTERPROC vertexAttribLPointer = nullptr;
+ PFNGLVIEWPORTARRAYVPROC viewportArrayv = nullptr;
+ PFNGLVIEWPORTINDEXEDFPROC viewportIndexedf = nullptr;
+ PFNGLVIEWPORTINDEXEDFVPROC viewportIndexedfv = nullptr;
+
+ // 4.2
+ PFNGLBINDIMAGETEXTUREPROC bindImageTexture = nullptr;
+ PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC drawArraysInstancedBaseInstance = nullptr;
+ PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC drawElementsInstancedBaseInstance = nullptr;
+ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC
+ drawElementsInstancedBaseVertexBaseInstance = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC drawTransformFeedbackInstanced = nullptr;
+ PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC drawTransformFeedbackStreamInstanced = nullptr;
+ PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC getActiveAtomicCounterBufferiv = nullptr;
+ PFNGLGETINTERNALFORMATIVPROC getInternalformativ = nullptr;
+ PFNGLMEMORYBARRIERPROC memoryBarrier = nullptr;
+ PFNGLTEXSTORAGE1DPROC texStorage1D = nullptr;
+ PFNGLTEXSTORAGE2DPROC texStorage2D = nullptr;
+ PFNGLTEXSTORAGE3DPROC texStorage3D = nullptr;
+
+ // 4.3
+ PFNGLBINDVERTEXBUFFERPROC bindVertexBuffer = nullptr;
+ PFNGLCLEARBUFFERDATAPROC clearBufferData = nullptr;
+ PFNGLCLEARBUFFERSUBDATAPROC clearBufferSubData = nullptr;
+ PFNGLCOPYIMAGESUBDATAPROC copyImageSubData = nullptr;
+ PFNGLCOVERAGEMODULATIONNVPROC coverageModulationNV = nullptr;
+ PFNGLDEBUGMESSAGECALLBACKPROC debugMessageCallback = nullptr;
+ PFNGLDEBUGMESSAGECONTROLPROC debugMessageControl = nullptr;
+ PFNGLDEBUGMESSAGEINSERTPROC debugMessageInsert = nullptr;
+ PFNGLDISPATCHCOMPUTEPROC dispatchCompute = nullptr;
+ PFNGLDISPATCHCOMPUTEINDIRECTPROC dispatchComputeIndirect = nullptr;
+ PFNGLFRAMEBUFFERPARAMETERIPROC framebufferParameteri = nullptr;
+ PFNGLGETDEBUGMESSAGELOGPROC getDebugMessageLog = nullptr;
+ PFNGLGETFRAMEBUFFERPARAMETERIVPROC getFramebufferParameteriv = nullptr;
+ PFNGLGETINTERNALFORMATI64VPROC getInternalformati64v = nullptr;
+ PFNGLGETOBJECTLABELPROC getObjectLabel = nullptr;
+ PFNGLGETOBJECTPTRLABELPROC getObjectPtrLabel = nullptr;
+ PFNGLGETPOINTERVPROC getPointerv = nullptr;
+ PFNGLGETPROGRAMINTERFACEIVPROC getProgramInterfaceiv = nullptr;
+ PFNGLGETPROGRAMRESOURCEINDEXPROC getProgramResourceIndex = nullptr;
+ PFNGLGETPROGRAMRESOURCELOCATIONPROC getProgramResourceLocation = nullptr;
+ PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC getProgramResourceLocationIndex = nullptr;
+ PFNGLGETPROGRAMRESOURCENAMEPROC getProgramResourceName = nullptr;
+ PFNGLGETPROGRAMRESOURCEIVPROC getProgramResourceiv = nullptr;
+ PFNGLINVALIDATEBUFFERDATAPROC invalidateBufferData = nullptr;
+ PFNGLINVALIDATEBUFFERSUBDATAPROC invalidateBufferSubData = nullptr;
+ PFNGLINVALIDATEFRAMEBUFFERPROC invalidateFramebuffer = nullptr;
+ PFNGLINVALIDATESUBFRAMEBUFFERPROC invalidateSubFramebuffer = nullptr;
+ PFNGLINVALIDATETEXIMAGEPROC invalidateTexImage = nullptr;
+ PFNGLINVALIDATETEXSUBIMAGEPROC invalidateTexSubImage = nullptr;
+ PFNGLMULTIDRAWARRAYSINDIRECTPROC multiDrawArraysIndirect = nullptr;
+ PFNGLMULTIDRAWELEMENTSINDIRECTPROC multiDrawElementsIndirect = nullptr;
+ PFNGLOBJECTLABELPROC objectLabel = nullptr;
+ PFNGLOBJECTPTRLABELPROC objectPtrLabel = nullptr;
+ PFNGLPOPDEBUGGROUPPROC popDebugGroup = nullptr;
+ PFNGLPUSHDEBUGGROUPPROC pushDebugGroup = nullptr;
+ PFNGLSHADERSTORAGEBLOCKBINDINGPROC shaderStorageBlockBinding = nullptr;
+ PFNGLTEXBUFFERRANGEPROC texBufferRange = nullptr;
+ PFNGLTEXSTORAGE2DMULTISAMPLEPROC texStorage2DMultisample = nullptr;
+ PFNGLTEXSTORAGE3DMULTISAMPLEPROC texStorage3DMultisample = nullptr;
+ PFNGLTEXTUREVIEWPROC textureView = nullptr;
+ PFNGLVERTEXATTRIBBINDINGPROC vertexAttribBinding = nullptr;
+ PFNGLVERTEXATTRIBFORMATPROC vertexAttribFormat = nullptr;
+ PFNGLVERTEXATTRIBIFORMATPROC vertexAttribIFormat = nullptr;
+ PFNGLVERTEXATTRIBLFORMATPROC vertexAttribLFormat = nullptr;
+ PFNGLVERTEXBINDINGDIVISORPROC vertexBindingDivisor = nullptr;
+
+ // 4.4
+ PFNGLBINDBUFFERSBASEPROC bindBuffersBase = nullptr;
+ PFNGLBINDBUFFERSRANGEPROC bindBuffersRange = nullptr;
+ PFNGLBINDIMAGETEXTURESPROC bindImageTextures = nullptr;
+ PFNGLBINDSAMPLERSPROC bindSamplers = nullptr;
+ PFNGLBINDTEXTURESPROC bindTextures = nullptr;
+ PFNGLBINDVERTEXBUFFERSPROC bindVertexBuffers = nullptr;
+ PFNGLBUFFERSTORAGEPROC bufferStorage = nullptr;
+ PFNGLCLEARTEXIMAGEPROC clearTexImage = nullptr;
+ PFNGLCLEARTEXSUBIMAGEPROC clearTexSubImage = nullptr;
+
+ // 4.5
+ PFNGLBINDTEXTUREUNITPROC bindTextureUnit = nullptr;
+ PFNGLBLITNAMEDFRAMEBUFFERPROC blitNamedFramebuffer = nullptr;
+ PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC checkNamedFramebufferStatus = nullptr;
+ PFNGLCLEARNAMEDBUFFERDATAPROC clearNamedBufferData = nullptr;
+ PFNGLCLEARNAMEDBUFFERSUBDATAPROC clearNamedBufferSubData = nullptr;
+ PFNGLCLEARNAMEDFRAMEBUFFERFIPROC clearNamedFramebufferfi = nullptr;
+ PFNGLCLEARNAMEDFRAMEBUFFERFVPROC clearNamedFramebufferfv = nullptr;
+ PFNGLCLEARNAMEDFRAMEBUFFERIVPROC clearNamedFramebufferiv = nullptr;
+ PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC clearNamedFramebufferuiv = nullptr;
+ PFNGLCLIPCONTROLPROC clipControl = nullptr;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC compressedTextureSubImage1D = nullptr;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC compressedTextureSubImage2D = nullptr;
+ PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC compressedTextureSubImage3D = nullptr;
+ PFNGLCOPYNAMEDBUFFERSUBDATAPROC copyNamedBufferSubData = nullptr;
+ PFNGLCOPYTEXTURESUBIMAGE1DPROC copyTextureSubImage1D = nullptr;
+ PFNGLCOPYTEXTURESUBIMAGE2DPROC copyTextureSubImage2D = nullptr;
+ PFNGLCOPYTEXTURESUBIMAGE3DPROC copyTextureSubImage3D = nullptr;
+ PFNGLCREATEBUFFERSPROC createBuffers = nullptr;
+ PFNGLCREATEFRAMEBUFFERSPROC createFramebuffers = nullptr;
+ PFNGLCREATEPROGRAMPIPELINESPROC createProgramPipelines = nullptr;
+ PFNGLCREATEQUERIESPROC createQueries = nullptr;
+ PFNGLCREATERENDERBUFFERSPROC createRenderbuffers = nullptr;
+ PFNGLCREATESAMPLERSPROC createSamplers = nullptr;
+ PFNGLCREATETEXTURESPROC createTextures = nullptr;
+ PFNGLCREATETRANSFORMFEEDBACKSPROC createTransformFeedbacks = nullptr;
+ PFNGLCREATEVERTEXARRAYSPROC createVertexArrays = nullptr;
+ PFNGLDISABLEVERTEXARRAYATTRIBPROC disableVertexArrayAttrib = nullptr;
+ PFNGLENABLEVERTEXARRAYATTRIBPROC enableVertexArrayAttrib = nullptr;
+ PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC flushMappedNamedBufferRange = nullptr;
+ PFNGLGENERATETEXTUREMIPMAPPROC generateTextureMipmap = nullptr;
+ PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC getCompressedTextureImage = nullptr;
+ PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC getCompressedTextureSubImage = nullptr;
+ PFNGLGETGRAPHICSRESETSTATUSPROC getGraphicsResetStatus = nullptr;
+ PFNGLGETNAMEDBUFFERPARAMETERI64VPROC getNamedBufferParameteri64v = nullptr;
+ PFNGLGETNAMEDBUFFERPARAMETERIVPROC getNamedBufferParameteriv = nullptr;
+ PFNGLGETNAMEDBUFFERPOINTERVPROC getNamedBufferPointerv = nullptr;
+ PFNGLGETNAMEDBUFFERSUBDATAPROC getNamedBufferSubData = nullptr;
+ PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC getNamedFramebufferAttachmentParameteriv =
+ nullptr;
+ PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC getNamedFramebufferParameteriv = nullptr;
+ PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC getNamedRenderbufferParameteriv = nullptr;
+ PFNGLGETQUERYBUFFEROBJECTI64VPROC getQueryBufferObjecti64v = nullptr;
+ PFNGLGETQUERYBUFFEROBJECTIVPROC getQueryBufferObjectiv = nullptr;
+ PFNGLGETQUERYBUFFEROBJECTUI64VPROC getQueryBufferObjectui64v = nullptr;
+ PFNGLGETQUERYBUFFEROBJECTUIVPROC getQueryBufferObjectuiv = nullptr;
+ PFNGLGETTEXTUREIMAGEPROC getTextureImage = nullptr;
+ PFNGLGETTEXTURELEVELPARAMETERFVPROC getTextureLevelParameterfv = nullptr;
+ PFNGLGETTEXTURELEVELPARAMETERIVPROC getTextureLevelParameteriv = nullptr;
+ PFNGLGETTEXTUREPARAMETERIIVPROC getTextureParameterIiv = nullptr;
+ PFNGLGETTEXTUREPARAMETERIUIVPROC getTextureParameterIuiv = nullptr;
+ PFNGLGETTEXTUREPARAMETERFVPROC getTextureParameterfv = nullptr;
+ PFNGLGETTEXTUREPARAMETERIVPROC getTextureParameteriv = nullptr;
+ PFNGLGETTEXTURESUBIMAGEPROC getTextureSubImage = nullptr;
+ PFNGLGETTRANSFORMFEEDBACKI64_VPROC getTransformFeedbacki64_v = nullptr;
+ PFNGLGETTRANSFORMFEEDBACKI_VPROC getTransformFeedbacki_v = nullptr;
+ PFNGLGETTRANSFORMFEEDBACKIVPROC getTransformFeedbackiv = nullptr;
+ PFNGLGETVERTEXARRAYINDEXED64IVPROC getVertexArrayIndexed64iv = nullptr;
+ PFNGLGETVERTEXARRAYINDEXEDIVPROC getVertexArrayIndexediv = nullptr;
+ PFNGLGETVERTEXARRAYIVPROC getVertexArrayiv = nullptr;
+ PFNGLGETNCOMPRESSEDTEXIMAGEPROC getnCompressedTexImage = nullptr;
+ PFNGLGETNTEXIMAGEPROC getnTexImage = nullptr;
+ PFNGLGETNUNIFORMDVPROC getnUniformdv = nullptr;
+ PFNGLGETNUNIFORMFVPROC getnUniformfv = nullptr;
+ PFNGLGETNUNIFORMIVPROC getnUniformiv = nullptr;
+ PFNGLGETNUNIFORMUIVPROC getnUniformuiv = nullptr;
+ PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC invalidateNamedFramebufferData = nullptr;
+ PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC invalidateNamedFramebufferSubData = nullptr;
+ PFNGLMAPNAMEDBUFFERPROC mapNamedBuffer = nullptr;
+ PFNGLMAPNAMEDBUFFERRANGEPROC mapNamedBufferRange = nullptr;
+ PFNGLMEMORYBARRIERBYREGIONPROC memoryBarrierByRegion = nullptr;
+ PFNGLNAMEDBUFFERDATAPROC namedBufferData = nullptr;
+ PFNGLNAMEDBUFFERSTORAGEPROC namedBufferStorage = nullptr;
+ PFNGLNAMEDBUFFERSUBDATAPROC namedBufferSubData = nullptr;
+ PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC namedFramebufferDrawBuffer = nullptr;
+ PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC namedFramebufferDrawBuffers = nullptr;
+ PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC namedFramebufferParameteri = nullptr;
+ PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC namedFramebufferReadBuffer = nullptr;
+ PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC namedFramebufferRenderbuffer = nullptr;
+ PFNGLNAMEDFRAMEBUFFERTEXTUREPROC namedFramebufferTexture = nullptr;
+ PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC namedFramebufferTextureLayer = nullptr;
+ PFNGLNAMEDRENDERBUFFERSTORAGEPROC namedRenderbufferStorage = nullptr;
+ PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC namedRenderbufferStorageMultisample = nullptr;
+ PFNGLREADNPIXELSPROC readnPixels = nullptr;
+ PFNGLTEXTUREBARRIERPROC textureBarrier = nullptr;
+ PFNGLTEXTUREBUFFERPROC textureBuffer = nullptr;
+ PFNGLTEXTUREBUFFERRANGEPROC textureBufferRange = nullptr;
+ PFNGLTEXTUREPARAMETERIIVPROC textureParameterIiv = nullptr;
+ PFNGLTEXTUREPARAMETERIUIVPROC textureParameterIuiv = nullptr;
+ PFNGLTEXTUREPARAMETERFPROC textureParameterf = nullptr;
+ PFNGLTEXTUREPARAMETERFVPROC textureParameterfv = nullptr;
+ PFNGLTEXTUREPARAMETERIPROC textureParameteri = nullptr;
+ PFNGLTEXTUREPARAMETERIVPROC textureParameteriv = nullptr;
+ PFNGLTEXTURESTORAGE1DPROC textureStorage1D = nullptr;
+ PFNGLTEXTURESTORAGE2DPROC textureStorage2D = nullptr;
+ PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC textureStorage2DMultisample = nullptr;
+ PFNGLTEXTURESTORAGE3DPROC textureStorage3D = nullptr;
+ PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC textureStorage3DMultisample = nullptr;
+ PFNGLTEXTURESUBIMAGE1DPROC textureSubImage1D = nullptr;
+ PFNGLTEXTURESUBIMAGE2DPROC textureSubImage2D = nullptr;
+ PFNGLTEXTURESUBIMAGE3DPROC textureSubImage3D = nullptr;
+ PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC transformFeedbackBufferBase = nullptr;
+ PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC transformFeedbackBufferRange = nullptr;
+ PFNGLUNMAPNAMEDBUFFERPROC unmapNamedBuffer = nullptr;
+ PFNGLVERTEXARRAYATTRIBBINDINGPROC vertexArrayAttribBinding = nullptr;
+ PFNGLVERTEXARRAYATTRIBFORMATPROC vertexArrayAttribFormat = nullptr;
+ PFNGLVERTEXARRAYATTRIBIFORMATPROC vertexArrayAttribIFormat = nullptr;
+ PFNGLVERTEXARRAYATTRIBLFORMATPROC vertexArrayAttribLFormat = nullptr;
+ PFNGLVERTEXARRAYBINDINGDIVISORPROC vertexArrayBindingDivisor = nullptr;
+ PFNGLVERTEXARRAYELEMENTBUFFERPROC vertexArrayElementBuffer = nullptr;
+ PFNGLVERTEXARRAYVERTEXBUFFERPROC vertexArrayVertexBuffer = nullptr;
+ PFNGLVERTEXARRAYVERTEXBUFFERSPROC vertexArrayVertexBuffers = nullptr;
+
+ // ES 3.2
+ PFNGLBLENDBARRIERPROC blendBarrier = nullptr;
+ PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox = nullptr;
+
+ // GL_EXT_discard_framebuffer
+ PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebufferEXT = nullptr;
+
+ // GL_NV_internalformat_sample_query
+ PFNGLGETINTERNALFORMATSAMPLEIVNVPROC getInternalformatSampleivNV = nullptr;
+
+ // GL_OES_EGL_image
+ PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eGLImageTargetRenderbufferStorageOES = nullptr;
+ PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eGLImageTargetTexture2DOES = nullptr;
+
+ // NV_path_rendering (originally written against 3.2 compatibility profile)
+ PFNGLCOVERFILLPATHINSTANCEDNVPROC coverFillPathInstancedNV = nullptr;
+ PFNGLCOVERFILLPATHNVPROC coverFillPathNV = nullptr;
+ PFNGLCOVERSTROKEPATHINSTANCEDNVPROC coverStrokePathInstancedNV = nullptr;
+ PFNGLCOVERSTROKEPATHNVPROC coverStrokePathNV = nullptr;
+ PFNGLDELETEPATHSNVPROC deletePathsNV = nullptr;
+ PFNGLGENPATHSNVPROC genPathsNV = nullptr;
+ PFNGLGETPATHPARAMETERFVNVPROC getPathParameterfvNV = nullptr;
+ PFNGLGETPATHPARAMETERIVNVPROC getPathParameterivNV = nullptr;
+ PFNGLISPATHNVPROC isPathNV = nullptr;
+ PFNGLMATRIXLOADFEXTPROC matrixLoadfEXT = nullptr;
+ PFNGLPATHCOMMANDSNVPROC pathCommandsNV = nullptr;
+ PFNGLPATHPARAMETERFNVPROC pathParameterfNV = nullptr;
+ PFNGLPATHPARAMETERINVPROC pathParameteriNV = nullptr;
+ PFNGLPATHSTENCILFUNCNVPROC pathStencilFuncNV = nullptr;
+ PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC programPathFragmentInputGenNV = nullptr;
+ PFNGLSTENCILFILLPATHINSTANCEDNVPROC stencilFillPathInstancedNV = nullptr;
+ PFNGLSTENCILFILLPATHNVPROC stencilFillPathNV = nullptr;
+ PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC stencilStrokePathInstancedNV = nullptr;
+ PFNGLSTENCILSTROKEPATHNVPROC stencilStrokePathNV = nullptr;
+ PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC stencilThenCoverFillPathInstancedNV = nullptr;
+ PFNGLSTENCILTHENCOVERFILLPATHNVPROC stencilThenCoverFillPathNV = nullptr;
+ PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC stencilThenCoverStrokePathInstancedNV = nullptr;
+ PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC stencilThenCoverStrokePathNV = nullptr;
+
+ protected:
+ virtual void *loadProcAddress(const std::string &function) const = 0;
+
+ void initProcsDesktopGL(const gl::Version &version, const std::set<std::string> &extensions);
+ void initProcsGLES(const gl::Version &version, const std::set<std::string> &extensions);
+ void initProcsSharedExtensions(const std::set<std::string> &extensions);
+};
+
+} // namespace rx
+
+#endif // LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
diff --git a/src/libANGLE/renderer/gl/FramebufferGL.cpp b/src/libANGLE/renderer/gl/FramebufferGL.cpp
index 1343b0d..b2ff033 100644
--- a/src/libANGLE/renderer/gl/FramebufferGL.cpp
+++ b/src/libANGLE/renderer/gl/FramebufferGL.cpp
@@ -250,11 +250,11 @@
mFunctions->invalidateFramebuffer(GL_FRAMEBUFFER, static_cast<GLsizei>(count),
finalAttachmentsPtr);
}
- else if (mFunctions->discardFramebuffer)
+ else if (mFunctions->discardFramebufferEXT)
{
mStateManager->bindFramebuffer(GL_FRAMEBUFFER, mFramebufferID);
- mFunctions->discardFramebuffer(GL_FRAMEBUFFER, static_cast<GLsizei>(count),
- finalAttachmentsPtr);
+ mFunctions->discardFramebufferEXT(GL_FRAMEBUFFER, static_cast<GLsizei>(count),
+ finalAttachmentsPtr);
}
return gl::NoError();
diff --git a/src/libANGLE/renderer/gl/FunctionsGL.cpp b/src/libANGLE/renderer/gl/FunctionsGL.cpp
index 21ea375..234d336 100644
--- a/src/libANGLE/renderer/gl/FunctionsGL.cpp
+++ b/src/libANGLE/renderer/gl/FunctionsGL.cpp
@@ -55,742 +55,9 @@
return result;
}
-static void AssignGLExtensionEntryPoint(const std::vector<std::string> &extensions,
- const char *requiredExtensionString,
- void *function,
- void **outFunction)
-{
- std::vector<std::string> requiredExtensions;
- angle::SplitStringAlongWhitespace(requiredExtensionString, &requiredExtensions);
- for (const std::string& requiredExtension : requiredExtensions)
- {
- if (std::find(extensions.begin(), extensions.end(), requiredExtension) == extensions.end())
- {
- return;
- }
- }
-
- *outFunction = function;
-}
-
-#define ASSIGN_WITH_EXT(EXT, NAME, FP) \
- AssignGLExtensionEntryPoint(extensions, EXT, loadProcAddress(NAME), \
- reinterpret_cast<void **>(&FP))
#define ASSIGN(NAME, FP) *reinterpret_cast<void **>(&FP) = loadProcAddress(NAME)
-FunctionsGL::FunctionsGL()
- : version(),
- standard(),
- extensions(),
-
- blendFunc(nullptr),
- clear(nullptr),
- clearColor(nullptr),
- clearDepth(nullptr),
- clearStencil(nullptr),
- colorMask(nullptr),
- cullFace(nullptr),
- depthFunc(nullptr),
- depthMask(nullptr),
- depthRange(nullptr),
- disable(nullptr),
- drawBuffer(nullptr),
- enable(nullptr),
- finish(nullptr),
- flush(nullptr),
- frontFace(nullptr),
- getBooleanv(nullptr),
- getDoublev(nullptr),
- getError(nullptr),
- getFloatv(nullptr),
- getIntegerv(nullptr),
- getString(nullptr),
- getTexImage(nullptr),
- getTexLevelParameterfv(nullptr),
- getTexLevelParameteriv(nullptr),
- getTexParameterfv(nullptr),
- getTexParameteriv(nullptr),
- hint(nullptr),
- isEnabled(nullptr),
- lineWidth(nullptr),
- logicOp(nullptr),
- pixelStoref(nullptr),
- pixelStorei(nullptr),
- pointSize(nullptr),
- polygonMode(nullptr),
- readBuffer(nullptr),
- readPixels(nullptr),
- scissor(nullptr),
- stencilFunc(nullptr),
- stencilMask(nullptr),
- stencilOp(nullptr),
- texImage1D(nullptr),
- texImage2D(nullptr),
- texParameterf(nullptr),
- texParameterfv(nullptr),
- texParameteri(nullptr),
- texParameteriv(nullptr),
- viewport(nullptr),
-
- bindTexture(nullptr),
- copyTexImage1D(nullptr),
- copyTexImage2D(nullptr),
- copyTexSubImage1D(nullptr),
- copyTexSubImage2D(nullptr),
- deleteTextures(nullptr),
- drawArrays(nullptr),
- drawElements(nullptr),
- genTextures(nullptr),
- isTexture(nullptr),
- polygonOffset(nullptr),
- texSubImage1D(nullptr),
- texSubImage2D(nullptr),
-
- blendColor(nullptr),
- blendEquation(nullptr),
- copyTexSubImage3D(nullptr),
- drawRangeElements(nullptr),
- texImage3D(nullptr),
- texSubImage3D(nullptr),
-
- deleteFencesNV(nullptr),
- genFencesNV(nullptr),
- isFenceNV(nullptr),
- testFenceNV(nullptr),
- getFenceivNV(nullptr),
- finishFenceNV(nullptr),
- setFenceNV(nullptr),
-
- activeTexture(nullptr),
- compressedTexImage1D(nullptr),
- compressedTexImage2D(nullptr),
- compressedTexImage3D(nullptr),
- compressedTexSubImage1D(nullptr),
- compressedTexSubImage2D(nullptr),
- compressedTexSubImage3D(nullptr),
- getCompressedTexImage(nullptr),
- sampleCoverage(nullptr),
-
- blendFuncSeparate(nullptr),
- multiDrawArrays(nullptr),
- multiDrawElements(nullptr),
- pointParameterf(nullptr),
- pointParameterfv(nullptr),
- pointParameteri(nullptr),
- pointParameteriv(nullptr),
-
- beginQuery(nullptr),
- bindBuffer(nullptr),
- bufferData(nullptr),
- bufferSubData(nullptr),
- deleteBuffers(nullptr),
- deleteQueries(nullptr),
- endQuery(nullptr),
- genBuffers(nullptr),
- genQueries(nullptr),
- getBufferParameteriv(nullptr),
- getBufferPointerv(nullptr),
- getBufferSubData(nullptr),
- getQueryObjectiv(nullptr),
- getQueryObjectuiv(nullptr),
- getQueryiv(nullptr),
- isBuffer(nullptr),
- isQuery(nullptr),
- mapBuffer(nullptr),
- unmapBuffer(nullptr),
-
- attachShader(nullptr),
- bindAttribLocation(nullptr),
- blendEquationSeparate(nullptr),
- compileShader(nullptr),
- createProgram(nullptr),
- createShader(nullptr),
- deleteProgram(nullptr),
- deleteShader(nullptr),
- detachShader(nullptr),
- disableVertexAttribArray(nullptr),
- drawBuffers(nullptr),
- enableVertexAttribArray(nullptr),
- getActiveAttrib(nullptr),
- getActiveUniform(nullptr),
- getAttachedShaders(nullptr),
- getAttribLocation(nullptr),
- getProgramInfoLog(nullptr),
- getProgramiv(nullptr),
- getShaderInfoLog(nullptr),
- getShaderSource(nullptr),
- getShaderiv(nullptr),
- getUniformLocation(nullptr),
- getUniformfv(nullptr),
- getUniformiv(nullptr),
- getVertexAttribPointerv(nullptr),
- getVertexAttribdv(nullptr),
- getVertexAttribfv(nullptr),
- getVertexAttribiv(nullptr),
- isProgram(nullptr),
- isShader(nullptr),
- linkProgram(nullptr),
- shaderSource(nullptr),
- stencilFuncSeparate(nullptr),
- stencilMaskSeparate(nullptr),
- stencilOpSeparate(nullptr),
- uniform1f(nullptr),
- uniform1fv(nullptr),
- uniform1i(nullptr),
- uniform1iv(nullptr),
- uniform2f(nullptr),
- uniform2fv(nullptr),
- uniform2i(nullptr),
- uniform2iv(nullptr),
- uniform3f(nullptr),
- uniform3fv(nullptr),
- uniform3i(nullptr),
- uniform3iv(nullptr),
- uniform4f(nullptr),
- uniform4fv(nullptr),
- uniform4i(nullptr),
- uniform4iv(nullptr),
- uniformMatrix2fv(nullptr),
- uniformMatrix3fv(nullptr),
- uniformMatrix4fv(nullptr),
- useProgram(nullptr),
- validateProgram(nullptr),
- vertexAttrib1d(nullptr),
- vertexAttrib1dv(nullptr),
- vertexAttrib1f(nullptr),
- vertexAttrib1fv(nullptr),
- vertexAttrib1s(nullptr),
- vertexAttrib1sv(nullptr),
- vertexAttrib2d(nullptr),
- vertexAttrib2dv(nullptr),
- vertexAttrib2f(nullptr),
- vertexAttrib2fv(nullptr),
- vertexAttrib2s(nullptr),
- vertexAttrib2sv(nullptr),
- vertexAttrib3d(nullptr),
- vertexAttrib3dv(nullptr),
- vertexAttrib3f(nullptr),
- vertexAttrib3fv(nullptr),
- vertexAttrib3s(nullptr),
- vertexAttrib3sv(nullptr),
- vertexAttrib4Nbv(nullptr),
- vertexAttrib4Niv(nullptr),
- vertexAttrib4Nsv(nullptr),
- vertexAttrib4Nub(nullptr),
- vertexAttrib4Nubv(nullptr),
- vertexAttrib4Nuiv(nullptr),
- vertexAttrib4Nusv(nullptr),
- vertexAttrib4bv(nullptr),
- vertexAttrib4d(nullptr),
- vertexAttrib4dv(nullptr),
- vertexAttrib4f(nullptr),
- vertexAttrib4fv(nullptr),
- vertexAttrib4iv(nullptr),
- vertexAttrib4s(nullptr),
- vertexAttrib4sv(nullptr),
- vertexAttrib4ubv(nullptr),
- vertexAttrib4uiv(nullptr),
- vertexAttrib4usv(nullptr),
- vertexAttribPointer(nullptr),
-
- uniformMatrix2x3fv(nullptr),
- uniformMatrix2x4fv(nullptr),
- uniformMatrix3x2fv(nullptr),
- uniformMatrix3x4fv(nullptr),
- uniformMatrix4x2fv(nullptr),
- uniformMatrix4x3fv(nullptr),
-
- beginConditionalRender(nullptr),
- beginTransformFeedback(nullptr),
- bindBufferBase(nullptr),
- bindBufferRange(nullptr),
- bindFragDataLocation(nullptr),
- bindFramebuffer(nullptr),
- bindRenderbuffer(nullptr),
- bindVertexArray(nullptr),
- blitFramebuffer(nullptr),
- checkFramebufferStatus(nullptr),
- clampColor(nullptr),
- clearBufferfi(nullptr),
- clearBufferfv(nullptr),
- clearBufferiv(nullptr),
- clearBufferuiv(nullptr),
- colorMaski(nullptr),
- deleteFramebuffers(nullptr),
- deleteRenderbuffers(nullptr),
- deleteVertexArrays(nullptr),
- disablei(nullptr),
- enablei(nullptr),
- endConditionalRender(nullptr),
- endTransformFeedback(nullptr),
- flushMappedBufferRange(nullptr),
- framebufferRenderbuffer(nullptr),
- framebufferTexture1D(nullptr),
- framebufferTexture2D(nullptr),
- framebufferTexture3D(nullptr),
- framebufferTextureLayer(nullptr),
- genFramebuffers(nullptr),
- genRenderbuffers(nullptr),
- genVertexArrays(nullptr),
- generateMipmap(nullptr),
- getBooleani_v(nullptr),
- getFragDataLocation(nullptr),
- getFramebufferAttachmentParameteriv(nullptr),
- getIntegeri_v(nullptr),
- getRenderbufferParameteriv(nullptr),
- getStringi(nullptr),
- getTexParameterIiv(nullptr),
- getTexParameterIuiv(nullptr),
- getTransformFeedbackVarying(nullptr),
- getUniformuiv(nullptr),
- getVertexAttribIiv(nullptr),
- getVertexAttribIuiv(nullptr),
- isEnabledi(nullptr),
- isFramebuffer(nullptr),
- isRenderbuffer(nullptr),
- isVertexArray(nullptr),
- mapBufferRange(nullptr),
- renderbufferStorage(nullptr),
- renderbufferStorageMultisample(nullptr),
- texParameterIiv(nullptr),
- texParameterIuiv(nullptr),
- transformFeedbackVaryings(nullptr),
- uniform1ui(nullptr),
- uniform1uiv(nullptr),
- uniform2ui(nullptr),
- uniform2uiv(nullptr),
- uniform3ui(nullptr),
- uniform3uiv(nullptr),
- uniform4ui(nullptr),
- uniform4uiv(nullptr),
- vertexAttribI1i(nullptr),
- vertexAttribI1iv(nullptr),
- vertexAttribI1ui(nullptr),
- vertexAttribI1uiv(nullptr),
- vertexAttribI2i(nullptr),
- vertexAttribI2iv(nullptr),
- vertexAttribI2ui(nullptr),
- vertexAttribI2uiv(nullptr),
- vertexAttribI3i(nullptr),
- vertexAttribI3iv(nullptr),
- vertexAttribI3ui(nullptr),
- vertexAttribI3uiv(nullptr),
- vertexAttribI4bv(nullptr),
- vertexAttribI4i(nullptr),
- vertexAttribI4iv(nullptr),
- vertexAttribI4sv(nullptr),
- vertexAttribI4ubv(nullptr),
- vertexAttribI4ui(nullptr),
- vertexAttribI4uiv(nullptr),
- vertexAttribI4usv(nullptr),
- vertexAttribIPointer(nullptr),
-
- copyBufferSubData(nullptr),
- drawArraysInstanced(nullptr),
- drawElementsInstanced(nullptr),
- getActiveUniformBlockName(nullptr),
- getActiveUniformBlockiv(nullptr),
- getActiveUniformName(nullptr),
- getActiveUniformsiv(nullptr),
- getUniformBlockIndex(nullptr),
- getUniformIndices(nullptr),
- primitiveRestartIndex(nullptr),
- texBuffer(nullptr),
- uniformBlockBinding(nullptr),
-
- clientWaitSync(nullptr),
- deleteSync(nullptr),
- drawElementsBaseVertex(nullptr),
- drawElementsInstancedBaseVertex(nullptr),
- drawRangeElementsBaseVertex(nullptr),
- fenceSync(nullptr),
- framebufferTexture(nullptr),
- getBufferParameteri64v(nullptr),
- getInteger64i_v(nullptr),
- getInteger64v(nullptr),
- getMultisamplefv(nullptr),
- getSynciv(nullptr),
- isSync(nullptr),
- multiDrawElementsBaseVertex(nullptr),
- provokingVertex(nullptr),
- sampleMaski(nullptr),
- texImage2DMultisample(nullptr),
- texImage3DMultisample(nullptr),
- waitSync(nullptr),
-
- matrixLoadEXT(nullptr),
- genPathsNV(nullptr),
- delPathsNV(nullptr),
- pathCommandsNV(nullptr),
- setPathParameterfNV(nullptr),
- setPathParameteriNV(nullptr),
- getPathParameterfNV(nullptr),
- getPathParameteriNV(nullptr),
- pathStencilFuncNV(nullptr),
- stencilFillPathNV(nullptr),
- stencilStrokePathNV(nullptr),
- coverFillPathNV(nullptr),
- coverStrokePathNV(nullptr),
- stencilThenCoverFillPathNV(nullptr),
- stencilThenCoverStrokePathNV(nullptr),
- coverFillPathInstancedNV(nullptr),
- coverStrokePathInstancedNV(nullptr),
- stencilFillPathInstancedNV(nullptr),
- stencilStrokePathInstancedNV(nullptr),
- stencilThenCoverFillPathInstancedNV(nullptr),
- stencilThenCoverStrokePathInstancedNV(nullptr),
- programPathFragmentInputGenNV(nullptr),
-
- bindFragDataLocationIndexed(nullptr),
- bindSampler(nullptr),
- deleteSamplers(nullptr),
- genSamplers(nullptr),
- getFragDataIndex(nullptr),
- getQueryObjecti64v(nullptr),
- getQueryObjectui64v(nullptr),
- getSamplerParameterIiv(nullptr),
- getSamplerParameterIuiv(nullptr),
- getSamplerParameterfv(nullptr),
- getSamplerParameteriv(nullptr),
- isSampler(nullptr),
- queryCounter(nullptr),
- samplerParameterIiv(nullptr),
- samplerParameterIuiv(nullptr),
- samplerParameterf(nullptr),
- samplerParameterfv(nullptr),
- samplerParameteri(nullptr),
- samplerParameteriv(nullptr),
- vertexAttribDivisor(nullptr),
- vertexAttribP1ui(nullptr),
- vertexAttribP1uiv(nullptr),
- vertexAttribP2ui(nullptr),
- vertexAttribP2uiv(nullptr),
- vertexAttribP3ui(nullptr),
- vertexAttribP3uiv(nullptr),
- vertexAttribP4ui(nullptr),
- vertexAttribP4uiv(nullptr),
-
- beginQueryIndexed(nullptr),
- bindTransformFeedback(nullptr),
- blendEquationSeparatei(nullptr),
- blendEquationi(nullptr),
- blendFuncSeparatei(nullptr),
- blendFunci(nullptr),
- deleteTransformFeedbacks(nullptr),
- drawArraysIndirect(nullptr),
- drawElementsIndirect(nullptr),
- drawTransformFeedback(nullptr),
- drawTransformFeedbackStream(nullptr),
- endQueryIndexed(nullptr),
- genTransformFeedbacks(nullptr),
- getActiveSubroutineName(nullptr),
- getActiveSubroutineUniformName(nullptr),
- getActiveSubroutineUniformiv(nullptr),
- getProgramStageiv(nullptr),
- getQueryIndexediv(nullptr),
- getSubroutineIndex(nullptr),
- getSubroutineUniformLocation(nullptr),
- getUniformSubroutineuiv(nullptr),
- getUniformdv(nullptr),
- isTransformFeedback(nullptr),
- minSampleShading(nullptr),
- patchParameterfv(nullptr),
- patchParameteri(nullptr),
- pauseTransformFeedback(nullptr),
- resumeTransformFeedback(nullptr),
- uniform1d(nullptr),
- uniform1dv(nullptr),
- uniform2d(nullptr),
- uniform2dv(nullptr),
- uniform3d(nullptr),
- uniform3dv(nullptr),
- uniform4d(nullptr),
- uniform4dv(nullptr),
- uniformMatrix2dv(nullptr),
- uniformMatrix2x3dv(nullptr),
- uniformMatrix2x4dv(nullptr),
- uniformMatrix3dv(nullptr),
- uniformMatrix3x2dv(nullptr),
- uniformMatrix3x4dv(nullptr),
- uniformMatrix4dv(nullptr),
- uniformMatrix4x2dv(nullptr),
- uniformMatrix4x3dv(nullptr),
- uniformSubroutinesuiv(nullptr),
-
- activeShaderProgram(nullptr),
- bindProgramPipeline(nullptr),
- clearDepthf(nullptr),
- createShaderProgramv(nullptr),
- deleteProgramPipelines(nullptr),
- depthRangeArrayv(nullptr),
- depthRangeIndexed(nullptr),
- depthRangef(nullptr),
- genProgramPipelines(nullptr),
- getDoublei_v(nullptr),
- getFloati_v(nullptr),
- getProgramBinary(nullptr),
- getProgramPipelineInfoLog(nullptr),
- getProgramPipelineiv(nullptr),
- getShaderPrecisionFormat(nullptr),
- getVertexAttribLdv(nullptr),
- isProgramPipeline(nullptr),
- programBinary(nullptr),
- programParameteri(nullptr),
- programUniform1d(nullptr),
- programUniform1dv(nullptr),
- programUniform1f(nullptr),
- programUniform1fv(nullptr),
- programUniform1i(nullptr),
- programUniform1iv(nullptr),
- programUniform1ui(nullptr),
- programUniform1uiv(nullptr),
- programUniform2d(nullptr),
- programUniform2dv(nullptr),
- programUniform2f(nullptr),
- programUniform2fv(nullptr),
- programUniform2i(nullptr),
- programUniform2iv(nullptr),
- programUniform2ui(nullptr),
- programUniform2uiv(nullptr),
- programUniform3d(nullptr),
- programUniform3dv(nullptr),
- programUniform3f(nullptr),
- programUniform3fv(nullptr),
- programUniform3i(nullptr),
- programUniform3iv(nullptr),
- programUniform3ui(nullptr),
- programUniform3uiv(nullptr),
- programUniform4d(nullptr),
- programUniform4dv(nullptr),
- programUniform4f(nullptr),
- programUniform4fv(nullptr),
- programUniform4i(nullptr),
- programUniform4iv(nullptr),
- programUniform4ui(nullptr),
- programUniform4uiv(nullptr),
- programUniformMatrix2dv(nullptr),
- programUniformMatrix2fv(nullptr),
- programUniformMatrix2x3dv(nullptr),
- programUniformMatrix2x3fv(nullptr),
- programUniformMatrix2x4dv(nullptr),
- programUniformMatrix2x4fv(nullptr),
- programUniformMatrix3dv(nullptr),
- programUniformMatrix3fv(nullptr),
- programUniformMatrix3x2dv(nullptr),
- programUniformMatrix3x2fv(nullptr),
- programUniformMatrix3x4dv(nullptr),
- programUniformMatrix3x4fv(nullptr),
- programUniformMatrix4dv(nullptr),
- programUniformMatrix4fv(nullptr),
- programUniformMatrix4x2dv(nullptr),
- programUniformMatrix4x2fv(nullptr),
- programUniformMatrix4x3dv(nullptr),
- programUniformMatrix4x3fv(nullptr),
- releaseShaderCompiler(nullptr),
- scissorArrayv(nullptr),
- scissorIndexed(nullptr),
- scissorIndexedv(nullptr),
- shaderBinary(nullptr),
- useProgramStages(nullptr),
- validateProgramPipeline(nullptr),
- vertexAttribL1d(nullptr),
- vertexAttribL1dv(nullptr),
- vertexAttribL2d(nullptr),
- vertexAttribL2dv(nullptr),
- vertexAttribL3d(nullptr),
- vertexAttribL3dv(nullptr),
- vertexAttribL4d(nullptr),
- vertexAttribL4dv(nullptr),
- vertexAttribLPointer(nullptr),
- viewportArrayv(nullptr),
- viewportIndexedf(nullptr),
- viewportIndexedfv(nullptr),
-
- bindImageTexture(nullptr),
- drawArraysInstancedBaseInstance(nullptr),
- drawElementsInstancedBaseInstance(nullptr),
- drawElementsInstancedBaseVertexBaseInstance(nullptr),
- drawTransformFeedbackInstanced(nullptr),
- drawTransformFeedbackStreamInstanced(nullptr),
- getActiveAtomicCounterBufferiv(nullptr),
- getInternalformativ(nullptr),
- memoryBarrier(nullptr),
- texStorage1D(nullptr),
- texStorage2D(nullptr),
- texStorage3D(nullptr),
-
- bindVertexBuffer(nullptr),
- clearBufferData(nullptr),
- clearBufferSubData(nullptr),
- copyImageSubData(nullptr),
- debugMessageCallback(nullptr),
- debugMessageControl(nullptr),
- debugMessageInsert(nullptr),
- dispatchCompute(nullptr),
- dispatchComputeIndirect(nullptr),
- framebufferParameteri(nullptr),
- getDebugMessageLog(nullptr),
- getFramebufferParameteriv(nullptr),
- getInternalformati64v(nullptr),
- getPointerv(nullptr),
- getObjectLabel(nullptr),
- getObjectPtrLabel(nullptr),
- getProgramInterfaceiv(nullptr),
- getProgramResourceIndex(nullptr),
- getProgramResourceLocation(nullptr),
- getProgramResourceLocationIndex(nullptr),
- getProgramResourceName(nullptr),
- getProgramResourceiv(nullptr),
- invalidateBufferData(nullptr),
- invalidateBufferSubData(nullptr),
- invalidateFramebuffer(nullptr),
- invalidateSubFramebuffer(nullptr),
- invalidateTexImage(nullptr),
- invalidateTexSubImage(nullptr),
- multiDrawArraysIndirect(nullptr),
- multiDrawElementsIndirect(nullptr),
- objectLabel(nullptr),
- objectPtrLabel(nullptr),
- popDebugGroup(nullptr),
- pushDebugGroup(nullptr),
- shaderStorageBlockBinding(nullptr),
- texBufferRange(nullptr),
- texStorage2DMultisample(nullptr),
- texStorage3DMultisample(nullptr),
- textureView(nullptr),
- vertexAttribBinding(nullptr),
- vertexAttribFormat(nullptr),
- vertexAttribIFormat(nullptr),
- vertexAttribLFormat(nullptr),
- vertexBindingDivisor(nullptr),
- coverageModulationNV(nullptr),
-
- bindBuffersBase(nullptr),
- bindBuffersRange(nullptr),
- bindImageTextures(nullptr),
- bindSamplers(nullptr),
- bindTextures(nullptr),
- bindVertexBuffers(nullptr),
- bufferStorage(nullptr),
- clearTexImage(nullptr),
- clearTexSubImage(nullptr),
-
- bindTextureUnit(nullptr),
- blitNamedFramebuffer(nullptr),
- checkNamedFramebufferStatus(nullptr),
- clearNamedBufferData(nullptr),
- clearNamedBufferSubData(nullptr),
- clearNamedFramebufferfi(nullptr),
- clearNamedFramebufferfv(nullptr),
- clearNamedFramebufferiv(nullptr),
- clearNamedFramebufferuiv(nullptr),
- clipControl(nullptr),
- compressedTextureSubImage1D(nullptr),
- compressedTextureSubImage2D(nullptr),
- compressedTextureSubImage3D(nullptr),
- copyNamedBufferSubData(nullptr),
- copyTextureSubImage1D(nullptr),
- copyTextureSubImage2D(nullptr),
- copyTextureSubImage3D(nullptr),
- createBuffers(nullptr),
- createFramebuffers(nullptr),
- createProgramPipelines(nullptr),
- createQueries(nullptr),
- createRenderbuffers(nullptr),
- createSamplers(nullptr),
- createTextures(nullptr),
- createTransformFeedbacks(nullptr),
- createVertexArrays(nullptr),
- disableVertexArrayAttrib(nullptr),
- enableVertexArrayAttrib(nullptr),
- flushMappedNamedBufferRange(nullptr),
- generateTextureMipmap(nullptr),
- getCompressedTextureImage(nullptr),
- getCompressedTextureSubImage(nullptr),
- getGraphicsResetStatus(nullptr),
- getNamedBufferParameteri64v(nullptr),
- getNamedBufferParameteriv(nullptr),
- getNamedBufferPointerv(nullptr),
- getNamedBufferSubData(nullptr),
- getNamedFramebufferAttachmentParameteriv(nullptr),
- getNamedFramebufferParameteriv(nullptr),
- getNamedRenderbufferParameteriv(nullptr),
- getQueryBufferObjecti64v(nullptr),
- getQueryBufferObjectiv(nullptr),
- getQueryBufferObjectui64v(nullptr),
- getQueryBufferObjectuiv(nullptr),
- getTextureImage(nullptr),
- getTextureLevelParameterfv(nullptr),
- getTextureLevelParameteriv(nullptr),
- getTextureParameterIiv(nullptr),
- getTextureParameterIuiv(nullptr),
- getTextureParameterfv(nullptr),
- getTextureParameteriv(nullptr),
- getTextureSubImage(nullptr),
- getTransformFeedbacki64_v(nullptr),
- getTransformFeedbacki_v(nullptr),
- getTransformFeedbackiv(nullptr),
- getVertexArrayIndexed64iv(nullptr),
- getVertexArrayIndexediv(nullptr),
- getVertexArrayiv(nullptr),
- getnCompressedTexImage(nullptr),
- getnTexImage(nullptr),
- getnUniformdv(nullptr),
- getnUniformfv(nullptr),
- getnUniformiv(nullptr),
- getnUniformuiv(nullptr),
- invalidateNamedFramebufferData(nullptr),
- invalidateNamedFramebufferSubData(nullptr),
- mapNamedBuffer(nullptr),
- mapNamedBufferRange(nullptr),
- memoryBarrierByRegion(nullptr),
- namedBufferData(nullptr),
- namedBufferStorage(nullptr),
- namedBufferSubData(nullptr),
- namedFramebufferDrawBuffer(nullptr),
- namedFramebufferDrawBuffers(nullptr),
- namedFramebufferParameteri(nullptr),
- namedFramebufferReadBuffer(nullptr),
- namedFramebufferRenderbuffer(nullptr),
- namedFramebufferTexture(nullptr),
- namedFramebufferTextureLayer(nullptr),
- namedRenderbufferStorage(nullptr),
- namedRenderbufferStorageMultisample(nullptr),
- readnPixels(nullptr),
- textureBarrier(nullptr),
- textureBuffer(nullptr),
- textureBufferRange(nullptr),
- textureParameterIiv(nullptr),
- textureParameterIuiv(nullptr),
- textureParameterf(nullptr),
- textureParameterfv(nullptr),
- textureParameteri(nullptr),
- textureParameteriv(nullptr),
- textureStorage1D(nullptr),
- textureStorage2D(nullptr),
- textureStorage2DMultisample(nullptr),
- textureStorage3D(nullptr),
- textureStorage3DMultisample(nullptr),
- textureSubImage1D(nullptr),
- textureSubImage2D(nullptr),
- textureSubImage3D(nullptr),
- transformFeedbackBufferBase(nullptr),
- transformFeedbackBufferRange(nullptr),
- unmapNamedBuffer(nullptr),
- vertexArrayAttribBinding(nullptr),
- vertexArrayAttribFormat(nullptr),
- vertexArrayAttribIFormat(nullptr),
- vertexArrayAttribLFormat(nullptr),
- vertexArrayBindingDivisor(nullptr),
- vertexArrayElementBuffer(nullptr),
- vertexArrayVertexBuffer(nullptr),
- vertexArrayVertexBuffers(nullptr),
- blendBarrier(nullptr),
- primitiveBoundingBox(nullptr),
- eglImageTargetRenderbufferStorageOES(nullptr),
- eglImageTargetTexture2DOES(nullptr),
- discardFramebuffer(nullptr),
- getInternalformatSampleivNV(nullptr)
+FunctionsGL::FunctionsGL() : version(), standard(), extensions()
{
}
@@ -813,1496 +80,50 @@
}
else
{
- const char *exts = reinterpret_cast<const char*>(getString(GL_EXTENSIONS));
+ const char *exts = reinterpret_cast<const char *>(getString(GL_EXTENSIONS));
angle::SplitStringAlongWhitespace(std::string(exts), &extensions);
}
+ std::set<std::string> extensionSet;
+ for (const auto &extension : extensions)
+ {
+ extensionSet.insert(extension);
+ }
+
+ // Note:
+ // Even though extensions are written against specific versions of GL, many drivers expose the
+ // extensions in even older versions. Always try loading the extensions regardless of GL
+ // version.
+
// Load the entry points
switch (standard)
{
case STANDARD_GL_DESKTOP:
- initializeProcsDesktopGL();
+ {
+ // Check the context profile
+ profile = 0;
+ if (isAtLeastGL(gl::Version(3, 2)))
+ {
+ getIntegerv(GL_CONTEXT_PROFILE_MASK, &profile);
+ }
+
+ initProcsDesktopGL(version, extensionSet);
break;
+ }
case STANDARD_GL_ES:
- initializeProcsGLES();
+ // No profiles in GLES
+ profile = 0;
+
+ initProcsGLES(version, extensionSet);
break;
default:
UNREACHABLE();
break;
}
-}
-void FunctionsGL::initializeProcsDesktopGL()
-{
- // Check the context profile
- profile = 0;
- if (isAtLeastGL(gl::Version(3, 2)))
- {
- getIntegerv(GL_CONTEXT_PROFILE_MASK, &profile);
- }
-
- // clang-format off
-
- // Load extensions
- // Even though extensions are written against specific versions of GL, many drivers expose the extensions
- // in even older versions. Always try loading the extensions regardless of GL version.
-
- // GL_NV_internalformat_sample_query
- ASSIGN_WITH_EXT("GL_NV_internalformat_sample_query", "glGetInternalformatSampleivNV", getInternalformatSampleivNV);
-
- // GL_ARB_program_interface_query (loading only functions relevant to GL_NV_path_rendering here)
- ASSIGN_WITH_EXT("GL_ARB_program_interface_query", "glGetProgramInterfaceiv", getProgramInterfaceiv);
- ASSIGN_WITH_EXT("GL_ARB_program_interface_query", "glGetProgramResourceName", getProgramResourceName);
- ASSIGN_WITH_EXT("GL_ARB_program_interface_query", "glGetProgramResourceiv", getProgramResourceiv);
-
- // GL_NV_path_rendering
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glMatrixLoadfEXT", matrixLoadEXT);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGenPathsNV", genPathsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glDeletePathsNV", delPathsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathCommandsNV", pathCommandsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glIsPathNV", isPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathParameterfNV", setPathParameterfNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathParameteriNV", setPathParameteriNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGetPathParameterfvNV", getPathParameterfNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGetPathParameterivNV", getPathParameteriNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathStencilFuncNV", pathStencilFuncNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilFillPathNV", stencilFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilStrokePathNV", stencilStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverFillPathNV", coverFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverStrokePathNV", coverStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverFillPathNV", stencilThenCoverFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverStrokePathNV", stencilThenCoverStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverFillPathInstancedNV", coverFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverStrokePathInstancedNV", coverStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilFillPathInstancedNV", stencilFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilStrokePathInstancedNV", stencilStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverFillPathInstancedNV", stencilThenCoverFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverStrokePathInstancedNV", stencilThenCoverStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glProgramPathFragmentInputGenNV", programPathFragmentInputGenNV);
-
- // GL_NV_framebuffer_mixed_samples
- ASSIGN_WITH_EXT("GL_NV_framebuffer_mixed_samples", "glCoverageModulationNV", coverageModulationNV);
-
- // GL_NV_fence
- ASSIGN_WITH_EXT("GL_NV_fence", "glDeleteFencesNV", deleteFencesNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glGenFencesNV", genFencesNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glIsFenceNV", isFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glTestFenceNV", testFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glGetFenceivNV", getFenceivNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glFinishFenceNV", finishFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glSetFenceNV", setFenceNV);
-
- // GL_EXT_texture_storage
- ASSIGN_WITH_EXT("GL_EXT_texture_storage", "glTexStorage1DEXT", texStorage1D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage", "glTexStorage2DEXT", texStorage2D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage GL_EXT_texture3D", "glTexStorage3DEXT", texStorage3D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage GL_EXT_texture3D", "glTextureStorage1DEXT", textureStorage1D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage GL_EXT_direct_state_access", "glTextureStorage2DEXT", textureStorage2D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage GL_EXT_direct_state_access GL_EXT_texture3D", "glTextureStorage3DEXT", textureStorage3D);
-
- // GL_ARB_vertex_array_object
- ASSIGN_WITH_EXT("GL_ARB_vertex_array_object", "glBindVertexArray", bindVertexArray);
- ASSIGN_WITH_EXT("GL_ARB_vertex_array_object", "glDeleteVertexArrays", deleteVertexArrays);
- ASSIGN_WITH_EXT("GL_ARB_vertex_array_object", "glGenVertexArrays", genVertexArrays);
- ASSIGN_WITH_EXT("GL_ARB_vertex_array_object", "glIsVertexArray", isVertexArray);
-
- // GL_ARB_vertex_attrib_binding
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glBindVertexBuffer", bindVertexBuffer);
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glVertexAttribFormat", vertexAttribFormat);
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glVertexAttribIFormat", vertexAttribIFormat);
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glVertexAttribLFormat", vertexAttribLFormat);
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glVertexAttribBinding", vertexAttribBinding);
- ASSIGN_WITH_EXT("GL_ARB_vertex_attrib_binding", "glVertexBindingDivisor", vertexBindingDivisor);
-
- // GL_ARB_sync
- ASSIGN_WITH_EXT("GL_ARB_sync", "glClientWaitSync", clientWaitSync);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glDeleteSync", deleteSync);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glFenceSync", fenceSync);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glGetInteger64i_v", getInteger64i_v);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glGetInteger64v", getInteger64v);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glGetSynciv", getSynciv);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glIsSync", isSync);
- ASSIGN_WITH_EXT("GL_ARB_sync", "glWaitSync", waitSync);
-
- // GL_EXT_framebuffer_object
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glIsRenderbufferEXT", isRenderbuffer);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glBindRenderbufferEXT", bindRenderbuffer);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glDeleteRenderbuffersEXT", deleteRenderbuffers);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glGenRenderbuffersEXT", genRenderbuffers);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glRenderbufferStorageEXT", renderbufferStorage);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glGetRenderbufferParameterivEXT", getRenderbufferParameteriv);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glIsFramebufferEXT", isFramebuffer);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glBindFramebufferEXT", bindFramebuffer);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glDeleteFramebuffersEXT", deleteFramebuffers);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glGenFramebuffersEXT", genFramebuffers);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glCheckFramebufferStatusEXT", checkFramebufferStatus);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glFramebufferTexture1DEXT", framebufferTexture1D);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glFramebufferTexture2DEXT", framebufferTexture2D);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glFramebufferTexture3DEXT", framebufferTexture3D);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glFramebufferRenderbufferEXT", framebufferRenderbuffer);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glGetFramebufferAttachmentParameterivEXT", getFramebufferAttachmentParameteriv);
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_object", "glGenerateMipmapEXT", generateMipmap);
-
- // GL_EXT_framebuffer_blit
- ASSIGN_WITH_EXT("GL_EXT_framebuffer_blit", "glBlitFramebufferEXT", blitFramebuffer);
-
- // GL_KHR_debug
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageControl", debugMessageControl);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageInsert", debugMessageInsert);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageCallback", debugMessageCallback);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetDebugMessageLog", getDebugMessageLog);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetPointerv", getPointerv);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glPushDebugGroup", pushDebugGroup);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glPopDebugGroup", popDebugGroup);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glObjectLabel", objectLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetObjectLabel", getObjectLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glObjectPtrLabel", objectPtrLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetObjectPtrLabel", getObjectPtrLabel);
-
- // GL_ARB_internalformat_query
- ASSIGN_WITH_EXT("GL_ARB_internalformat_query", "glGetInternalformativ", getInternalformativ);
-
- // GL_ARB_ES2_compatibility
- ASSIGN_WITH_EXT("GL_ARB_ES2_compatibility", "glReleaseShaderCompiler", releaseShaderCompiler);
- ASSIGN_WITH_EXT("GL_ARB_ES2_compatibility", "glShaderBinary", shaderBinary);
- ASSIGN_WITH_EXT("GL_ARB_ES2_compatibility", "glGetShaderPrecisionFormat", getShaderPrecisionFormat);
- ASSIGN_WITH_EXT("GL_ARB_ES2_compatibility", "glDepthRangef", depthRangef);
- ASSIGN_WITH_EXT("GL_ARB_ES2_compatibility", "glClearDepthf", clearDepthf);
-
- // GL_ARB_instanced_arrays
- ASSIGN_WITH_EXT("GL_ARB_instanced_arrays", "glVertexAttribDivisorARB", vertexAttribDivisor);
-
- // GL_EXT_draw_instanced
- ASSIGN_WITH_EXT("GL_EXT_draw_instanced", "glDrawArraysInstancedEXT", drawArraysInstanced);
- ASSIGN_WITH_EXT("GL_EXT_draw_instanced", "glDrawElementsInstancedEXT", drawElementsInstanced);
-
- // GL_ARB_draw_instanced
- ASSIGN_WITH_EXT("GL_ARB_draw_instanced", "glDrawArraysInstancedARB", drawArraysInstanced);
- ASSIGN_WITH_EXT("GL_ARB_draw_instanced", "glDrawElementsInstancedARB", drawElementsInstanced);
-
- // GL_ARB_sampler_objects
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glGenSamplers", genSamplers);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glDeleteSamplers", deleteSamplers);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glIsSampler", isSampler);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glBindSampler", bindSampler);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameteri", samplerParameteri);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameterf", samplerParameterf);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameteriv", samplerParameteriv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameterfv", samplerParameterfv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameterIiv", samplerParameterIiv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glSamplerParameterIuiv", samplerParameterIuiv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glGetSamplerParameteriv", getSamplerParameteriv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glGetSamplerParameterfv", getSamplerParameterfv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glGetSamplerParameterIiv", getSamplerParameterIiv);
- ASSIGN_WITH_EXT("GL_ARB_sampler_objects", "glGetSamplerParameterIuiv", getSamplerParameterIuiv);
-
- // GL_ARB_occlusion_query
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glGenQueriesARB", genQueries);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glDeleteQueriesARB", deleteQueries);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glIsQueryARB", isQuery);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glBeginQueryARB", beginQuery);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glEndQueryARB", endQuery);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glGetQueryivARB", getQueryiv);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glGetQueryObjectivARB", getQueryObjectiv);
- ASSIGN_WITH_EXT("GL_ARB_occlusion_query", "glGetQueryObjectuivARB", getQueryObjectuiv);
-
- // EXT_transform_feedback
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glBindBufferRangeEXT", bindBufferRange);
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glBindBufferBaseEXT", bindBufferBase);
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glBeginTransformFeedbackEXT", beginTransformFeedback);
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glEndTransformFeedbackEXT", endTransformFeedback);
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glTransformFeedbackVaryingsEXT", transformFeedbackVaryings);
- ASSIGN_WITH_EXT("EXT_transform_feedback", "glGetTransformFeedbackVaryingEXT", getTransformFeedbackVarying);
-
- // GL_ARB_transform_feedback2
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glBindTransformFeedback", bindTransformFeedback);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glDeleteTransformFeedbacks", deleteTransformFeedbacks);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glGenTransformFeedbacks", genTransformFeedbacks);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glIsTransformFeedback", isTransformFeedback);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glPauseTransformFeedback", pauseTransformFeedback);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glResumeTransformFeedback", resumeTransformFeedback);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback2", "glDrawTransformFeedback", drawTransformFeedback);
-
- // GL_ARB_transform_feedback3
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback3", "glDrawTransformFeedbackStream", drawTransformFeedbackStream);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback3", "glBeginQueryIndexed", beginQueryIndexed);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback3", "glEndQueryIndexed", endQueryIndexed);
- ASSIGN_WITH_EXT("GL_ARB_transform_feedback3", "glGetQueryIndexediv", getQueryIndexediv);
-
- // GL_ARB_get_program_binary
- ASSIGN_WITH_EXT("GL_ARB_get_program_binary", "glGetProgramBinary", getProgramBinary);
- ASSIGN_WITH_EXT("GL_ARB_get_program_binary", "glProgramBinary", programBinary);
- ASSIGN_WITH_EXT("GL_ARB_get_program_binary", "glProgramParameteri", programParameteri);
-
- // GL_ARB_robustness
- ASSIGN_WITH_EXT("GL_ARB_robustness", "glGetGraphicsResetStatusARB", getGraphicsResetStatus);
-
- // GL_KHR_robustness
- ASSIGN_WITH_EXT("GL_KHR_robustness", "glGetGraphicsResetStatus", getGraphicsResetStatus);
-
- // GL_ARB_invalidate_subdata
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateTexSubImage", invalidateTexSubImage);
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateTexImage", invalidateTexImage);
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateBufferSubData", invalidateBufferSubData);
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateBufferData", invalidateBufferData);
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateFramebuffer", invalidateFramebuffer);
- ASSIGN_WITH_EXT("GL_ARB_invalidate_subdata", "glInvalidateSubFramebuffer", invalidateSubFramebuffer);
-
- // 1.0
- if (isAtLeastGL(gl::Version(1, 0)))
- {
- ASSIGN("glBlendFunc", blendFunc);
- ASSIGN("glClear", clear);
- ASSIGN("glClearColor", clearColor);
- ASSIGN("glClearDepth", clearDepth);
- ASSIGN("glClearStencil", clearStencil);
- ASSIGN("glColorMask", colorMask);
- ASSIGN("glCullFace", cullFace);
- ASSIGN("glDepthFunc", depthFunc);
- ASSIGN("glDepthMask", depthMask);
- ASSIGN("glDepthRange", depthRange);
- ASSIGN("glDisable", disable);
- ASSIGN("glDrawBuffer", drawBuffer);
- ASSIGN("glEnable", enable);
- ASSIGN("glFinish", finish);
- ASSIGN("glFlush", flush);
- ASSIGN("glFrontFace", frontFace);
- ASSIGN("glGetBooleanv", getBooleanv);
- ASSIGN("glGetDoublev", getDoublev);
- ASSIGN("glGetError", getError);
- ASSIGN("glGetFloatv", getFloatv);
- ASSIGN("glGetIntegerv", getIntegerv);
- ASSIGN("glGetString", getString);
- ASSIGN("glGetTexImage", getTexImage);
- ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
- ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
- ASSIGN("glGetTexParameterfv", getTexParameterfv);
- ASSIGN("glGetTexParameteriv", getTexParameteriv);
- ASSIGN("glHint", hint);
- ASSIGN("glIsEnabled", isEnabled);
- ASSIGN("glLineWidth", lineWidth);
- ASSIGN("glLogicOp", logicOp);
- ASSIGN("glPixelStoref", pixelStoref);
- ASSIGN("glPixelStorei", pixelStorei);
- ASSIGN("glPointSize", pointSize);
- ASSIGN("glPolygonMode", polygonMode);
- ASSIGN("glReadBuffer", readBuffer);
- ASSIGN("glReadPixels", readPixels);
- ASSIGN("glScissor", scissor);
- ASSIGN("glStencilFunc", stencilFunc);
- ASSIGN("glStencilMask", stencilMask);
- ASSIGN("glStencilOp", stencilOp);
- ASSIGN("glTexImage1D", texImage1D);
- ASSIGN("glTexImage2D", texImage2D);
- ASSIGN("glTexParameterf", texParameterf);
- ASSIGN("glTexParameterfv", texParameterfv);
- ASSIGN("glTexParameteri", texParameteri);
- ASSIGN("glTexParameteriv", texParameteriv);
- ASSIGN("glViewport", viewport);
- }
-
- // 1.1
- if (isAtLeastGL(gl::Version(1, 1)))
- {
- ASSIGN("glBindTexture", bindTexture);
- ASSIGN("glCopyTexImage1D", copyTexImage1D);
- ASSIGN("glCopyTexImage2D", copyTexImage2D);
- ASSIGN("glCopyTexSubImage1D", copyTexSubImage1D);
- ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
- ASSIGN("glDeleteTextures", deleteTextures);
- ASSIGN("glDrawArrays", drawArrays);
- ASSIGN("glDrawElements", drawElements);
- ASSIGN("glGenTextures", genTextures);
- ASSIGN("glIsTexture", isTexture);
- ASSIGN("glPolygonOffset", polygonOffset);
- ASSIGN("glTexSubImage1D", texSubImage1D);
- ASSIGN("glTexSubImage2D", texSubImage2D);
- }
-
- // 1.2
- if (isAtLeastGL(gl::Version(1, 2)))
- {
- ASSIGN("glBlendColor", blendColor);
- ASSIGN("glBlendEquation", blendEquation);
- ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
- ASSIGN("glDrawRangeElements", drawRangeElements);
- ASSIGN("glTexImage3D", texImage3D);
- ASSIGN("glTexSubImage3D", texSubImage3D);
- }
-
- // 1.3
- if (isAtLeastGL(gl::Version(1, 3)))
- {
- ASSIGN("glActiveTexture", activeTexture);
- ASSIGN("glCompressedTexImage1D", compressedTexImage1D);
- ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
- ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
- ASSIGN("glCompressedTexSubImage1D", compressedTexSubImage1D);
- ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
- ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
- ASSIGN("glGetCompressedTexImage", getCompressedTexImage);
- ASSIGN("glSampleCoverage", sampleCoverage);
- }
-
- // 1.4
- if (isAtLeastGL(gl::Version(1, 4)))
- {
- ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
- ASSIGN("glMultiDrawArrays", multiDrawArrays);
- ASSIGN("glMultiDrawElements", multiDrawElements);
- ASSIGN("glPointParameterf", pointParameterf);
- ASSIGN("glPointParameterfv", pointParameterfv);
- ASSIGN("glPointParameteri", pointParameteri);
- ASSIGN("glPointParameteriv", pointParameteriv);
- }
-
- // 1.5
- if (isAtLeastGL(gl::Version(1, 5)))
- {
- ASSIGN("glBeginQuery", beginQuery);
- ASSIGN("glBindBuffer", bindBuffer);
- ASSIGN("glBufferData", bufferData);
- ASSIGN("glBufferSubData", bufferSubData);
- ASSIGN("glDeleteBuffers", deleteBuffers);
- ASSIGN("glDeleteQueries", deleteQueries);
- ASSIGN("glEndQuery", endQuery);
- ASSIGN("glGenBuffers", genBuffers);
- ASSIGN("glGenQueries", genQueries);
- ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
- ASSIGN("glGetBufferPointerv", getBufferPointerv);
- ASSIGN("glGetBufferSubData", getBufferSubData);
- ASSIGN("glGetQueryObjectiv", getQueryObjectiv);
- ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
- ASSIGN("glGetQueryiv", getQueryiv);
- ASSIGN("glIsBuffer", isBuffer);
- ASSIGN("glIsQuery", isQuery);
- ASSIGN("glMapBuffer", mapBuffer);
- ASSIGN("glUnmapBuffer", unmapBuffer);
- }
-
- // 2.0
- if (isAtLeastGL(gl::Version(2, 0)))
- {
- ASSIGN("glAttachShader", attachShader);
- ASSIGN("glBindAttribLocation", bindAttribLocation);
- ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
- ASSIGN("glCompileShader", compileShader);
- ASSIGN("glCreateProgram", createProgram);
- ASSIGN("glCreateShader", createShader);
- ASSIGN("glDeleteProgram", deleteProgram);
- ASSIGN("glDeleteShader", deleteShader);
- ASSIGN("glDetachShader", detachShader);
- ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
- ASSIGN("glDrawBuffers", drawBuffers);
- ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
- ASSIGN("glGetActiveAttrib", getActiveAttrib);
- ASSIGN("glGetActiveUniform", getActiveUniform);
- ASSIGN("glGetAttachedShaders", getAttachedShaders);
- ASSIGN("glGetAttribLocation", getAttribLocation);
- ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
- ASSIGN("glGetProgramiv", getProgramiv);
- ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
- ASSIGN("glGetShaderSource", getShaderSource);
- ASSIGN("glGetShaderiv", getShaderiv);
- ASSIGN("glGetUniformLocation", getUniformLocation);
- ASSIGN("glGetUniformfv", getUniformfv);
- ASSIGN("glGetUniformiv", getUniformiv);
- ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
- ASSIGN("glGetVertexAttribdv", getVertexAttribdv);
- ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
- ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
- ASSIGN("glIsProgram", isProgram);
- ASSIGN("glIsShader", isShader);
- ASSIGN("glLinkProgram", linkProgram);
- ASSIGN("glShaderSource", shaderSource);
- ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
- ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
- ASSIGN("glStencilOpSeparate", stencilOpSeparate);
- ASSIGN("glUniform1f", uniform1f);
- ASSIGN("glUniform1fv", uniform1fv);
- ASSIGN("glUniform1i", uniform1i);
- ASSIGN("glUniform1iv", uniform1iv);
- ASSIGN("glUniform2f", uniform2f);
- ASSIGN("glUniform2fv", uniform2fv);
- ASSIGN("glUniform2i", uniform2i);
- ASSIGN("glUniform2iv", uniform2iv);
- ASSIGN("glUniform3f", uniform3f);
- ASSIGN("glUniform3fv", uniform3fv);
- ASSIGN("glUniform3i", uniform3i);
- ASSIGN("glUniform3iv", uniform3iv);
- ASSIGN("glUniform4f", uniform4f);
- ASSIGN("glUniform4fv", uniform4fv);
- ASSIGN("glUniform4i", uniform4i);
- ASSIGN("glUniform4iv", uniform4iv);
- ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
- ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
- ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
- ASSIGN("glUseProgram", useProgram);
- ASSIGN("glValidateProgram", validateProgram);
- ASSIGN("glVertexAttrib1d", vertexAttrib1d);
- ASSIGN("glVertexAttrib1dv", vertexAttrib1dv);
- ASSIGN("glVertexAttrib1f", vertexAttrib1f);
- ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
- ASSIGN("glVertexAttrib1s", vertexAttrib1s);
- ASSIGN("glVertexAttrib1sv", vertexAttrib1sv);
- ASSIGN("glVertexAttrib2d", vertexAttrib2d);
- ASSIGN("glVertexAttrib2dv", vertexAttrib2dv);
- ASSIGN("glVertexAttrib2f", vertexAttrib2f);
- ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
- ASSIGN("glVertexAttrib2s", vertexAttrib2s);
- ASSIGN("glVertexAttrib2sv", vertexAttrib2sv);
- ASSIGN("glVertexAttrib3d", vertexAttrib3d);
- ASSIGN("glVertexAttrib3dv", vertexAttrib3dv);
- ASSIGN("glVertexAttrib3f", vertexAttrib3f);
- ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
- ASSIGN("glVertexAttrib3s", vertexAttrib3s);
- ASSIGN("glVertexAttrib3sv", vertexAttrib3sv);
- ASSIGN("glVertexAttrib4Nbv", vertexAttrib4Nbv);
- ASSIGN("glVertexAttrib4Niv", vertexAttrib4Niv);
- ASSIGN("glVertexAttrib4Nsv", vertexAttrib4Nsv);
- ASSIGN("glVertexAttrib4Nub", vertexAttrib4Nub);
- ASSIGN("glVertexAttrib4Nubv", vertexAttrib4Nubv);
- ASSIGN("glVertexAttrib4Nuiv", vertexAttrib4Nuiv);
- ASSIGN("glVertexAttrib4Nusv", vertexAttrib4Nusv);
- ASSIGN("glVertexAttrib4bv", vertexAttrib4bv);
- ASSIGN("glVertexAttrib4d", vertexAttrib4d);
- ASSIGN("glVertexAttrib4dv", vertexAttrib4dv);
- ASSIGN("glVertexAttrib4f", vertexAttrib4f);
- ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
- ASSIGN("glVertexAttrib4iv", vertexAttrib4iv);
- ASSIGN("glVertexAttrib4s", vertexAttrib4s);
- ASSIGN("glVertexAttrib4sv", vertexAttrib4sv);
- ASSIGN("glVertexAttrib4ubv", vertexAttrib4ubv);
- ASSIGN("glVertexAttrib4uiv", vertexAttrib4uiv);
- ASSIGN("glVertexAttrib4usv", vertexAttrib4usv);
- ASSIGN("glVertexAttribPointer", vertexAttribPointer);
- }
-
- // 2.1
- if (isAtLeastGL(gl::Version(2, 1)))
- {
- ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
- ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
- ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
- ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
- ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
- ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
- }
-
- // 3.0
- if (isAtLeastGL(gl::Version(3, 0)))
- {
- ASSIGN("glBeginConditionalRender", beginConditionalRender);
- ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
- ASSIGN("glBindBufferBase", bindBufferBase);
- ASSIGN("glBindBufferRange", bindBufferRange);
- ASSIGN("glBindFragDataLocation", bindFragDataLocation);
- ASSIGN("glBindFramebuffer", bindFramebuffer);
- ASSIGN("glBindRenderbuffer", bindRenderbuffer);
- ASSIGN("glBindVertexArray", bindVertexArray);
- ASSIGN("glBlitFramebuffer", blitFramebuffer);
- ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
- ASSIGN("glClampColor", clampColor);
- ASSIGN("glClearBufferfi", clearBufferfi);
- ASSIGN("glClearBufferfv", clearBufferfv);
- ASSIGN("glClearBufferiv", clearBufferiv);
- ASSIGN("glClearBufferuiv", clearBufferuiv);
- ASSIGN("glColorMaski", colorMaski);
- ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
- ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
- ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
- ASSIGN("glDisablei", disablei);
- ASSIGN("glEnablei", enablei);
- ASSIGN("glEndConditionalRender", endConditionalRender);
- ASSIGN("glEndTransformFeedback", endTransformFeedback);
- ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
- ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
- ASSIGN("glFramebufferTexture1D", framebufferTexture1D);
- ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
- ASSIGN("glFramebufferTexture3D", framebufferTexture3D);
- ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
- ASSIGN("glGenFramebuffers", genFramebuffers);
- ASSIGN("glGenRenderbuffers", genRenderbuffers);
- ASSIGN("glGenVertexArrays", genVertexArrays);
- ASSIGN("glGenerateMipmap", generateMipmap);
- ASSIGN("glGetBooleani_v", getBooleani_v);
- ASSIGN("glGetFragDataLocation", getFragDataLocation);
- ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
- ASSIGN("glGetIntegeri_v", getIntegeri_v);
- ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
- ASSIGN("glGetStringi", getStringi);
- ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
- ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
- ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
- ASSIGN("glGetUniformuiv", getUniformuiv);
- ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
- ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
- ASSIGN("glIsEnabledi", isEnabledi);
- ASSIGN("glIsFramebuffer", isFramebuffer);
- ASSIGN("glIsRenderbuffer", isRenderbuffer);
- ASSIGN("glIsVertexArray", isVertexArray);
- ASSIGN("glMapBufferRange", mapBufferRange);
- ASSIGN("glRenderbufferStorage", renderbufferStorage);
- ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
- ASSIGN("glTexParameterIiv", texParameterIiv);
- ASSIGN("glTexParameterIuiv", texParameterIuiv);
- ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
- ASSIGN("glUniform1ui", uniform1ui);
- ASSIGN("glUniform1uiv", uniform1uiv);
- ASSIGN("glUniform2ui", uniform2ui);
- ASSIGN("glUniform2uiv", uniform2uiv);
- ASSIGN("glUniform3ui", uniform3ui);
- ASSIGN("glUniform3uiv", uniform3uiv);
- ASSIGN("glUniform4ui", uniform4ui);
- ASSIGN("glUniform4uiv", uniform4uiv);
- ASSIGN("glVertexAttribI1i", vertexAttribI1i);
- ASSIGN("glVertexAttribI1iv", vertexAttribI1iv);
- ASSIGN("glVertexAttribI1ui", vertexAttribI1ui);
- ASSIGN("glVertexAttribI1uiv", vertexAttribI1uiv);
- ASSIGN("glVertexAttribI2i", vertexAttribI2i);
- ASSIGN("glVertexAttribI2iv", vertexAttribI2iv);
- ASSIGN("glVertexAttribI2ui", vertexAttribI2ui);
- ASSIGN("glVertexAttribI2uiv", vertexAttribI2uiv);
- ASSIGN("glVertexAttribI3i", vertexAttribI3i);
- ASSIGN("glVertexAttribI3iv", vertexAttribI3iv);
- ASSIGN("glVertexAttribI3ui", vertexAttribI3ui);
- ASSIGN("glVertexAttribI3uiv", vertexAttribI3uiv);
- ASSIGN("glVertexAttribI4bv", vertexAttribI4bv);
- ASSIGN("glVertexAttribI4i", vertexAttribI4i);
- ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
- ASSIGN("glVertexAttribI4sv", vertexAttribI4sv);
- ASSIGN("glVertexAttribI4ubv", vertexAttribI4ubv);
- ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
- ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
- ASSIGN("glVertexAttribI4usv", vertexAttribI4usv);
- ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
- }
-
- // 3.1
- if (isAtLeastGL(gl::Version(3, 1)))
- {
- ASSIGN("glCopyBufferSubData", copyBufferSubData);
- ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
- ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
- ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
- ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
- ASSIGN("glGetActiveUniformName", getActiveUniformName);
- ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
- ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
- ASSIGN("glGetUniformIndices", getUniformIndices);
- ASSIGN("glPrimitiveRestartIndex", primitiveRestartIndex);
- ASSIGN("glTexBuffer", texBuffer);
- ASSIGN("glUniformBlockBinding", uniformBlockBinding);
- }
-
- // 3.2
- if (isAtLeastGL(gl::Version(3, 2)))
- {
- ASSIGN("glClientWaitSync", clientWaitSync);
- ASSIGN("glDeleteSync", deleteSync);
- ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
- ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
- ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
- ASSIGN("glFenceSync", fenceSync);
- ASSIGN("glFramebufferTexture", framebufferTexture);
- ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
- ASSIGN("glGetInteger64i_v", getInteger64i_v);
- ASSIGN("glGetInteger64v", getInteger64v);
- ASSIGN("glGetMultisamplefv", getMultisamplefv);
- ASSIGN("glGetSynciv", getSynciv);
- ASSIGN("glIsSync", isSync);
- ASSIGN("glMultiDrawElementsBaseVertex", multiDrawElementsBaseVertex);
- ASSIGN("glProvokingVertex", provokingVertex);
- ASSIGN("glSampleMaski", sampleMaski);
- ASSIGN("glTexImage2DMultisample", texImage2DMultisample);
- ASSIGN("glTexImage3DMultisample", texImage3DMultisample);
- ASSIGN("glWaitSync", waitSync);
- }
-
- // 3.3
- if (isAtLeastGL(gl::Version(3, 3)))
- {
- ASSIGN("glBindFragDataLocationIndexed", bindFragDataLocationIndexed);
- ASSIGN("glBindSampler", bindSampler);
- ASSIGN("glDeleteSamplers", deleteSamplers);
- ASSIGN("glGenSamplers", genSamplers);
- ASSIGN("glGetFragDataIndex", getFragDataIndex);
- ASSIGN("glGetQueryObjecti64v", getQueryObjecti64v);
- ASSIGN("glGetQueryObjectui64v", getQueryObjectui64v);
- ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
- ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
- ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
- ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
- ASSIGN("glIsSampler", isSampler);
- ASSIGN("glQueryCounter", queryCounter);
- ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
- ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
- ASSIGN("glSamplerParameterf", samplerParameterf);
- ASSIGN("glSamplerParameterfv", samplerParameterfv);
- ASSIGN("glSamplerParameteri", samplerParameteri);
- ASSIGN("glSamplerParameteriv", samplerParameteriv);
- ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
- ASSIGN("glVertexAttribP1ui", vertexAttribP1ui);
- ASSIGN("glVertexAttribP1uiv", vertexAttribP1uiv);
- ASSIGN("glVertexAttribP2ui", vertexAttribP2ui);
- ASSIGN("glVertexAttribP2uiv", vertexAttribP2uiv);
- ASSIGN("glVertexAttribP3ui", vertexAttribP3ui);
- ASSIGN("glVertexAttribP3uiv", vertexAttribP3uiv);
- ASSIGN("glVertexAttribP4ui", vertexAttribP4ui);
- ASSIGN("glVertexAttribP4uiv", vertexAttribP4uiv);
- }
-
- // 4.0
- if (isAtLeastGL(gl::Version(4, 0)))
- {
- ASSIGN("glBeginQueryIndexed", beginQueryIndexed);
- ASSIGN("glBindTransformFeedback", bindTransformFeedback);
- ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
- ASSIGN("glBlendEquationi", blendEquationi);
- ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
- ASSIGN("glBlendFunci", blendFunci);
- ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
- ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
- ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
- ASSIGN("glDrawTransformFeedback", drawTransformFeedback);
- ASSIGN("glDrawTransformFeedbackStream", drawTransformFeedbackStream);
- ASSIGN("glEndQueryIndexed", endQueryIndexed);
- ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
- ASSIGN("glGetActiveSubroutineName", getActiveSubroutineName);
- ASSIGN("glGetActiveSubroutineUniformName", getActiveSubroutineUniformName);
- ASSIGN("glGetActiveSubroutineUniformiv", getActiveSubroutineUniformiv);
- ASSIGN("glGetProgramStageiv", getProgramStageiv);
- ASSIGN("glGetQueryIndexediv", getQueryIndexediv);
- ASSIGN("glGetSubroutineIndex", getSubroutineIndex);
- ASSIGN("glGetSubroutineUniformLocation", getSubroutineUniformLocation);
- ASSIGN("glGetUniformSubroutineuiv", getUniformSubroutineuiv);
- ASSIGN("glGetUniformdv", getUniformdv);
- ASSIGN("glIsTransformFeedback", isTransformFeedback);
- ASSIGN("glMinSampleShading", minSampleShading);
- ASSIGN("glPatchParameterfv", patchParameterfv);
- ASSIGN("glPatchParameteri", patchParameteri);
- ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
- ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
- ASSIGN("glUniform1d", uniform1d);
- ASSIGN("glUniform1dv", uniform1dv);
- ASSIGN("glUniform2d", uniform2d);
- ASSIGN("glUniform2dv", uniform2dv);
- ASSIGN("glUniform3d", uniform3d);
- ASSIGN("glUniform3dv", uniform3dv);
- ASSIGN("glUniform4d", uniform4d);
- ASSIGN("glUniform4dv", uniform4dv);
- ASSIGN("glUniformMatrix2dv", uniformMatrix2dv);
- ASSIGN("glUniformMatrix2x3dv", uniformMatrix2x3dv);
- ASSIGN("glUniformMatrix2x4dv", uniformMatrix2x4dv);
- ASSIGN("glUniformMatrix3dv", uniformMatrix3dv);
- ASSIGN("glUniformMatrix3x2dv", uniformMatrix3x2dv);
- ASSIGN("glUniformMatrix3x4dv", uniformMatrix3x4dv);
- ASSIGN("glUniformMatrix4dv", uniformMatrix4dv);
- ASSIGN("glUniformMatrix4x2dv", uniformMatrix4x2dv);
- ASSIGN("glUniformMatrix4x3dv", uniformMatrix4x3dv);
- ASSIGN("glUniformSubroutinesuiv", uniformSubroutinesuiv);
- }
-
- // 4.1
- if (isAtLeastGL(gl::Version(4, 1)))
- {
- ASSIGN("glActiveShaderProgram", activeShaderProgram);
- ASSIGN("glBindProgramPipeline", bindProgramPipeline);
- ASSIGN("glClearDepthf", clearDepthf);
- ASSIGN("glCreateShaderProgramv", createShaderProgramv);
- ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
- ASSIGN("glDepthRangeArrayv", depthRangeArrayv);
- ASSIGN("glDepthRangeIndexed", depthRangeIndexed);
- ASSIGN("glDepthRangef", depthRangef);
- ASSIGN("glGenProgramPipelines", genProgramPipelines);
- ASSIGN("glGetDoublei_v", getDoublei_v);
- ASSIGN("glGetFloati_v", getFloati_v);
- ASSIGN("glGetProgramBinary", getProgramBinary);
- ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
- ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
- ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
- ASSIGN("glGetVertexAttribLdv", getVertexAttribLdv);
- ASSIGN("glIsProgramPipeline", isProgramPipeline);
- ASSIGN("glProgramBinary", programBinary);
- ASSIGN("glProgramParameteri", programParameteri);
- ASSIGN("glProgramUniform1d", programUniform1d);
- ASSIGN("glProgramUniform1dv", programUniform1dv);
- ASSIGN("glProgramUniform1f", programUniform1f);
- ASSIGN("glProgramUniform1fv", programUniform1fv);
- ASSIGN("glProgramUniform1i", programUniform1i);
- ASSIGN("glProgramUniform1iv", programUniform1iv);
- ASSIGN("glProgramUniform1ui", programUniform1ui);
- ASSIGN("glProgramUniform1uiv", programUniform1uiv);
- ASSIGN("glProgramUniform2d", programUniform2d);
- ASSIGN("glProgramUniform2dv", programUniform2dv);
- ASSIGN("glProgramUniform2f", programUniform2f);
- ASSIGN("glProgramUniform2fv", programUniform2fv);
- ASSIGN("glProgramUniform2i", programUniform2i);
- ASSIGN("glProgramUniform2iv", programUniform2iv);
- ASSIGN("glProgramUniform2ui", programUniform2ui);
- ASSIGN("glProgramUniform2uiv", programUniform2uiv);
- ASSIGN("glProgramUniform3d", programUniform3d);
- ASSIGN("glProgramUniform3dv", programUniform3dv);
- ASSIGN("glProgramUniform3f", programUniform3f);
- ASSIGN("glProgramUniform3fv", programUniform3fv);
- ASSIGN("glProgramUniform3i", programUniform3i);
- ASSIGN("glProgramUniform3iv", programUniform3iv);
- ASSIGN("glProgramUniform3ui", programUniform3ui);
- ASSIGN("glProgramUniform3uiv", programUniform3uiv);
- ASSIGN("glProgramUniform4d", programUniform4d);
- ASSIGN("glProgramUniform4dv", programUniform4dv);
- ASSIGN("glProgramUniform4f", programUniform4f);
- ASSIGN("glProgramUniform4fv", programUniform4fv);
- ASSIGN("glProgramUniform4i", programUniform4i);
- ASSIGN("glProgramUniform4iv", programUniform4iv);
- ASSIGN("glProgramUniform4ui", programUniform4ui);
- ASSIGN("glProgramUniform4uiv", programUniform4uiv);
- ASSIGN("glProgramUniformMatrix2dv", programUniformMatrix2dv);
- ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
- ASSIGN("glProgramUniformMatrix2x3dv", programUniformMatrix2x3dv);
- ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
- ASSIGN("glProgramUniformMatrix2x4dv", programUniformMatrix2x4dv);
- ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
- ASSIGN("glProgramUniformMatrix3dv", programUniformMatrix3dv);
- ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
- ASSIGN("glProgramUniformMatrix3x2dv", programUniformMatrix3x2dv);
- ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
- ASSIGN("glProgramUniformMatrix3x4dv", programUniformMatrix3x4dv);
- ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
- ASSIGN("glProgramUniformMatrix4dv", programUniformMatrix4dv);
- ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
- ASSIGN("glProgramUniformMatrix4x2dv", programUniformMatrix4x2dv);
- ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
- ASSIGN("glProgramUniformMatrix4x3dv", programUniformMatrix4x3dv);
- ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
- ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
- ASSIGN("glScissorArrayv", scissorArrayv);
- ASSIGN("glScissorIndexed", scissorIndexed);
- ASSIGN("glScissorIndexedv", scissorIndexedv);
- ASSIGN("glShaderBinary", shaderBinary);
- ASSIGN("glUseProgramStages", useProgramStages);
- ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
- ASSIGN("glVertexAttribL1d", vertexAttribL1d);
- ASSIGN("glVertexAttribL1dv", vertexAttribL1dv);
- ASSIGN("glVertexAttribL2d", vertexAttribL2d);
- ASSIGN("glVertexAttribL2dv", vertexAttribL2dv);
- ASSIGN("glVertexAttribL3d", vertexAttribL3d);
- ASSIGN("glVertexAttribL3dv", vertexAttribL3dv);
- ASSIGN("glVertexAttribL4d", vertexAttribL4d);
- ASSIGN("glVertexAttribL4dv", vertexAttribL4dv);
- ASSIGN("glVertexAttribLPointer", vertexAttribLPointer);
- ASSIGN("glViewportArrayv", viewportArrayv);
- ASSIGN("glViewportIndexedf", viewportIndexedf);
- ASSIGN("glViewportIndexedfv", viewportIndexedfv);
- }
-
- // 4.2
- if (isAtLeastGL(gl::Version(4, 2)))
- {
- ASSIGN("glBindImageTexture", bindImageTexture);
- ASSIGN("glDrawArraysInstancedBaseInstance", drawArraysInstancedBaseInstance);
- ASSIGN("glDrawElementsInstancedBaseInstance", drawElementsInstancedBaseInstance);
- ASSIGN("glDrawElementsInstancedBaseVertexBaseInstance", drawElementsInstancedBaseVertexBaseInstance);
- ASSIGN("glDrawTransformFeedbackInstanced", drawTransformFeedbackInstanced);
- ASSIGN("glDrawTransformFeedbackStreamInstanced", drawTransformFeedbackStreamInstanced);
- ASSIGN("glGetActiveAtomicCounterBufferiv", getActiveAtomicCounterBufferiv);
- ASSIGN("glGetInternalformativ", getInternalformativ);
- ASSIGN("glMemoryBarrier", memoryBarrier);
- ASSIGN("glTexStorage1D", texStorage1D);
- ASSIGN("glTexStorage2D", texStorage2D);
- ASSIGN("glTexStorage3D", texStorage3D);
- }
-
- // 4.3
- if (isAtLeastGL(gl::Version(4, 3)))
- {
- ASSIGN("glBindVertexBuffer", bindVertexBuffer);
- ASSIGN("glClearBufferData", clearBufferData);
- ASSIGN("glClearBufferSubData", clearBufferSubData);
- ASSIGN("glCopyImageSubData", copyImageSubData);
- ASSIGN("glDebugMessageCallback", debugMessageCallback);
- ASSIGN("glDebugMessageControl", debugMessageControl);
- ASSIGN("glDebugMessageInsert", debugMessageInsert);
- ASSIGN("glDispatchCompute", dispatchCompute);
- ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
- ASSIGN("glFramebufferParameteri", framebufferParameteri);
- ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
- ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
- ASSIGN("glGetInternalformati64v", getInternalformati64v);
- ASSIGN("glGetPointerv", getPointerv);
- ASSIGN("glGetObjectLabel", getObjectLabel);
- ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
- ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
- ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
- ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
- ASSIGN("glGetProgramResourceLocationIndex", getProgramResourceLocationIndex);
- ASSIGN("glGetProgramResourceName", getProgramResourceName);
- ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
- ASSIGN("glInvalidateBufferData", invalidateBufferData);
- ASSIGN("glInvalidateBufferSubData", invalidateBufferSubData);
- ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
- ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
- ASSIGN("glInvalidateTexImage", invalidateTexImage);
- ASSIGN("glInvalidateTexSubImage", invalidateTexSubImage);
- ASSIGN("glMultiDrawArraysIndirect", multiDrawArraysIndirect);
- ASSIGN("glMultiDrawElementsIndirect", multiDrawElementsIndirect);
- ASSIGN("glObjectLabel", objectLabel);
- ASSIGN("glObjectPtrLabel", objectPtrLabel);
- ASSIGN("glPopDebugGroup", popDebugGroup);
- ASSIGN("glPushDebugGroup", pushDebugGroup);
- ASSIGN("glShaderStorageBlockBinding", shaderStorageBlockBinding);
- ASSIGN("glTexBufferRange", texBufferRange);
- ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
- ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
- ASSIGN("glTextureView", textureView);
- ASSIGN("glVertexAttribBinding", vertexAttribBinding);
- ASSIGN("glVertexAttribFormat", vertexAttribFormat);
- ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
- ASSIGN("glVertexAttribLFormat", vertexAttribLFormat);
- ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
- }
-
- // 4.4
- if (isAtLeastGL(gl::Version(4, 4)))
- {
- ASSIGN("glBindBuffersBase", bindBuffersBase);
- ASSIGN("glBindBuffersRange", bindBuffersRange);
- ASSIGN("glBindImageTextures", bindImageTextures);
- ASSIGN("glBindSamplers", bindSamplers);
- ASSIGN("glBindTextures", bindTextures);
- ASSIGN("glBindVertexBuffers", bindVertexBuffers);
- ASSIGN("glBufferStorage", bufferStorage);
- ASSIGN("glClearTexImage", clearTexImage);
- ASSIGN("glClearTexSubImage", clearTexSubImage);
- }
-
- // 4.5
- if (isAtLeastGL(gl::Version(4, 5)))
- {
- ASSIGN("glBindTextureUnit", bindTextureUnit);
- ASSIGN("glBlitNamedFramebuffer", blitNamedFramebuffer);
- ASSIGN("glCheckNamedFramebufferStatus", checkNamedFramebufferStatus);
- ASSIGN("glClearNamedBufferData", clearNamedBufferData);
- ASSIGN("glClearNamedBufferSubData", clearNamedBufferSubData);
- ASSIGN("glClearNamedFramebufferfi", clearNamedFramebufferfi);
- ASSIGN("glClearNamedFramebufferfv", clearNamedFramebufferfv);
- ASSIGN("glClearNamedFramebufferiv", clearNamedFramebufferiv);
- ASSIGN("glClearNamedFramebufferuiv", clearNamedFramebufferuiv);
- ASSIGN("glClipControl", clipControl);
- ASSIGN("glCompressedTextureSubImage1D", compressedTextureSubImage1D);
- ASSIGN("glCompressedTextureSubImage2D", compressedTextureSubImage2D);
- ASSIGN("glCompressedTextureSubImage3D", compressedTextureSubImage3D);
- ASSIGN("glCopyNamedBufferSubData", copyNamedBufferSubData);
- ASSIGN("glCopyTextureSubImage1D", copyTextureSubImage1D);
- ASSIGN("glCopyTextureSubImage2D", copyTextureSubImage2D);
- ASSIGN("glCopyTextureSubImage3D", copyTextureSubImage3D);
- ASSIGN("glCreateBuffers", createBuffers);
- ASSIGN("glCreateFramebuffers", createFramebuffers);
- ASSIGN("glCreateProgramPipelines", createProgramPipelines);
- ASSIGN("glCreateQueries", createQueries);
- ASSIGN("glCreateRenderbuffers", createRenderbuffers);
- ASSIGN("glCreateSamplers", createSamplers);
- ASSIGN("glCreateTextures", createTextures);
- ASSIGN("glCreateTransformFeedbacks", createTransformFeedbacks);
- ASSIGN("glCreateVertexArrays", createVertexArrays);
- ASSIGN("glDisableVertexArrayAttrib", disableVertexArrayAttrib);
- ASSIGN("glEnableVertexArrayAttrib", enableVertexArrayAttrib);
- ASSIGN("glFlushMappedNamedBufferRange", flushMappedNamedBufferRange);
- ASSIGN("glGenerateTextureMipmap", generateTextureMipmap);
- ASSIGN("glGetCompressedTextureImage", getCompressedTextureImage);
- ASSIGN("glGetCompressedTextureSubImage", getCompressedTextureSubImage);
- ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
- ASSIGN("glGetNamedBufferParameteri64v", getNamedBufferParameteri64v);
- ASSIGN("glGetNamedBufferParameteriv", getNamedBufferParameteriv);
- ASSIGN("glGetNamedBufferPointerv", getNamedBufferPointerv);
- ASSIGN("glGetNamedBufferSubData", getNamedBufferSubData);
- ASSIGN("glGetNamedFramebufferAttachmentParameteriv", getNamedFramebufferAttachmentParameteriv);
- ASSIGN("glGetNamedFramebufferParameteriv", getNamedFramebufferParameteriv);
- ASSIGN("glGetNamedRenderbufferParameteriv", getNamedRenderbufferParameteriv);
- ASSIGN("glGetQueryBufferObjecti64v", getQueryBufferObjecti64v);
- ASSIGN("glGetQueryBufferObjectiv", getQueryBufferObjectiv);
- ASSIGN("glGetQueryBufferObjectui64v", getQueryBufferObjectui64v);
- ASSIGN("glGetQueryBufferObjectuiv", getQueryBufferObjectuiv);
- ASSIGN("glGetTextureImage", getTextureImage);
- ASSIGN("glGetTextureLevelParameterfv", getTextureLevelParameterfv);
- ASSIGN("glGetTextureLevelParameteriv", getTextureLevelParameteriv);
- ASSIGN("glGetTextureParameterIiv", getTextureParameterIiv);
- ASSIGN("glGetTextureParameterIuiv", getTextureParameterIuiv);
- ASSIGN("glGetTextureParameterfv", getTextureParameterfv);
- ASSIGN("glGetTextureParameteriv", getTextureParameteriv);
- ASSIGN("glGetTextureSubImage", getTextureSubImage);
- ASSIGN("glGetTransformFeedbacki64_v", getTransformFeedbacki64_v);
- ASSIGN("glGetTransformFeedbacki_v", getTransformFeedbacki_v);
- ASSIGN("glGetTransformFeedbackiv", getTransformFeedbackiv);
- ASSIGN("glGetVertexArrayIndexed64iv", getVertexArrayIndexed64iv);
- ASSIGN("glGetVertexArrayIndexediv", getVertexArrayIndexediv);
- ASSIGN("glGetVertexArrayiv", getVertexArrayiv);
- ASSIGN("glGetnCompressedTexImage", getnCompressedTexImage);
- ASSIGN("glGetnTexImage", getnTexImage);
- ASSIGN("glGetnUniformdv", getnUniformdv);
- ASSIGN("glGetnUniformfv", getnUniformfv);
- ASSIGN("glGetnUniformiv", getnUniformiv);
- ASSIGN("glGetnUniformuiv", getnUniformuiv);
- ASSIGN("glInvalidateNamedFramebufferData", invalidateNamedFramebufferData);
- ASSIGN("glInvalidateNamedFramebufferSubData", invalidateNamedFramebufferSubData);
- ASSIGN("glMapNamedBuffer", mapNamedBuffer);
- ASSIGN("glMapNamedBufferRange", mapNamedBufferRange);
- ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
- ASSIGN("glNamedBufferData", namedBufferData);
- ASSIGN("glNamedBufferStorage", namedBufferStorage);
- ASSIGN("glNamedBufferSubData", namedBufferSubData);
- ASSIGN("glNamedFramebufferDrawBuffer", namedFramebufferDrawBuffer);
- ASSIGN("glNamedFramebufferDrawBuffers", namedFramebufferDrawBuffers);
- ASSIGN("glNamedFramebufferParameteri", namedFramebufferParameteri);
- ASSIGN("glNamedFramebufferReadBuffer", namedFramebufferReadBuffer);
- ASSIGN("glNamedFramebufferRenderbuffer", namedFramebufferRenderbuffer);
- ASSIGN("glNamedFramebufferTexture", namedFramebufferTexture);
- ASSIGN("glNamedFramebufferTextureLayer", namedFramebufferTextureLayer);
- ASSIGN("glNamedRenderbufferStorage", namedRenderbufferStorage);
- ASSIGN("glNamedRenderbufferStorageMultisample", namedRenderbufferStorageMultisample);
- ASSIGN("glReadnPixels", readnPixels);
- ASSIGN("glTextureBarrier", textureBarrier);
- ASSIGN("glTextureBuffer", textureBuffer);
- ASSIGN("glTextureBufferRange", textureBufferRange);
- ASSIGN("glTextureParameterIiv", textureParameterIiv);
- ASSIGN("glTextureParameterIuiv", textureParameterIuiv);
- ASSIGN("glTextureParameterf", textureParameterf);
- ASSIGN("glTextureParameterfv", textureParameterfv);
- ASSIGN("glTextureParameteri", textureParameteri);
- ASSIGN("glTextureParameteriv", textureParameteriv);
- ASSIGN("glTextureStorage1D", textureStorage1D);
- ASSIGN("glTextureStorage2D", textureStorage2D);
- ASSIGN("glTextureStorage2DMultisample", textureStorage2DMultisample);
- ASSIGN("glTextureStorage3D", textureStorage3D);
- ASSIGN("glTextureStorage3DMultisample", textureStorage3DMultisample);
- ASSIGN("glTextureSubImage1D", textureSubImage1D);
- ASSIGN("glTextureSubImage2D", textureSubImage2D);
- ASSIGN("glTextureSubImage3D", textureSubImage3D);
- ASSIGN("glTransformFeedbackBufferBase", transformFeedbackBufferBase);
- ASSIGN("glTransformFeedbackBufferRange", transformFeedbackBufferRange);
- ASSIGN("glUnmapNamedBuffer", unmapNamedBuffer);
- ASSIGN("glVertexArrayAttribBinding", vertexArrayAttribBinding);
- ASSIGN("glVertexArrayAttribFormat", vertexArrayAttribFormat);
- ASSIGN("glVertexArrayAttribIFormat", vertexArrayAttribIFormat);
- ASSIGN("glVertexArrayAttribLFormat", vertexArrayAttribLFormat);
- ASSIGN("glVertexArrayBindingDivisor", vertexArrayBindingDivisor);
- ASSIGN("glVertexArrayElementBuffer", vertexArrayElementBuffer);
- ASSIGN("glVertexArrayVertexBuffer", vertexArrayVertexBuffer);
- ASSIGN("glVertexArrayVertexBuffers", vertexArrayVertexBuffers);
- }
-
- // clang-format on
-}
-
-void FunctionsGL::initializeProcsGLES()
-{
- // No profiles in GLES
- profile = 0;
-
- // clang-format off
-
- // GL_NV_internalformat_sample_query
- ASSIGN_WITH_EXT("GL_NV_internalformat_sample_query", "glGetInternalformatSampleivNV", getInternalformatSampleivNV);
-
- // GL_NV_path_rendering
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glMatrixLoadfEXT", matrixLoadEXT);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGenPathsNV", genPathsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glDeletePathsNV", delPathsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathCommandsNV", pathCommandsNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glIsPathNV", isPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathParameterfNV", setPathParameterfNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathParameteriNV", setPathParameteriNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGetPathParameterfvNV", getPathParameterfNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glGetPathParameterivNV", getPathParameteriNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glPathStencilFuncNV", pathStencilFuncNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilFillPathNV", stencilFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilStrokePathNV", stencilStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverFillPathNV", coverFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverStrokePathNV", coverStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverFillPathNV", stencilThenCoverFillPathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverStrokePathNV", stencilThenCoverStrokePathNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverFillPathInstancedNV", coverFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glCoverStrokePathInstancedNV", coverStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilFillPathInstancedNV", stencilFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilStrokePathInstancedNV", stencilStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverFillPathInstancedNV", stencilThenCoverFillPathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glStencilThenCoverStrokePathInstancedNV", stencilThenCoverStrokePathInstancedNV);
- ASSIGN_WITH_EXT("GL_NV_path_rendering", "glProgramPathFragmentInputGenNV", programPathFragmentInputGenNV);
-
- // GL_OES_texture_3D
- ASSIGN_WITH_EXT("GL_OES_texture_3D", "glTexImage3DOES", texImage3D);
- ASSIGN_WITH_EXT("GL_OES_texture_3D", "glTexSubImage3DOES", texSubImage3D);
- ASSIGN_WITH_EXT("GL_OES_texture_3D", "glCopyTexSubImage3DOES", copyTexSubImage3D);
-
- // GL_NV_framebuffer_mixed_samples
- ASSIGN_WITH_EXT("GL_NV_framebuffer_mixed_samples", "glCoverageModulationNV", coverageModulationNV);
-
- // GL_NV_fence
- ASSIGN_WITH_EXT("GL_NV_fence", "glDeleteFencesNV", deleteFencesNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glGenFencesNV", genFencesNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glIsFenceNV", isFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glTestFenceNV", testFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glGetFenceivNV", getFenceivNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glFinishFenceNV", finishFenceNV);
- ASSIGN_WITH_EXT("GL_NV_fence", "glSetFenceNV", setFenceNV);
-
- // GL_EXT_texture_storage
- ASSIGN_WITH_EXT("GL_EXT_texture_storage", "glTexStorage2DEXT", texStorage2D);
- ASSIGN_WITH_EXT("GL_EXT_texture_storage GL_OES_texture3D", "glTexStorage3DEXT", texStorage3D);
-
- // GL_OES_vertex_array_object
- ASSIGN_WITH_EXT("GL_OES_vertex_array_object", "glBindVertexArray", bindVertexArray);
- ASSIGN_WITH_EXT("GL_OES_vertex_array_object", "glDeleteVertexArrays", deleteVertexArrays);
- ASSIGN_WITH_EXT("GL_OES_vertex_array_object", "glGenVertexArrays", genVertexArrays);
- ASSIGN_WITH_EXT("GL_OES_vertex_array_object", "glIsVertexArray", isVertexArray);
-
- // GL_EXT_map_buffer_range
- ASSIGN_WITH_EXT("GL_EXT_map_buffer_range", "glMapBufferRangeEXT", mapBufferRange);
- ASSIGN_WITH_EXT("GL_EXT_map_buffer_range", "glFlushMappedBufferRangeEXT", flushMappedBufferRange);
- ASSIGN_WITH_EXT("GL_EXT_map_buffer_range", "glUnmapBufferOES", unmapBuffer);
-
- // GL_OES_mapbuffer
- ASSIGN_WITH_EXT("GL_OES_mapbuffer", "glMapBufferOES", mapBuffer);
- ASSIGN_WITH_EXT("GL_OES_mapbuffer", "glUnmapBufferOES", unmapBuffer);
-
- // GL_KHR_debug
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageControlKHR", debugMessageControl);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageInsertKHR", debugMessageInsert);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glDebugMessageCallbackKHR", debugMessageCallback);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetDebugMessageLogKHR", getDebugMessageLog);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetPointervKHR", getPointerv);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glPushDebugGroupKHR", pushDebugGroup);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glPopDebugGroupKHR", popDebugGroup);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glObjectLabelKHR", objectLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetObjectLabelKHR", getObjectLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glObjectPtrLabelKHR", objectPtrLabel);
- ASSIGN_WITH_EXT("GL_KHR_debug", "glGetObjectPtrLabelKHR", getObjectPtrLabel);
-
- // GL_EXT_draw_instanced
- ASSIGN_WITH_EXT("GL_EXT_draw_instanced", "glVertexAttribDivisorEXT", vertexAttribDivisor);
- ASSIGN_WITH_EXT("GL_EXT_draw_instanced", "glDrawArraysInstancedEXT", drawArraysInstanced);
- ASSIGN_WITH_EXT("GL_EXT_draw_instanced", "glDrawElementsInstancedEXT", drawElementsInstanced);
-
- // GL_EXT_occlusion_query_boolean
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glGenQueriesEXT", genQueries);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glDeleteQueriesEXT", deleteQueries);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glIsQueryEXT", isQuery);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glBeginQueryEXT", beginQuery);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glEndQueryEXT", endQuery);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glGetQueryivEXT", getQueryiv);
- ASSIGN_WITH_EXT("GL_EXT_occlusion_query_boolean", "glGetQueryObjectuivEXT", getQueryObjectuiv);
-
- // GL_EXT_disjoint_timer_query
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGenQueriesEXT", genQueries);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glDeleteQueriesEXT", deleteQueries);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glIsQueryEXT", isQuery);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glBeginQueryEXT", beginQuery);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glEndQueryEXT", endQuery);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glQueryCounterEXT", queryCounter);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGetQueryivEXT", getQueryiv);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGetQueryObjectivEXT", getQueryObjectiv);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGetQueryObjectuivEXT", getQueryObjectuiv);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGetQueryObjecti64vEXT", getQueryObjecti64v);
- ASSIGN_WITH_EXT("GL_EXT_disjoint_timer_query", "glGetQueryObjectui64vEXT", getQueryObjectui64v);
-
- // GL_OES_EGL_image
- ASSIGN_WITH_EXT("GL_OES_EGL_image", "glEGLImageTargetRenderbufferStorageOES", eglImageTargetRenderbufferStorageOES);
- ASSIGN_WITH_EXT("GL_OES_EGL_image", "glEGLImageTargetTexture2DOES", eglImageTargetTexture2DOES);
-
- // GL_OES_get_program_binary
- ASSIGN_WITH_EXT("GL_OES_get_program_binary", "glGetProgramBinaryOES", getProgramBinary);
- ASSIGN_WITH_EXT("GL_OES_get_program_binary", "glProgramBinaryOES", programBinary);
-
- // GL_EXT_robustness
- ASSIGN_WITH_EXT("GL_EXT_robustness", "glGetGraphicsResetStatusEXT", getGraphicsResetStatus);
-
- // GL_KHR_robustness
- ASSIGN_WITH_EXT("GL_KHR_robustness", "glGetGraphicsResetStatusKHR", getGraphicsResetStatus);
-
- // GL_EXT_discard_framebuffer
- ASSIGN_WITH_EXT("GL_EXT_discard_framebuffer", "glDiscardFramebufferEXT", discardFramebuffer);
-
- // 2.0
- if (isAtLeastGLES(gl::Version(2, 0)))
- {
- ASSIGN("glActiveTexture", activeTexture);
- ASSIGN("glAttachShader", attachShader);
- ASSIGN("glBindAttribLocation", bindAttribLocation);
- ASSIGN("glBindBuffer", bindBuffer);
- ASSIGN("glBindFramebuffer", bindFramebuffer);
- ASSIGN("glBindRenderbuffer", bindRenderbuffer);
- ASSIGN("glBindTexture", bindTexture);
- ASSIGN("glBlendColor", blendColor);
- ASSIGN("glBlendEquation", blendEquation);
- ASSIGN("glBlendEquationSeparate", blendEquationSeparate);
- ASSIGN("glBlendFunc", blendFunc);
- ASSIGN("glBlendFuncSeparate", blendFuncSeparate);
- ASSIGN("glBufferData", bufferData);
- ASSIGN("glBufferSubData", bufferSubData);
- ASSIGN("glCheckFramebufferStatus", checkFramebufferStatus);
- ASSIGN("glClear", clear);
- ASSIGN("glClearColor", clearColor);
- ASSIGN("glClearDepthf", clearDepthf);
- ASSIGN("glClearStencil", clearStencil);
- ASSIGN("glColorMask", colorMask);
- ASSIGN("glCompileShader", compileShader);
- ASSIGN("glCompressedTexImage2D", compressedTexImage2D);
- ASSIGN("glCompressedTexSubImage2D", compressedTexSubImage2D);
- ASSIGN("glCopyTexImage2D", copyTexImage2D);
- ASSIGN("glCopyTexSubImage2D", copyTexSubImage2D);
- ASSIGN("glCreateProgram", createProgram);
- ASSIGN("glCreateShader", createShader);
- ASSIGN("glCullFace", cullFace);
- ASSIGN("glDeleteBuffers", deleteBuffers);
- ASSIGN("glDeleteFramebuffers", deleteFramebuffers);
- ASSIGN("glDeleteProgram", deleteProgram);
- ASSIGN("glDeleteRenderbuffers", deleteRenderbuffers);
- ASSIGN("glDeleteShader", deleteShader);
- ASSIGN("glDeleteTextures", deleteTextures);
- ASSIGN("glDepthFunc", depthFunc);
- ASSIGN("glDepthMask", depthMask);
- ASSIGN("glDepthRangef", depthRangef);
- ASSIGN("glDetachShader", detachShader);
- ASSIGN("glDisable", disable);
- ASSIGN("glDisableVertexAttribArray", disableVertexAttribArray);
- ASSIGN("glDrawArrays", drawArrays);
- ASSIGN("glDrawElements", drawElements);
- ASSIGN("glEnable", enable);
- ASSIGN("glEnableVertexAttribArray", enableVertexAttribArray);
- ASSIGN("glFinish", finish);
- ASSIGN("glFlush", flush);
- ASSIGN("glFramebufferRenderbuffer", framebufferRenderbuffer);
- ASSIGN("glFramebufferTexture2D", framebufferTexture2D);
- ASSIGN("glFrontFace", frontFace);
- ASSIGN("glGenBuffers", genBuffers);
- ASSIGN("glGenerateMipmap", generateMipmap);
- ASSIGN("glGenFramebuffers", genFramebuffers);
- ASSIGN("glGenRenderbuffers", genRenderbuffers);
- ASSIGN("glGenTextures", genTextures);
- ASSIGN("glGetActiveAttrib", getActiveAttrib);
- ASSIGN("glGetActiveUniform", getActiveUniform);
- ASSIGN("glGetAttachedShaders", getAttachedShaders);
- ASSIGN("glGetAttribLocation", getAttribLocation);
- ASSIGN("glGetBooleanv", getBooleanv);
- ASSIGN("glGetBufferParameteriv", getBufferParameteriv);
- ASSIGN("glGetError", getError);
- ASSIGN("glGetFloatv", getFloatv);
- ASSIGN("glGetFramebufferAttachmentParameteriv", getFramebufferAttachmentParameteriv);
- ASSIGN("glGetIntegerv", getIntegerv);
- ASSIGN("glGetProgramiv", getProgramiv);
- ASSIGN("glGetProgramInfoLog", getProgramInfoLog);
- ASSIGN("glGetRenderbufferParameteriv", getRenderbufferParameteriv);
- ASSIGN("glGetShaderiv", getShaderiv);
- ASSIGN("glGetShaderInfoLog", getShaderInfoLog);
- ASSIGN("glGetShaderPrecisionFormat", getShaderPrecisionFormat);
- ASSIGN("glGetShaderSource", getShaderSource);
- ASSIGN("glGetString", getString);
- ASSIGN("glGetTexParameterfv", getTexParameterfv);
- ASSIGN("glGetTexParameteriv", getTexParameteriv);
- ASSIGN("glGetUniformfv", getUniformfv);
- ASSIGN("glGetUniformiv", getUniformiv);
- ASSIGN("glGetUniformLocation", getUniformLocation);
- ASSIGN("glGetVertexAttribfv", getVertexAttribfv);
- ASSIGN("glGetVertexAttribiv", getVertexAttribiv);
- ASSIGN("glGetVertexAttribPointerv", getVertexAttribPointerv);
- ASSIGN("glHint", hint);
- ASSIGN("glIsBuffer", isBuffer);
- ASSIGN("glIsEnabled", isEnabled);
- ASSIGN("glIsFramebuffer", isFramebuffer);
- ASSIGN("glIsProgram", isProgram);
- ASSIGN("glIsRenderbuffer", isRenderbuffer);
- ASSIGN("glIsShader", isShader);
- ASSIGN("glIsTexture", isTexture);
- ASSIGN("glLineWidth", lineWidth);
- ASSIGN("glLinkProgram", linkProgram);
- ASSIGN("glPixelStorei", pixelStorei);
- ASSIGN("glPolygonOffset", polygonOffset);
- ASSIGN("glReadPixels", readPixels);
- ASSIGN("glReleaseShaderCompiler", releaseShaderCompiler);
- ASSIGN("glRenderbufferStorage", renderbufferStorage);
- ASSIGN("glSampleCoverage", sampleCoverage);
- ASSIGN("glScissor", scissor);
- ASSIGN("glShaderBinary", shaderBinary);
- ASSIGN("glShaderSource", shaderSource);
- ASSIGN("glStencilFunc", stencilFunc);
- ASSIGN("glStencilFuncSeparate", stencilFuncSeparate);
- ASSIGN("glStencilMask", stencilMask);
- ASSIGN("glStencilMaskSeparate", stencilMaskSeparate);
- ASSIGN("glStencilOp", stencilOp);
- ASSIGN("glStencilOpSeparate", stencilOpSeparate);
- ASSIGN("glTexImage2D", texImage2D);
- ASSIGN("glTexParameterf", texParameterf);
- ASSIGN("glTexParameterfv", texParameterfv);
- ASSIGN("glTexParameteri", texParameteri);
- ASSIGN("glTexParameteriv", texParameteriv);
- ASSIGN("glTexSubImage2D", texSubImage2D);
- ASSIGN("glUniform1f", uniform1f);
- ASSIGN("glUniform1fv", uniform1fv);
- ASSIGN("glUniform1i", uniform1i);
- ASSIGN("glUniform1iv", uniform1iv);
- ASSIGN("glUniform2f", uniform2f);
- ASSIGN("glUniform2fv", uniform2fv);
- ASSIGN("glUniform2i", uniform2i);
- ASSIGN("glUniform2iv", uniform2iv);
- ASSIGN("glUniform3f", uniform3f);
- ASSIGN("glUniform3fv", uniform3fv);
- ASSIGN("glUniform3i", uniform3i);
- ASSIGN("glUniform3iv", uniform3iv);
- ASSIGN("glUniform4f", uniform4f);
- ASSIGN("glUniform4fv", uniform4fv);
- ASSIGN("glUniform4i", uniform4i);
- ASSIGN("glUniform4iv", uniform4iv);
- ASSIGN("glUniformMatrix2fv", uniformMatrix2fv);
- ASSIGN("glUniformMatrix3fv", uniformMatrix3fv);
- ASSIGN("glUniformMatrix4fv", uniformMatrix4fv);
- ASSIGN("glUseProgram", useProgram);
- ASSIGN("glValidateProgram", validateProgram);
- ASSIGN("glVertexAttrib1f", vertexAttrib1f);
- ASSIGN("glVertexAttrib1fv", vertexAttrib1fv);
- ASSIGN("glVertexAttrib2f", vertexAttrib2f);
- ASSIGN("glVertexAttrib2fv", vertexAttrib2fv);
- ASSIGN("glVertexAttrib3f", vertexAttrib3f);
- ASSIGN("glVertexAttrib3fv", vertexAttrib3fv);
- ASSIGN("glVertexAttrib4f", vertexAttrib4f);
- ASSIGN("glVertexAttrib4fv", vertexAttrib4fv);
- ASSIGN("glVertexAttribPointer", vertexAttribPointer);
- ASSIGN("glViewport", viewport);
- }
-
- // 3.0
- if (isAtLeastGLES(gl::Version(3, 0)))
- {
- ASSIGN("glReadBuffer", readBuffer);
- ASSIGN("glDrawRangeElements", drawRangeElements);
- ASSIGN("glTexImage3D", texImage3D);
- ASSIGN("glTexSubImage3D", texSubImage3D);
- ASSIGN("glCopyTexSubImage3D", copyTexSubImage3D);
- ASSIGN("glCompressedTexImage3D", compressedTexImage3D);
- ASSIGN("glCompressedTexSubImage3D", compressedTexSubImage3D);
- ASSIGN("glGenQueries", genQueries);
- ASSIGN("glDeleteQueries", deleteQueries);
- ASSIGN("glIsQuery", isQuery);
- ASSIGN("glBeginQuery", beginQuery);
- ASSIGN("glEndQuery", endQuery);
- ASSIGN("glGetQueryiv", getQueryiv);
- ASSIGN("glGetQueryObjectuiv", getQueryObjectuiv);
- ASSIGN("glUnmapBuffer", unmapBuffer);
- ASSIGN("glGetBufferPointerv", getBufferPointerv);
- ASSIGN("glDrawBuffers", drawBuffers);
- ASSIGN("glUniformMatrix2x3fv", uniformMatrix2x3fv);
- ASSIGN("glUniformMatrix3x2fv", uniformMatrix3x2fv);
- ASSIGN("glUniformMatrix2x4fv", uniformMatrix2x4fv);
- ASSIGN("glUniformMatrix4x2fv", uniformMatrix4x2fv);
- ASSIGN("glUniformMatrix3x4fv", uniformMatrix3x4fv);
- ASSIGN("glUniformMatrix4x3fv", uniformMatrix4x3fv);
- ASSIGN("glBlitFramebuffer", blitFramebuffer);
- ASSIGN("glRenderbufferStorageMultisample", renderbufferStorageMultisample);
- ASSIGN("glFramebufferTextureLayer", framebufferTextureLayer);
- ASSIGN("glMapBufferRange", mapBufferRange);
- ASSIGN("glFlushMappedBufferRange", flushMappedBufferRange);
- ASSIGN("glBindVertexArray", bindVertexArray);
- ASSIGN("glDeleteVertexArrays", deleteVertexArrays);
- ASSIGN("glGenVertexArrays", genVertexArrays);
- ASSIGN("glIsVertexArray", isVertexArray);
- ASSIGN("glGetIntegeri_v", getIntegeri_v);
- ASSIGN("glBeginTransformFeedback", beginTransformFeedback);
- ASSIGN("glEndTransformFeedback", endTransformFeedback);
- ASSIGN("glBindBufferRange", bindBufferRange);
- ASSIGN("glBindBufferBase", bindBufferBase);
- ASSIGN("glTransformFeedbackVaryings", transformFeedbackVaryings);
- ASSIGN("glGetTransformFeedbackVarying", getTransformFeedbackVarying);
- ASSIGN("glVertexAttribIPointer", vertexAttribIPointer);
- ASSIGN("glGetVertexAttribIiv", getVertexAttribIiv);
- ASSIGN("glGetVertexAttribIuiv", getVertexAttribIuiv);
- ASSIGN("glVertexAttribI4i", vertexAttribI4i);
- ASSIGN("glVertexAttribI4ui", vertexAttribI4ui);
- ASSIGN("glVertexAttribI4iv", vertexAttribI4iv);
- ASSIGN("glVertexAttribI4uiv", vertexAttribI4uiv);
- ASSIGN("glGetUniformuiv", getUniformuiv);
- ASSIGN("glGetFragDataLocation", getFragDataLocation);
- ASSIGN("glUniform1ui", uniform1ui);
- ASSIGN("glUniform2ui", uniform2ui);
- ASSIGN("glUniform3ui", uniform3ui);
- ASSIGN("glUniform4ui", uniform4ui);
- ASSIGN("glUniform1uiv", uniform1uiv);
- ASSIGN("glUniform2uiv", uniform2uiv);
- ASSIGN("glUniform3uiv", uniform3uiv);
- ASSIGN("glUniform4uiv", uniform4uiv);
- ASSIGN("glClearBufferiv", clearBufferiv);
- ASSIGN("glClearBufferuiv", clearBufferuiv);
- ASSIGN("glClearBufferfv", clearBufferfv);
- ASSIGN("glClearBufferfi", clearBufferfi);
- ASSIGN("glGetStringi", getStringi);
- ASSIGN("glCopyBufferSubData", copyBufferSubData);
- ASSIGN("glGetUniformIndices", getUniformIndices);
- ASSIGN("glGetActiveUniformsiv", getActiveUniformsiv);
- ASSIGN("glGetUniformBlockIndex", getUniformBlockIndex);
- ASSIGN("glGetActiveUniformBlockiv", getActiveUniformBlockiv);
- ASSIGN("glGetActiveUniformBlockName", getActiveUniformBlockName);
- ASSIGN("glUniformBlockBinding", uniformBlockBinding);
- ASSIGN("glDrawArraysInstanced", drawArraysInstanced);
- ASSIGN("glDrawElementsInstanced", drawElementsInstanced);
- ASSIGN("glFenceSync", fenceSync);
- ASSIGN("glIsSync", isSync);
- ASSIGN("glDeleteSync", deleteSync);
- ASSIGN("glClientWaitSync", clientWaitSync);
- ASSIGN("glWaitSync", waitSync);
- ASSIGN("glGetInteger64v", getInteger64v);
- ASSIGN("glGetSynciv", getSynciv);
- ASSIGN("glGetInteger64i_v", getInteger64i_v);
- ASSIGN("glGetBufferParameteri64v", getBufferParameteri64v);
- ASSIGN("glGenSamplers", genSamplers);
- ASSIGN("glDeleteSamplers", deleteSamplers);
- ASSIGN("glIsSampler", isSampler);
- ASSIGN("glBindSampler", bindSampler);
- ASSIGN("glSamplerParameteri", samplerParameteri);
- ASSIGN("glSamplerParameteriv", samplerParameteriv);
- ASSIGN("glSamplerParameterf", samplerParameterf);
- ASSIGN("glSamplerParameterfv", samplerParameterfv);
- ASSIGN("glGetSamplerParameteriv", getSamplerParameteriv);
- ASSIGN("glGetSamplerParameterfv", getSamplerParameterfv);
- ASSIGN("glVertexAttribDivisor", vertexAttribDivisor);
- ASSIGN("glBindTransformFeedback", bindTransformFeedback);
- ASSIGN("glDeleteTransformFeedbacks", deleteTransformFeedbacks);
- ASSIGN("glGenTransformFeedbacks", genTransformFeedbacks);
- ASSIGN("glIsTransformFeedback", isTransformFeedback);
- ASSIGN("glPauseTransformFeedback", pauseTransformFeedback);
- ASSIGN("glResumeTransformFeedback", resumeTransformFeedback);
- ASSIGN("glGetProgramBinary", getProgramBinary);
- ASSIGN("glProgramBinary", programBinary);
- ASSIGN("glProgramParameteri", programParameteri);
- ASSIGN("glInvalidateFramebuffer", invalidateFramebuffer);
- ASSIGN("glInvalidateSubFramebuffer", invalidateSubFramebuffer);
- ASSIGN("glTexStorage2D", texStorage2D);
- ASSIGN("glTexStorage3D", texStorage3D);
- ASSIGN("glGetInternalformativ", getInternalformativ);
- }
-
- // 3.1
- if (isAtLeastGLES(gl::Version(3, 1)))
- {
- ASSIGN("glDispatchCompute", dispatchCompute);
- ASSIGN("glDispatchComputeIndirect", dispatchComputeIndirect);
- ASSIGN("glDrawArraysIndirect", drawArraysIndirect);
- ASSIGN("glDrawElementsIndirect", drawElementsIndirect);
- ASSIGN("glFramebufferParameteri", framebufferParameteri);
- ASSIGN("glGetFramebufferParameteriv", getFramebufferParameteriv);
- ASSIGN("glGetProgramInterfaceiv", getProgramInterfaceiv);
- ASSIGN("glGetProgramResourceIndex", getProgramResourceIndex);
- ASSIGN("glGetProgramResourceName", getProgramResourceName);
- ASSIGN("glGetProgramResourceiv", getProgramResourceiv);
- ASSIGN("glGetProgramResourceLocation", getProgramResourceLocation);
- ASSIGN("glUseProgramStages", useProgramStages);
- ASSIGN("glActiveShaderProgram", activeShaderProgram);
- ASSIGN("glCreateShaderProgramv", createShaderProgramv);
- ASSIGN("glBindProgramPipeline", bindProgramPipeline);
- ASSIGN("glDeleteProgramPipelines", deleteProgramPipelines);
- ASSIGN("glGenProgramPipelines", genProgramPipelines);
- ASSIGN("glIsProgramPipeline", isProgramPipeline);
- ASSIGN("glGetProgramPipelineiv", getProgramPipelineiv);
- ASSIGN("glProgramUniform1i", programUniform1i);
- ASSIGN("glProgramUniform2i", programUniform2i);
- ASSIGN("glProgramUniform3i", programUniform3i);
- ASSIGN("glProgramUniform4i", programUniform4i);
- ASSIGN("glProgramUniform1ui", programUniform1ui);
- ASSIGN("glProgramUniform2ui", programUniform2ui);
- ASSIGN("glProgramUniform3ui", programUniform3ui);
- ASSIGN("glProgramUniform4ui", programUniform4ui);
- ASSIGN("glProgramUniform1f", programUniform1f);
- ASSIGN("glProgramUniform2f", programUniform2f);
- ASSIGN("glProgramUniform3f", programUniform3f);
- ASSIGN("glProgramUniform4f", programUniform4f);
- ASSIGN("glProgramUniform1iv", programUniform1iv);
- ASSIGN("glProgramUniform2iv", programUniform2iv);
- ASSIGN("glProgramUniform3iv", programUniform3iv);
- ASSIGN("glProgramUniform4iv", programUniform4iv);
- ASSIGN("glProgramUniform1uiv", programUniform1uiv);
- ASSIGN("glProgramUniform2uiv", programUniform2uiv);
- ASSIGN("glProgramUniform3uiv", programUniform3uiv);
- ASSIGN("glProgramUniform4uiv", programUniform4uiv);
- ASSIGN("glProgramUniform1fv", programUniform1fv);
- ASSIGN("glProgramUniform2fv", programUniform2fv);
- ASSIGN("glProgramUniform3fv", programUniform3fv);
- ASSIGN("glProgramUniform4fv", programUniform4fv);
- ASSIGN("glProgramUniformMatrix2fv", programUniformMatrix2fv);
- ASSIGN("glProgramUniformMatrix3fv", programUniformMatrix3fv);
- ASSIGN("glProgramUniformMatrix4fv", programUniformMatrix4fv);
- ASSIGN("glProgramUniformMatrix2x3fv", programUniformMatrix2x3fv);
- ASSIGN("glProgramUniformMatrix3x2fv", programUniformMatrix3x2fv);
- ASSIGN("glProgramUniformMatrix2x4fv", programUniformMatrix2x4fv);
- ASSIGN("glProgramUniformMatrix4x2fv", programUniformMatrix4x2fv);
- ASSIGN("glProgramUniformMatrix3x4fv", programUniformMatrix3x4fv);
- ASSIGN("glProgramUniformMatrix4x3fv", programUniformMatrix4x3fv);
- ASSIGN("glValidateProgramPipeline", validateProgramPipeline);
- ASSIGN("glGetProgramPipelineInfoLog", getProgramPipelineInfoLog);
- ASSIGN("glBindImageTexture", bindImageTexture);
- ASSIGN("glGetBooleani_v", getBooleani_v);
- ASSIGN("glMemoryBarrier", memoryBarrier);
- ASSIGN("glMemoryBarrierByRegion", memoryBarrierByRegion);
- ASSIGN("glTexStorage2DMultisample", texStorage2DMultisample);
- ASSIGN("glGetMultisamplefv", getMultisamplefv);
- ASSIGN("glSampleMaski", sampleMaski);
- ASSIGN("glGetTexLevelParameteriv", getTexLevelParameteriv);
- ASSIGN("glGetTexLevelParameterfv", getTexLevelParameterfv);
- ASSIGN("glBindVertexBuffer", bindVertexBuffer);
- ASSIGN("glVertexAttribFormat", vertexAttribFormat);
- ASSIGN("glVertexAttribIFormat", vertexAttribIFormat);
- ASSIGN("glVertexAttribBinding", vertexAttribBinding);
- ASSIGN("glVertexBindingDivisor", vertexBindingDivisor);
- }
-
- // 3.2
- if (isAtLeastGLES(gl::Version(3, 2)))
- {
- ASSIGN("glBlendBarrier", blendBarrier);
- ASSIGN("glCopyImageSubData", copyImageSubData);
- ASSIGN("glDebugMessageControl", debugMessageControl);
- ASSIGN("glDebugMessageInsert", debugMessageInsert);
- ASSIGN("glDebugMessageCallback", debugMessageCallback);
- ASSIGN("glGetDebugMessageLog", getDebugMessageLog);
- ASSIGN("glPushDebugGroup", pushDebugGroup);
- ASSIGN("glPopDebugGroup", popDebugGroup);
- ASSIGN("glObjectLabel", objectLabel);
- ASSIGN("glGetObjectLabel", getObjectLabel);
- ASSIGN("glObjectPtrLabel", objectPtrLabel);
- ASSIGN("glGetObjectPtrLabel", getObjectPtrLabel);
- ASSIGN("glGetPointerv", getPointerv);
- ASSIGN("glEnablei", enablei);
- ASSIGN("glDisablei", disablei);
- ASSIGN("glBlendEquationi", blendEquationi);
- ASSIGN("glBlendEquationSeparatei", blendEquationSeparatei);
- ASSIGN("glBlendFunci", blendFunci);
- ASSIGN("glBlendFuncSeparatei", blendFuncSeparatei);
- ASSIGN("glColorMaski", colorMaski);
- ASSIGN("glIsEnabledi", isEnabledi);
- ASSIGN("glDrawElementsBaseVertex", drawElementsBaseVertex);
- ASSIGN("glDrawRangeElementsBaseVertex", drawRangeElementsBaseVertex);
- ASSIGN("glDrawElementsInstancedBaseVertex", drawElementsInstancedBaseVertex);
- ASSIGN("glFramebufferTexture", framebufferTexture);
- ASSIGN("glPrimitiveBoundingBox", primitiveBoundingBox);
- ASSIGN("glGetGraphicsResetStatus", getGraphicsResetStatus);
- ASSIGN("glReadnPixels", readnPixels);
- ASSIGN("glGetnUniformfv", getnUniformfv);
- ASSIGN("glGetnUniformiv", getnUniformiv);
- ASSIGN("glGetnUniformuiv", getnUniformuiv);
- ASSIGN("glMinSampleShading", minSampleShading);
- ASSIGN("glPatchParameteri", patchParameteri);
- ASSIGN("glTexParameterIiv", texParameterIiv);
- ASSIGN("glTexParameterIuiv", texParameterIuiv);
- ASSIGN("glGetTexParameterIiv", getTexParameterIiv);
- ASSIGN("glGetTexParameterIuiv", getTexParameterIuiv);
- ASSIGN("glSamplerParameterIiv", samplerParameterIiv);
- ASSIGN("glSamplerParameterIuiv", samplerParameterIuiv);
- ASSIGN("glGetSamplerParameterIiv", getSamplerParameterIiv);
- ASSIGN("glGetSamplerParameterIuiv", getSamplerParameterIuiv);
- ASSIGN("glTexBuffer", texBuffer);
- ASSIGN("glTexBufferRange", texBufferRange);
- ASSIGN("glTexStorage3DMultisample", texStorage3DMultisample);
- }
-
- // clang-format on
+ initProcsSharedExtensions(extensionSet);
}
bool FunctionsGL::isAtLeastGL(const gl::Version &glVersion) const
diff --git a/src/libANGLE/renderer/gl/FunctionsGL.h b/src/libANGLE/renderer/gl/FunctionsGL.h
index 03513c2..2307df0 100644
--- a/src/libANGLE/renderer/gl/FunctionsGL.h
+++ b/src/libANGLE/renderer/gl/FunctionsGL.h
@@ -11,6 +11,7 @@
#include "common/debug.h"
#include "libANGLE/Version.h"
+#include "libANGLE/renderer/gl/DispatchTableGL_autogen.h"
#include "libANGLE/renderer/gl/functionsgl_enums.h"
#include "libANGLE/renderer/gl/functionsgl_typedefs.h"
@@ -23,7 +24,7 @@
STANDARD_GL_ES,
};
-class FunctionsGL
+class FunctionsGL : public DispatchTableGL
{
public:
FunctionsGL();
@@ -45,753 +46,8 @@
bool hasExtension(const std::string &ext) const;
bool hasGLExtension(const std::string &ext) const;
bool hasGLESExtension(const std::string &ext) const;
-
- // Entry Points
- // 1.0
- PFNGLBLENDFUNCPROC blendFunc;
- PFNGLCLEARPROC clear;
- PFNGLCLEARCOLORPROC clearColor;
- PFNGLCLEARDEPTHPROC clearDepth;
- PFNGLCLEARSTENCILPROC clearStencil;
- PFNGLCOLORMASKPROC colorMask;
- PFNGLCULLFACEPROC cullFace;
- PFNGLDEPTHFUNCPROC depthFunc;
- PFNGLDEPTHMASKPROC depthMask;
- PFNGLDEPTHRANGEPROC depthRange;
- PFNGLDISABLEPROC disable;
- PFNGLDRAWBUFFERPROC drawBuffer;
- PFNGLENABLEPROC enable;
- PFNGLFINISHPROC finish;
- PFNGLFLUSHPROC flush;
- PFNGLFRONTFACEPROC frontFace;
- PFNGLGETBOOLEANVPROC getBooleanv;
- PFNGLGETDOUBLEVPROC getDoublev;
- PFNGLGETERRORPROC getError;
- PFNGLGETFLOATVPROC getFloatv;
- PFNGLGETINTEGERVPROC getIntegerv;
- PFNGLGETSTRINGPROC getString;
- PFNGLGETTEXIMAGEPROC getTexImage;
- PFNGLGETTEXLEVELPARAMETERFVPROC getTexLevelParameterfv;
- PFNGLGETTEXLEVELPARAMETERIVPROC getTexLevelParameteriv;
- PFNGLGETTEXPARAMETERFVPROC getTexParameterfv;
- PFNGLGETTEXPARAMETERIVPROC getTexParameteriv;
- PFNGLHINTPROC hint;
- PFNGLISENABLEDPROC isEnabled;
- PFNGLLINEWIDTHPROC lineWidth;
- PFNGLLOGICOPPROC logicOp;
- PFNGLPIXELSTOREFPROC pixelStoref;
- PFNGLPIXELSTOREIPROC pixelStorei;
- PFNGLPOINTSIZEPROC pointSize;
- PFNGLPOLYGONMODEPROC polygonMode;
- PFNGLREADBUFFERPROC readBuffer;
- PFNGLREADPIXELSPROC readPixels;
- PFNGLSCISSORPROC scissor;
- PFNGLSTENCILFUNCPROC stencilFunc;
- PFNGLSTENCILMASKPROC stencilMask;
- PFNGLSTENCILOPPROC stencilOp;
- PFNGLTEXIMAGE1DPROC texImage1D;
- PFNGLTEXIMAGE2DPROC texImage2D;
- PFNGLTEXPARAMETERFPROC texParameterf;
- PFNGLTEXPARAMETERFVPROC texParameterfv;
- PFNGLTEXPARAMETERIPROC texParameteri;
- PFNGLTEXPARAMETERIVPROC texParameteriv;
- PFNGLVIEWPORTPROC viewport;
-
- // 1.1
- PFNGLBINDTEXTUREPROC bindTexture;
- PFNGLCOPYTEXIMAGE1DPROC copyTexImage1D;
- PFNGLCOPYTEXIMAGE2DPROC copyTexImage2D;
- PFNGLCOPYTEXSUBIMAGE1DPROC copyTexSubImage1D;
- PFNGLCOPYTEXSUBIMAGE2DPROC copyTexSubImage2D;
- PFNGLDELETETEXTURESPROC deleteTextures;
- PFNGLDRAWARRAYSPROC drawArrays;
- PFNGLDRAWELEMENTSPROC drawElements;
- PFNGLGENTEXTURESPROC genTextures;
- PFNGLISTEXTUREPROC isTexture;
- PFNGLPOLYGONOFFSETPROC polygonOffset;
- PFNGLTEXSUBIMAGE1DPROC texSubImage1D;
- PFNGLTEXSUBIMAGE2DPROC texSubImage2D;
-
- // 1.2
- PFNGLBLENDCOLORPROC blendColor;
- PFNGLBLENDEQUATIONPROC blendEquation;
- PFNGLCOPYTEXSUBIMAGE3DPROC copyTexSubImage3D;
- PFNGLDRAWRANGEELEMENTSPROC drawRangeElements;
- PFNGLTEXIMAGE3DPROC texImage3D;
- PFNGLTEXSUBIMAGE3DPROC texSubImage3D;
-
- // 1.2 Extensions
- PFNGLDELETEFENCESNVPROC deleteFencesNV;
- PFNGLGENFENCESNVPROC genFencesNV;
- PFNGLISFENCENVPROC isFenceNV;
- PFNGLTESTFENCENVPROC testFenceNV;
- PFNGLGETFENCEIVNVPROC getFenceivNV;
- PFNGLFINISHFENCENVPROC finishFenceNV;
- PFNGLSETFENCENVPROC setFenceNV;
-
- // 1.3
- PFNGLACTIVETEXTUREPROC activeTexture;
- PFNGLCOMPRESSEDTEXIMAGE1DPROC compressedTexImage1D;
- PFNGLCOMPRESSEDTEXIMAGE2DPROC compressedTexImage2D;
- PFNGLCOMPRESSEDTEXIMAGE3DPROC compressedTexImage3D;
- PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC compressedTexSubImage1D;
- PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC compressedTexSubImage2D;
- PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC compressedTexSubImage3D;
- PFNGLGETCOMPRESSEDTEXIMAGEPROC getCompressedTexImage;
- PFNGLSAMPLECOVERAGEPROC sampleCoverage;
-
- // 1.4
- PFNGLBLENDFUNCSEPARATEPROC blendFuncSeparate;
- PFNGLMULTIDRAWARRAYSPROC multiDrawArrays;
- PFNGLMULTIDRAWELEMENTSPROC multiDrawElements;
- PFNGLPOINTPARAMETERFPROC pointParameterf;
- PFNGLPOINTPARAMETERFVPROC pointParameterfv;
- PFNGLPOINTPARAMETERIPROC pointParameteri;
- PFNGLPOINTPARAMETERIVPROC pointParameteriv;
-
- // 1.5
- PFNGLBEGINQUERYPROC beginQuery;
- PFNGLBINDBUFFERPROC bindBuffer;
- PFNGLBUFFERDATAPROC bufferData;
- PFNGLBUFFERSUBDATAPROC bufferSubData;
- PFNGLDELETEBUFFERSPROC deleteBuffers;
- PFNGLDELETEQUERIESPROC deleteQueries;
- PFNGLENDQUERYPROC endQuery;
- PFNGLGENBUFFERSPROC genBuffers;
- PFNGLGENQUERIESPROC genQueries;
- PFNGLGETBUFFERPARAMETERIVPROC getBufferParameteriv;
- PFNGLGETBUFFERPOINTERVPROC getBufferPointerv;
- PFNGLGETBUFFERSUBDATAPROC getBufferSubData;
- PFNGLGETQUERYOBJECTIVPROC getQueryObjectiv;
- PFNGLGETQUERYOBJECTUIVPROC getQueryObjectuiv;
- PFNGLGETQUERYIVPROC getQueryiv;
- PFNGLISBUFFERPROC isBuffer;
- PFNGLISQUERYPROC isQuery;
- PFNGLMAPBUFFERPROC mapBuffer;
- PFNGLUNMAPBUFFERPROC unmapBuffer;
-
- // 2.0
- PFNGLATTACHSHADERPROC attachShader;
- PFNGLBINDATTRIBLOCATIONPROC bindAttribLocation;
- PFNGLBLENDEQUATIONSEPARATEPROC blendEquationSeparate;
- PFNGLCOMPILESHADERPROC compileShader;
- PFNGLCREATEPROGRAMPROC createProgram;
- PFNGLCREATESHADERPROC createShader;
- PFNGLDELETEPROGRAMPROC deleteProgram;
- PFNGLDELETESHADERPROC deleteShader;
- PFNGLDETACHSHADERPROC detachShader;
- PFNGLDISABLEVERTEXATTRIBARRAYPROC disableVertexAttribArray;
- PFNGLDRAWBUFFERSPROC drawBuffers;
- PFNGLENABLEVERTEXATTRIBARRAYPROC enableVertexAttribArray;
- PFNGLGETACTIVEATTRIBPROC getActiveAttrib;
- PFNGLGETACTIVEUNIFORMPROC getActiveUniform;
- PFNGLGETATTACHEDSHADERSPROC getAttachedShaders;
- PFNGLGETATTRIBLOCATIONPROC getAttribLocation;
- PFNGLGETPROGRAMINFOLOGPROC getProgramInfoLog;
- PFNGLGETPROGRAMIVPROC getProgramiv;
- PFNGLGETSHADERINFOLOGPROC getShaderInfoLog;
- PFNGLGETSHADERSOURCEPROC getShaderSource;
- PFNGLGETSHADERIVPROC getShaderiv;
- PFNGLGETUNIFORMLOCATIONPROC getUniformLocation;
- PFNGLGETUNIFORMFVPROC getUniformfv;
- PFNGLGETUNIFORMIVPROC getUniformiv;
- PFNGLGETVERTEXATTRIBPOINTERVPROC getVertexAttribPointerv;
- PFNGLGETVERTEXATTRIBDVPROC getVertexAttribdv;
- PFNGLGETVERTEXATTRIBFVPROC getVertexAttribfv;
- PFNGLGETVERTEXATTRIBIVPROC getVertexAttribiv;
- PFNGLISPROGRAMPROC isProgram;
- PFNGLISSHADERPROC isShader;
- PFNGLLINKPROGRAMPROC linkProgram;
- PFNGLSHADERSOURCEPROC shaderSource;
- PFNGLSTENCILFUNCSEPARATEPROC stencilFuncSeparate;
- PFNGLSTENCILMASKSEPARATEPROC stencilMaskSeparate;
- PFNGLSTENCILOPSEPARATEPROC stencilOpSeparate;
- PFNGLUNIFORM1FPROC uniform1f;
- PFNGLUNIFORM1FVPROC uniform1fv;
- PFNGLUNIFORM1IPROC uniform1i;
- PFNGLUNIFORM1IVPROC uniform1iv;
- PFNGLUNIFORM2FPROC uniform2f;
- PFNGLUNIFORM2FVPROC uniform2fv;
- PFNGLUNIFORM2IPROC uniform2i;
- PFNGLUNIFORM2IVPROC uniform2iv;
- PFNGLUNIFORM3FPROC uniform3f;
- PFNGLUNIFORM3FVPROC uniform3fv;
- PFNGLUNIFORM3IPROC uniform3i;
- PFNGLUNIFORM3IVPROC uniform3iv;
- PFNGLUNIFORM4FPROC uniform4f;
- PFNGLUNIFORM4FVPROC uniform4fv;
- PFNGLUNIFORM4IPROC uniform4i;
- PFNGLUNIFORM4IVPROC uniform4iv;
- PFNGLUNIFORMMATRIX2FVPROC uniformMatrix2fv;
- PFNGLUNIFORMMATRIX3FVPROC uniformMatrix3fv;
- PFNGLUNIFORMMATRIX4FVPROC uniformMatrix4fv;
- PFNGLUSEPROGRAMPROC useProgram;
- PFNGLVALIDATEPROGRAMPROC validateProgram;
- PFNGLVERTEXATTRIB1DPROC vertexAttrib1d;
- PFNGLVERTEXATTRIB1DVPROC vertexAttrib1dv;
- PFNGLVERTEXATTRIB1FPROC vertexAttrib1f;
- PFNGLVERTEXATTRIB1FVPROC vertexAttrib1fv;
- PFNGLVERTEXATTRIB1SPROC vertexAttrib1s;
- PFNGLVERTEXATTRIB1SVPROC vertexAttrib1sv;
- PFNGLVERTEXATTRIB2DPROC vertexAttrib2d;
- PFNGLVERTEXATTRIB2DVPROC vertexAttrib2dv;
- PFNGLVERTEXATTRIB2FPROC vertexAttrib2f;
- PFNGLVERTEXATTRIB2FVPROC vertexAttrib2fv;
- PFNGLVERTEXATTRIB2SPROC vertexAttrib2s;
- PFNGLVERTEXATTRIB2SVPROC vertexAttrib2sv;
- PFNGLVERTEXATTRIB3DPROC vertexAttrib3d;
- PFNGLVERTEXATTRIB3DVPROC vertexAttrib3dv;
- PFNGLVERTEXATTRIB3FPROC vertexAttrib3f;
- PFNGLVERTEXATTRIB3FVPROC vertexAttrib3fv;
- PFNGLVERTEXATTRIB3SPROC vertexAttrib3s;
- PFNGLVERTEXATTRIB3SVPROC vertexAttrib3sv;
- PFNGLVERTEXATTRIB4NBVPROC vertexAttrib4Nbv;
- PFNGLVERTEXATTRIB4NIVPROC vertexAttrib4Niv;
- PFNGLVERTEXATTRIB4NSVPROC vertexAttrib4Nsv;
- PFNGLVERTEXATTRIB4NUBPROC vertexAttrib4Nub;
- PFNGLVERTEXATTRIB4NUBVPROC vertexAttrib4Nubv;
- PFNGLVERTEXATTRIB4NUIVPROC vertexAttrib4Nuiv;
- PFNGLVERTEXATTRIB4NUSVPROC vertexAttrib4Nusv;
- PFNGLVERTEXATTRIB4BVPROC vertexAttrib4bv;
- PFNGLVERTEXATTRIB4DPROC vertexAttrib4d;
- PFNGLVERTEXATTRIB4DVPROC vertexAttrib4dv;
- PFNGLVERTEXATTRIB4FPROC vertexAttrib4f;
- PFNGLVERTEXATTRIB4FVPROC vertexAttrib4fv;
- PFNGLVERTEXATTRIB4IVPROC vertexAttrib4iv;
- PFNGLVERTEXATTRIB4SPROC vertexAttrib4s;
- PFNGLVERTEXATTRIB4SVPROC vertexAttrib4sv;
- PFNGLVERTEXATTRIB4UBVPROC vertexAttrib4ubv;
- PFNGLVERTEXATTRIB4UIVPROC vertexAttrib4uiv;
- PFNGLVERTEXATTRIB4USVPROC vertexAttrib4usv;
- PFNGLVERTEXATTRIBPOINTERPROC vertexAttribPointer;
-
- // 2.1
- PFNGLUNIFORMMATRIX2X3FVPROC uniformMatrix2x3fv;
- PFNGLUNIFORMMATRIX2X4FVPROC uniformMatrix2x4fv;
- PFNGLUNIFORMMATRIX3X2FVPROC uniformMatrix3x2fv;
- PFNGLUNIFORMMATRIX3X4FVPROC uniformMatrix3x4fv;
- PFNGLUNIFORMMATRIX4X2FVPROC uniformMatrix4x2fv;
- PFNGLUNIFORMMATRIX4X3FVPROC uniformMatrix4x3fv;
-
- // 3.0
- PFNGLBEGINCONDITIONALRENDERPROC beginConditionalRender;
- PFNGLBEGINTRANSFORMFEEDBACKPROC beginTransformFeedback;
- PFNGLBINDBUFFERBASEPROC bindBufferBase;
- PFNGLBINDBUFFERRANGEPROC bindBufferRange;
- PFNGLBINDFRAGDATALOCATIONPROC bindFragDataLocation;
- PFNGLBINDFRAMEBUFFERPROC bindFramebuffer;
- PFNGLBINDRENDERBUFFERPROC bindRenderbuffer;
- PFNGLBINDVERTEXARRAYPROC bindVertexArray;
- PFNGLBLITFRAMEBUFFERPROC blitFramebuffer;
- PFNGLCHECKFRAMEBUFFERSTATUSPROC checkFramebufferStatus;
- PFNGLCLAMPCOLORPROC clampColor;
- PFNGLCLEARBUFFERFIPROC clearBufferfi;
- PFNGLCLEARBUFFERFVPROC clearBufferfv;
- PFNGLCLEARBUFFERIVPROC clearBufferiv;
- PFNGLCLEARBUFFERUIVPROC clearBufferuiv;
- PFNGLCOLORMASKIPROC colorMaski;
- PFNGLDELETEFRAMEBUFFERSPROC deleteFramebuffers;
- PFNGLDELETERENDERBUFFERSPROC deleteRenderbuffers;
- PFNGLDELETEVERTEXARRAYSPROC deleteVertexArrays;
- PFNGLDISABLEIPROC disablei;
- PFNGLENABLEIPROC enablei;
- PFNGLENDCONDITIONALRENDERPROC endConditionalRender;
- PFNGLENDTRANSFORMFEEDBACKPROC endTransformFeedback;
- PFNGLFLUSHMAPPEDBUFFERRANGEPROC flushMappedBufferRange;
- PFNGLFRAMEBUFFERRENDERBUFFERPROC framebufferRenderbuffer;
- PFNGLFRAMEBUFFERTEXTURE1DPROC framebufferTexture1D;
- PFNGLFRAMEBUFFERTEXTURE2DPROC framebufferTexture2D;
- PFNGLFRAMEBUFFERTEXTURE3DPROC framebufferTexture3D;
- PFNGLFRAMEBUFFERTEXTURELAYERPROC framebufferTextureLayer;
- PFNGLGENFRAMEBUFFERSPROC genFramebuffers;
- PFNGLGENRENDERBUFFERSPROC genRenderbuffers;
- PFNGLGENVERTEXARRAYSPROC genVertexArrays;
- PFNGLGENERATEMIPMAPPROC generateMipmap;
- PFNGLGETBOOLEANI_VPROC getBooleani_v;
- PFNGLGETFRAGDATALOCATIONPROC getFragDataLocation;
- PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC getFramebufferAttachmentParameteriv;
- PFNGLGETINTEGERI_VPROC getIntegeri_v;
- PFNGLGETRENDERBUFFERPARAMETERIVPROC getRenderbufferParameteriv;
- PFNGLGETSTRINGIPROC getStringi;
- PFNGLGETTEXPARAMETERIIVPROC getTexParameterIiv;
- PFNGLGETTEXPARAMETERIUIVPROC getTexParameterIuiv;
- PFNGLGETTRANSFORMFEEDBACKVARYINGPROC getTransformFeedbackVarying;
- PFNGLGETUNIFORMUIVPROC getUniformuiv;
- PFNGLGETVERTEXATTRIBIIVPROC getVertexAttribIiv;
- PFNGLGETVERTEXATTRIBIUIVPROC getVertexAttribIuiv;
- PFNGLISENABLEDIPROC isEnabledi;
- PFNGLISFRAMEBUFFERPROC isFramebuffer;
- PFNGLISRENDERBUFFERPROC isRenderbuffer;
- PFNGLISVERTEXARRAYPROC isVertexArray;
- PFNGLMAPBUFFERRANGEPROC mapBufferRange;
- PFNGLRENDERBUFFERSTORAGEPROC renderbufferStorage;
- PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC renderbufferStorageMultisample;
- PFNGLTEXPARAMETERIIVPROC texParameterIiv;
- PFNGLTEXPARAMETERIUIVPROC texParameterIuiv;
- PFNGLTRANSFORMFEEDBACKVARYINGSPROC transformFeedbackVaryings;
- PFNGLUNIFORM1UIPROC uniform1ui;
- PFNGLUNIFORM1UIVPROC uniform1uiv;
- PFNGLUNIFORM2UIPROC uniform2ui;
- PFNGLUNIFORM2UIVPROC uniform2uiv;
- PFNGLUNIFORM3UIPROC uniform3ui;
- PFNGLUNIFORM3UIVPROC uniform3uiv;
- PFNGLUNIFORM4UIPROC uniform4ui;
- PFNGLUNIFORM4UIVPROC uniform4uiv;
- PFNGLVERTEXATTRIBI1IPROC vertexAttribI1i;
- PFNGLVERTEXATTRIBI1IVPROC vertexAttribI1iv;
- PFNGLVERTEXATTRIBI1UIPROC vertexAttribI1ui;
- PFNGLVERTEXATTRIBI1UIVPROC vertexAttribI1uiv;
- PFNGLVERTEXATTRIBI2IPROC vertexAttribI2i;
- PFNGLVERTEXATTRIBI2IVPROC vertexAttribI2iv;
- PFNGLVERTEXATTRIBI2UIPROC vertexAttribI2ui;
- PFNGLVERTEXATTRIBI2UIVPROC vertexAttribI2uiv;
- PFNGLVERTEXATTRIBI3IPROC vertexAttribI3i;
- PFNGLVERTEXATTRIBI3IVPROC vertexAttribI3iv;
- PFNGLVERTEXATTRIBI3UIPROC vertexAttribI3ui;
- PFNGLVERTEXATTRIBI3UIVPROC vertexAttribI3uiv;
- PFNGLVERTEXATTRIBI4BVPROC vertexAttribI4bv;
- PFNGLVERTEXATTRIBI4IPROC vertexAttribI4i;
- PFNGLVERTEXATTRIBI4IVPROC vertexAttribI4iv;
- PFNGLVERTEXATTRIBI4SVPROC vertexAttribI4sv;
- PFNGLVERTEXATTRIBI4UBVPROC vertexAttribI4ubv;
- PFNGLVERTEXATTRIBI4UIPROC vertexAttribI4ui;
- PFNGLVERTEXATTRIBI4UIVPROC vertexAttribI4uiv;
- PFNGLVERTEXATTRIBI4USVPROC vertexAttribI4usv;
- PFNGLVERTEXATTRIBIPOINTERPROC vertexAttribIPointer;
-
- // 3.1
- PFNGLCOPYBUFFERSUBDATAPROC copyBufferSubData;
- PFNGLDRAWARRAYSINSTANCEDPROC drawArraysInstanced;
- PFNGLDRAWELEMENTSINSTANCEDPROC drawElementsInstanced;
- PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC getActiveUniformBlockName;
- PFNGLGETACTIVEUNIFORMBLOCKIVPROC getActiveUniformBlockiv;
- PFNGLGETACTIVEUNIFORMNAMEPROC getActiveUniformName;
- PFNGLGETACTIVEUNIFORMSIVPROC getActiveUniformsiv;
- PFNGLGETUNIFORMBLOCKINDEXPROC getUniformBlockIndex;
- PFNGLGETUNIFORMINDICESPROC getUniformIndices;
- PFNGLPRIMITIVERESTARTINDEXPROC primitiveRestartIndex;
- PFNGLTEXBUFFERPROC texBuffer;
- PFNGLUNIFORMBLOCKBINDINGPROC uniformBlockBinding;
-
- // 3.2
- PFNGLCLIENTWAITSYNCPROC clientWaitSync;
- PFNGLDELETESYNCPROC deleteSync;
- PFNGLDRAWELEMENTSBASEVERTEXPROC drawElementsBaseVertex;
- PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC drawElementsInstancedBaseVertex;
- PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC drawRangeElementsBaseVertex;
- PFNGLFENCESYNCPROC fenceSync;
- PFNGLFRAMEBUFFERTEXTUREPROC framebufferTexture;
- PFNGLGETBUFFERPARAMETERI64VPROC getBufferParameteri64v;
- PFNGLGETINTEGER64I_VPROC getInteger64i_v;
- PFNGLGETINTEGER64VPROC getInteger64v;
- PFNGLGETMULTISAMPLEFVPROC getMultisamplefv;
- PFNGLGETSYNCIVPROC getSynciv;
- PFNGLISSYNCPROC isSync;
- PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC multiDrawElementsBaseVertex;
- PFNGLPROVOKINGVERTEXPROC provokingVertex;
- PFNGLSAMPLEMASKIPROC sampleMaski;
- PFNGLTEXIMAGE2DMULTISAMPLEPROC texImage2DMultisample;
- PFNGLTEXIMAGE3DMULTISAMPLEPROC texImage3DMultisample;
- PFNGLWAITSYNCPROC waitSync;
-
- // NV_path_rendering (originally written against 3.2 compatibility profile)
- PFNGLMATRIXLOADFEXTPROC matrixLoadEXT;
- PFNGLGENPATHSNVPROC genPathsNV;
- PFNGLDELETEPATHSNVPROC delPathsNV;
- PFNGLPATHCOMMANDSNVPROC pathCommandsNV;
- PFNGLISPATHNVPROC isPathNV;
- PFNGLPATHPARAMETERFNVPROC setPathParameterfNV;
- PFNGLPATHPARAMETERINVPROC setPathParameteriNV;
- PFNGLGETPATHPARAMETERFVNVPROC getPathParameterfNV;
- PFNGLGETPATHPARAMETERIVNVPROC getPathParameteriNV;
- PFNGLPATHSTENCILFUNCNVPROC pathStencilFuncNV;
- PFNGLSTENCILFILLPATHNVPROC stencilFillPathNV;
- PFNGLSTENCILSTROKEPATHNVPROC stencilStrokePathNV;
- PFNGLCOVERFILLPATHNVPROC coverFillPathNV;
- PFNGLCOVERSTROKEPATHNVPROC coverStrokePathNV;
- PFNGLSTENCILTHENCOVERFILLPATHNVPROC stencilThenCoverFillPathNV;
- PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC stencilThenCoverStrokePathNV;
- PFNGLCOVERFILLPATHINSTANCEDNVPROC coverFillPathInstancedNV;
- PFNGLCOVERSTROKEPATHINSTANCEDNVPROC coverStrokePathInstancedNV;
- PFNGLSTENCILFILLPATHINSTANCEDNVPROC stencilFillPathInstancedNV;
- PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC stencilStrokePathInstancedNV;
- PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC stencilThenCoverFillPathInstancedNV;
- PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC stencilThenCoverStrokePathInstancedNV;
- PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC programPathFragmentInputGenNV;
-
- // 3.3
- PFNGLBINDFRAGDATALOCATIONINDEXEDPROC bindFragDataLocationIndexed;
- PFNGLBINDSAMPLERPROC bindSampler;
- PFNGLDELETESAMPLERSPROC deleteSamplers;
- PFNGLGENSAMPLERSPROC genSamplers;
- PFNGLGETFRAGDATAINDEXPROC getFragDataIndex;
- PFNGLGETQUERYOBJECTI64VPROC getQueryObjecti64v;
- PFNGLGETQUERYOBJECTUI64VPROC getQueryObjectui64v;
- PFNGLGETSAMPLERPARAMETERIIVPROC getSamplerParameterIiv;
- PFNGLGETSAMPLERPARAMETERIUIVPROC getSamplerParameterIuiv;
- PFNGLGETSAMPLERPARAMETERFVPROC getSamplerParameterfv;
- PFNGLGETSAMPLERPARAMETERIVPROC getSamplerParameteriv;
- PFNGLISSAMPLERPROC isSampler;
- PFNGLQUERYCOUNTERPROC queryCounter;
- PFNGLSAMPLERPARAMETERIIVPROC samplerParameterIiv;
- PFNGLSAMPLERPARAMETERIUIVPROC samplerParameterIuiv;
- PFNGLSAMPLERPARAMETERFPROC samplerParameterf;
- PFNGLSAMPLERPARAMETERFVPROC samplerParameterfv;
- PFNGLSAMPLERPARAMETERIPROC samplerParameteri;
- PFNGLSAMPLERPARAMETERIVPROC samplerParameteriv;
- PFNGLVERTEXATTRIBDIVISORPROC vertexAttribDivisor;
- PFNGLVERTEXATTRIBP1UIPROC vertexAttribP1ui;
- PFNGLVERTEXATTRIBP1UIVPROC vertexAttribP1uiv;
- PFNGLVERTEXATTRIBP2UIPROC vertexAttribP2ui;
- PFNGLVERTEXATTRIBP2UIVPROC vertexAttribP2uiv;
- PFNGLVERTEXATTRIBP3UIPROC vertexAttribP3ui;
- PFNGLVERTEXATTRIBP3UIVPROC vertexAttribP3uiv;
- PFNGLVERTEXATTRIBP4UIPROC vertexAttribP4ui;
- PFNGLVERTEXATTRIBP4UIVPROC vertexAttribP4uiv;
-
- // 4.0
- PFNGLBEGINQUERYINDEXEDPROC beginQueryIndexed;
- PFNGLBINDTRANSFORMFEEDBACKPROC bindTransformFeedback;
- PFNGLBLENDEQUATIONSEPARATEIPROC blendEquationSeparatei;
- PFNGLBLENDEQUATIONIPROC blendEquationi;
- PFNGLBLENDFUNCSEPARATEIPROC blendFuncSeparatei;
- PFNGLBLENDFUNCIPROC blendFunci;
- PFNGLDELETETRANSFORMFEEDBACKSPROC deleteTransformFeedbacks;
- PFNGLDRAWARRAYSINDIRECTPROC drawArraysIndirect;
- PFNGLDRAWELEMENTSINDIRECTPROC drawElementsIndirect;
- PFNGLDRAWTRANSFORMFEEDBACKPROC drawTransformFeedback;
- PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC drawTransformFeedbackStream;
- PFNGLENDQUERYINDEXEDPROC endQueryIndexed;
- PFNGLGENTRANSFORMFEEDBACKSPROC genTransformFeedbacks;
- PFNGLGETACTIVESUBROUTINENAMEPROC getActiveSubroutineName;
- PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC getActiveSubroutineUniformName;
- PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC getActiveSubroutineUniformiv;
- PFNGLGETPROGRAMSTAGEIVPROC getProgramStageiv;
- PFNGLGETQUERYINDEXEDIVPROC getQueryIndexediv;
- PFNGLGETSUBROUTINEINDEXPROC getSubroutineIndex;
- PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC getSubroutineUniformLocation;
- PFNGLGETUNIFORMSUBROUTINEUIVPROC getUniformSubroutineuiv;
- PFNGLGETUNIFORMDVPROC getUniformdv;
- PFNGLISTRANSFORMFEEDBACKPROC isTransformFeedback;
- PFNGLMINSAMPLESHADINGPROC minSampleShading;
- PFNGLPATCHPARAMETERFVPROC patchParameterfv;
- PFNGLPATCHPARAMETERIPROC patchParameteri;
- PFNGLPAUSETRANSFORMFEEDBACKPROC pauseTransformFeedback;
- PFNGLRESUMETRANSFORMFEEDBACKPROC resumeTransformFeedback;
- PFNGLUNIFORM1DPROC uniform1d;
- PFNGLUNIFORM1DVPROC uniform1dv;
- PFNGLUNIFORM2DPROC uniform2d;
- PFNGLUNIFORM2DVPROC uniform2dv;
- PFNGLUNIFORM3DPROC uniform3d;
- PFNGLUNIFORM3DVPROC uniform3dv;
- PFNGLUNIFORM4DPROC uniform4d;
- PFNGLUNIFORM4DVPROC uniform4dv;
- PFNGLUNIFORMMATRIX2DVPROC uniformMatrix2dv;
- PFNGLUNIFORMMATRIX2X3DVPROC uniformMatrix2x3dv;
- PFNGLUNIFORMMATRIX2X4DVPROC uniformMatrix2x4dv;
- PFNGLUNIFORMMATRIX3DVPROC uniformMatrix3dv;
- PFNGLUNIFORMMATRIX3X2DVPROC uniformMatrix3x2dv;
- PFNGLUNIFORMMATRIX3X4DVPROC uniformMatrix3x4dv;
- PFNGLUNIFORMMATRIX4DVPROC uniformMatrix4dv;
- PFNGLUNIFORMMATRIX4X2DVPROC uniformMatrix4x2dv;
- PFNGLUNIFORMMATRIX4X3DVPROC uniformMatrix4x3dv;
- PFNGLUNIFORMSUBROUTINESUIVPROC uniformSubroutinesuiv;
-
- // 4.1
- PFNGLACTIVESHADERPROGRAMPROC activeShaderProgram;
- PFNGLBINDPROGRAMPIPELINEPROC bindProgramPipeline;
- PFNGLCLEARDEPTHFPROC clearDepthf;
- PFNGLCREATESHADERPROGRAMVPROC createShaderProgramv;
- PFNGLDELETEPROGRAMPIPELINESPROC deleteProgramPipelines;
- PFNGLDEPTHRANGEARRAYVPROC depthRangeArrayv;
- PFNGLDEPTHRANGEINDEXEDPROC depthRangeIndexed;
- PFNGLDEPTHRANGEFPROC depthRangef;
- PFNGLGENPROGRAMPIPELINESPROC genProgramPipelines;
- PFNGLGETDOUBLEI_VPROC getDoublei_v;
- PFNGLGETFLOATI_VPROC getFloati_v;
- PFNGLGETPROGRAMBINARYPROC getProgramBinary;
- PFNGLGETPROGRAMPIPELINEINFOLOGPROC getProgramPipelineInfoLog;
- PFNGLGETPROGRAMPIPELINEIVPROC getProgramPipelineiv;
- PFNGLGETSHADERPRECISIONFORMATPROC getShaderPrecisionFormat;
- PFNGLGETVERTEXATTRIBLDVPROC getVertexAttribLdv;
- PFNGLISPROGRAMPIPELINEPROC isProgramPipeline;
- PFNGLPROGRAMBINARYPROC programBinary;
- PFNGLPROGRAMPARAMETERIPROC programParameteri;
- PFNGLPROGRAMUNIFORM1DPROC programUniform1d;
- PFNGLPROGRAMUNIFORM1DVPROC programUniform1dv;
- PFNGLPROGRAMUNIFORM1FPROC programUniform1f;
- PFNGLPROGRAMUNIFORM1FVPROC programUniform1fv;
- PFNGLPROGRAMUNIFORM1IPROC programUniform1i;
- PFNGLPROGRAMUNIFORM1IVPROC programUniform1iv;
- PFNGLPROGRAMUNIFORM1UIPROC programUniform1ui;
- PFNGLPROGRAMUNIFORM1UIVPROC programUniform1uiv;
- PFNGLPROGRAMUNIFORM2DPROC programUniform2d;
- PFNGLPROGRAMUNIFORM2DVPROC programUniform2dv;
- PFNGLPROGRAMUNIFORM2FPROC programUniform2f;
- PFNGLPROGRAMUNIFORM2FVPROC programUniform2fv;
- PFNGLPROGRAMUNIFORM2IPROC programUniform2i;
- PFNGLPROGRAMUNIFORM2IVPROC programUniform2iv;
- PFNGLPROGRAMUNIFORM2UIPROC programUniform2ui;
- PFNGLPROGRAMUNIFORM2UIVPROC programUniform2uiv;
- PFNGLPROGRAMUNIFORM3DPROC programUniform3d;
- PFNGLPROGRAMUNIFORM3DVPROC programUniform3dv;
- PFNGLPROGRAMUNIFORM3FPROC programUniform3f;
- PFNGLPROGRAMUNIFORM3FVPROC programUniform3fv;
- PFNGLPROGRAMUNIFORM3IPROC programUniform3i;
- PFNGLPROGRAMUNIFORM3IVPROC programUniform3iv;
- PFNGLPROGRAMUNIFORM3UIPROC programUniform3ui;
- PFNGLPROGRAMUNIFORM3UIVPROC programUniform3uiv;
- PFNGLPROGRAMUNIFORM4DPROC programUniform4d;
- PFNGLPROGRAMUNIFORM4DVPROC programUniform4dv;
- PFNGLPROGRAMUNIFORM4FPROC programUniform4f;
- PFNGLPROGRAMUNIFORM4FVPROC programUniform4fv;
- PFNGLPROGRAMUNIFORM4IPROC programUniform4i;
- PFNGLPROGRAMUNIFORM4IVPROC programUniform4iv;
- PFNGLPROGRAMUNIFORM4UIPROC programUniform4ui;
- PFNGLPROGRAMUNIFORM4UIVPROC programUniform4uiv;
- PFNGLPROGRAMUNIFORMMATRIX2DVPROC programUniformMatrix2dv;
- PFNGLPROGRAMUNIFORMMATRIX2FVPROC programUniformMatrix2fv;
- PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC programUniformMatrix2x3dv;
- PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC programUniformMatrix2x3fv;
- PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC programUniformMatrix2x4dv;
- PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC programUniformMatrix2x4fv;
- PFNGLPROGRAMUNIFORMMATRIX3DVPROC programUniformMatrix3dv;
- PFNGLPROGRAMUNIFORMMATRIX3FVPROC programUniformMatrix3fv;
- PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC programUniformMatrix3x2dv;
- PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC programUniformMatrix3x2fv;
- PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC programUniformMatrix3x4dv;
- PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC programUniformMatrix3x4fv;
- PFNGLPROGRAMUNIFORMMATRIX4DVPROC programUniformMatrix4dv;
- PFNGLPROGRAMUNIFORMMATRIX4FVPROC programUniformMatrix4fv;
- PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC programUniformMatrix4x2dv;
- PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC programUniformMatrix4x2fv;
- PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC programUniformMatrix4x3dv;
- PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC programUniformMatrix4x3fv;
- PFNGLRELEASESHADERCOMPILERPROC releaseShaderCompiler;
- PFNGLSCISSORARRAYVPROC scissorArrayv;
- PFNGLSCISSORINDEXEDPROC scissorIndexed;
- PFNGLSCISSORINDEXEDVPROC scissorIndexedv;
- PFNGLSHADERBINARYPROC shaderBinary;
- PFNGLUSEPROGRAMSTAGESPROC useProgramStages;
- PFNGLVALIDATEPROGRAMPIPELINEPROC validateProgramPipeline;
- PFNGLVERTEXATTRIBL1DPROC vertexAttribL1d;
- PFNGLVERTEXATTRIBL1DVPROC vertexAttribL1dv;
- PFNGLVERTEXATTRIBL2DPROC vertexAttribL2d;
- PFNGLVERTEXATTRIBL2DVPROC vertexAttribL2dv;
- PFNGLVERTEXATTRIBL3DPROC vertexAttribL3d;
- PFNGLVERTEXATTRIBL3DVPROC vertexAttribL3dv;
- PFNGLVERTEXATTRIBL4DPROC vertexAttribL4d;
- PFNGLVERTEXATTRIBL4DVPROC vertexAttribL4dv;
- PFNGLVERTEXATTRIBLPOINTERPROC vertexAttribLPointer;
- PFNGLVIEWPORTARRAYVPROC viewportArrayv;
- PFNGLVIEWPORTINDEXEDFPROC viewportIndexedf;
- PFNGLVIEWPORTINDEXEDFVPROC viewportIndexedfv;
-
- // 4.2
- PFNGLBINDIMAGETEXTUREPROC bindImageTexture;
- PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC drawArraysInstancedBaseInstance;
- PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC drawElementsInstancedBaseInstance;
- PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC drawElementsInstancedBaseVertexBaseInstance;
- PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC drawTransformFeedbackInstanced;
- PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC drawTransformFeedbackStreamInstanced;
- PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC getActiveAtomicCounterBufferiv;
- PFNGLGETINTERNALFORMATIVPROC getInternalformativ;
- PFNGLMEMORYBARRIERPROC memoryBarrier;
- PFNGLTEXSTORAGE1DPROC texStorage1D;
- PFNGLTEXSTORAGE2DPROC texStorage2D;
- PFNGLTEXSTORAGE3DPROC texStorage3D;
-
- // 4.3
- PFNGLBINDVERTEXBUFFERPROC bindVertexBuffer;
- PFNGLCLEARBUFFERDATAPROC clearBufferData;
- PFNGLCLEARBUFFERSUBDATAPROC clearBufferSubData;
- PFNGLCOPYIMAGESUBDATAPROC copyImageSubData;
- PFNGLDEBUGMESSAGECALLBACKPROC debugMessageCallback;
- PFNGLDEBUGMESSAGECONTROLPROC debugMessageControl;
- PFNGLDEBUGMESSAGEINSERTPROC debugMessageInsert;
- PFNGLDISPATCHCOMPUTEPROC dispatchCompute;
- PFNGLDISPATCHCOMPUTEINDIRECTPROC dispatchComputeIndirect;
- PFNGLFRAMEBUFFERPARAMETERIPROC framebufferParameteri;
- PFNGLGETDEBUGMESSAGELOGPROC getDebugMessageLog;
- PFNGLGETFRAMEBUFFERPARAMETERIVPROC getFramebufferParameteriv;
- PFNGLGETINTERNALFORMATI64VPROC getInternalformati64v;
- PFNGLGETPOINTERVPROC getPointerv;
- PFNGLGETOBJECTLABELPROC getObjectLabel;
- PFNGLGETOBJECTPTRLABELPROC getObjectPtrLabel;
- PFNGLGETPROGRAMINTERFACEIVPROC getProgramInterfaceiv;
- PFNGLGETPROGRAMRESOURCEINDEXPROC getProgramResourceIndex;
- PFNGLGETPROGRAMRESOURCELOCATIONPROC getProgramResourceLocation;
- PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC getProgramResourceLocationIndex;
- PFNGLGETPROGRAMRESOURCENAMEPROC getProgramResourceName;
- PFNGLGETPROGRAMRESOURCEIVPROC getProgramResourceiv;
- PFNGLINVALIDATEBUFFERDATAPROC invalidateBufferData;
- PFNGLINVALIDATEBUFFERSUBDATAPROC invalidateBufferSubData;
- PFNGLINVALIDATEFRAMEBUFFERPROC invalidateFramebuffer;
- PFNGLINVALIDATESUBFRAMEBUFFERPROC invalidateSubFramebuffer;
- PFNGLINVALIDATETEXIMAGEPROC invalidateTexImage;
- PFNGLINVALIDATETEXSUBIMAGEPROC invalidateTexSubImage;
- PFNGLMULTIDRAWARRAYSINDIRECTPROC multiDrawArraysIndirect;
- PFNGLMULTIDRAWELEMENTSINDIRECTPROC multiDrawElementsIndirect;
- PFNGLOBJECTLABELPROC objectLabel;
- PFNGLOBJECTPTRLABELPROC objectPtrLabel;
- PFNGLPOPDEBUGGROUPPROC popDebugGroup;
- PFNGLPUSHDEBUGGROUPPROC pushDebugGroup;
- PFNGLSHADERSTORAGEBLOCKBINDINGPROC shaderStorageBlockBinding;
- PFNGLTEXBUFFERRANGEPROC texBufferRange;
- PFNGLTEXSTORAGE2DMULTISAMPLEPROC texStorage2DMultisample;
- PFNGLTEXSTORAGE3DMULTISAMPLEPROC texStorage3DMultisample;
- PFNGLTEXTUREVIEWPROC textureView;
- PFNGLVERTEXATTRIBBINDINGPROC vertexAttribBinding;
- PFNGLVERTEXATTRIBFORMATPROC vertexAttribFormat;
- PFNGLVERTEXATTRIBIFORMATPROC vertexAttribIFormat;
- PFNGLVERTEXATTRIBLFORMATPROC vertexAttribLFormat;
- PFNGLVERTEXBINDINGDIVISORPROC vertexBindingDivisor;
- PFNGLCOVERAGEMODULATIONNVPROC coverageModulationNV;
-
- // 4.4
- PFNGLBINDBUFFERSBASEPROC bindBuffersBase;
- PFNGLBINDBUFFERSRANGEPROC bindBuffersRange;
- PFNGLBINDIMAGETEXTURESPROC bindImageTextures;
- PFNGLBINDSAMPLERSPROC bindSamplers;
- PFNGLBINDTEXTURESPROC bindTextures;
- PFNGLBINDVERTEXBUFFERSPROC bindVertexBuffers;
- PFNGLBUFFERSTORAGEPROC bufferStorage;
- PFNGLCLEARTEXIMAGEPROC clearTexImage;
- PFNGLCLEARTEXSUBIMAGEPROC clearTexSubImage;
-
- // 4.5
- PFNGLBINDTEXTUREUNITPROC bindTextureUnit;
- PFNGLBLITNAMEDFRAMEBUFFERPROC blitNamedFramebuffer;
- PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC checkNamedFramebufferStatus;
- PFNGLCLEARNAMEDBUFFERDATAPROC clearNamedBufferData;
- PFNGLCLEARNAMEDBUFFERSUBDATAPROC clearNamedBufferSubData;
- PFNGLCLEARNAMEDFRAMEBUFFERFIPROC clearNamedFramebufferfi;
- PFNGLCLEARNAMEDFRAMEBUFFERFVPROC clearNamedFramebufferfv;
- PFNGLCLEARNAMEDFRAMEBUFFERIVPROC clearNamedFramebufferiv;
- PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC clearNamedFramebufferuiv;
- PFNGLCLIPCONTROLPROC clipControl;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC compressedTextureSubImage1D;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC compressedTextureSubImage2D;
- PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC compressedTextureSubImage3D;
- PFNGLCOPYNAMEDBUFFERSUBDATAPROC copyNamedBufferSubData;
- PFNGLCOPYTEXTURESUBIMAGE1DPROC copyTextureSubImage1D;
- PFNGLCOPYTEXTURESUBIMAGE2DPROC copyTextureSubImage2D;
- PFNGLCOPYTEXTURESUBIMAGE3DPROC copyTextureSubImage3D;
- PFNGLCREATEBUFFERSPROC createBuffers;
- PFNGLCREATEFRAMEBUFFERSPROC createFramebuffers;
- PFNGLCREATEPROGRAMPIPELINESPROC createProgramPipelines;
- PFNGLCREATEQUERIESPROC createQueries;
- PFNGLCREATERENDERBUFFERSPROC createRenderbuffers;
- PFNGLCREATESAMPLERSPROC createSamplers;
- PFNGLCREATETEXTURESPROC createTextures;
- PFNGLCREATETRANSFORMFEEDBACKSPROC createTransformFeedbacks;
- PFNGLCREATEVERTEXARRAYSPROC createVertexArrays;
- PFNGLDISABLEVERTEXARRAYATTRIBPROC disableVertexArrayAttrib;
- PFNGLENABLEVERTEXARRAYATTRIBPROC enableVertexArrayAttrib;
- PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC flushMappedNamedBufferRange;
- PFNGLGENERATETEXTUREMIPMAPPROC generateTextureMipmap;
- PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC getCompressedTextureImage;
- PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC getCompressedTextureSubImage;
- PFNGLGETGRAPHICSRESETSTATUSPROC getGraphicsResetStatus;
- PFNGLGETNAMEDBUFFERPARAMETERI64VPROC getNamedBufferParameteri64v;
- PFNGLGETNAMEDBUFFERPARAMETERIVPROC getNamedBufferParameteriv;
- PFNGLGETNAMEDBUFFERPOINTERVPROC getNamedBufferPointerv;
- PFNGLGETNAMEDBUFFERSUBDATAPROC getNamedBufferSubData;
- PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC getNamedFramebufferAttachmentParameteriv;
- PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC getNamedFramebufferParameteriv;
- PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC getNamedRenderbufferParameteriv;
- PFNGLGETQUERYBUFFEROBJECTI64VPROC getQueryBufferObjecti64v;
- PFNGLGETQUERYBUFFEROBJECTIVPROC getQueryBufferObjectiv;
- PFNGLGETQUERYBUFFEROBJECTUI64VPROC getQueryBufferObjectui64v;
- PFNGLGETQUERYBUFFEROBJECTUIVPROC getQueryBufferObjectuiv;
- PFNGLGETTEXTUREIMAGEPROC getTextureImage;
- PFNGLGETTEXTURELEVELPARAMETERFVPROC getTextureLevelParameterfv;
- PFNGLGETTEXTURELEVELPARAMETERIVPROC getTextureLevelParameteriv;
- PFNGLGETTEXTUREPARAMETERIIVPROC getTextureParameterIiv;
- PFNGLGETTEXTUREPARAMETERIUIVPROC getTextureParameterIuiv;
- PFNGLGETTEXTUREPARAMETERFVPROC getTextureParameterfv;
- PFNGLGETTEXTUREPARAMETERIVPROC getTextureParameteriv;
- PFNGLGETTEXTURESUBIMAGEPROC getTextureSubImage;
- PFNGLGETTRANSFORMFEEDBACKI64_VPROC getTransformFeedbacki64_v;
- PFNGLGETTRANSFORMFEEDBACKI_VPROC getTransformFeedbacki_v;
- PFNGLGETTRANSFORMFEEDBACKIVPROC getTransformFeedbackiv;
- PFNGLGETVERTEXARRAYINDEXED64IVPROC getVertexArrayIndexed64iv;
- PFNGLGETVERTEXARRAYINDEXEDIVPROC getVertexArrayIndexediv;
- PFNGLGETVERTEXARRAYIVPROC getVertexArrayiv;
- PFNGLGETNCOMPRESSEDTEXIMAGEPROC getnCompressedTexImage;
- PFNGLGETNTEXIMAGEPROC getnTexImage;
- PFNGLGETNUNIFORMDVPROC getnUniformdv;
- PFNGLGETNUNIFORMFVPROC getnUniformfv;
- PFNGLGETNUNIFORMIVPROC getnUniformiv;
- PFNGLGETNUNIFORMUIVPROC getnUniformuiv;
- PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC invalidateNamedFramebufferData;
- PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC invalidateNamedFramebufferSubData;
- PFNGLMAPNAMEDBUFFERPROC mapNamedBuffer;
- PFNGLMAPNAMEDBUFFERRANGEPROC mapNamedBufferRange;
- PFNGLMEMORYBARRIERBYREGIONPROC memoryBarrierByRegion;
- PFNGLNAMEDBUFFERDATAPROC namedBufferData;
- PFNGLNAMEDBUFFERSTORAGEPROC namedBufferStorage;
- PFNGLNAMEDBUFFERSUBDATAPROC namedBufferSubData;
- PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC namedFramebufferDrawBuffer;
- PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC namedFramebufferDrawBuffers;
- PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC namedFramebufferParameteri;
- PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC namedFramebufferReadBuffer;
- PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC namedFramebufferRenderbuffer;
- PFNGLNAMEDFRAMEBUFFERTEXTUREPROC namedFramebufferTexture;
- PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC namedFramebufferTextureLayer;
- PFNGLNAMEDRENDERBUFFERSTORAGEPROC namedRenderbufferStorage;
- PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC namedRenderbufferStorageMultisample;
- PFNGLREADNPIXELSPROC readnPixels;
- PFNGLTEXTUREBARRIERPROC textureBarrier;
- PFNGLTEXTUREBUFFERPROC textureBuffer;
- PFNGLTEXTUREBUFFERRANGEPROC textureBufferRange;
- PFNGLTEXTUREPARAMETERIIVPROC textureParameterIiv;
- PFNGLTEXTUREPARAMETERIUIVPROC textureParameterIuiv;
- PFNGLTEXTUREPARAMETERFPROC textureParameterf;
- PFNGLTEXTUREPARAMETERFVPROC textureParameterfv;
- PFNGLTEXTUREPARAMETERIPROC textureParameteri;
- PFNGLTEXTUREPARAMETERIVPROC textureParameteriv;
- PFNGLTEXTURESTORAGE1DPROC textureStorage1D;
- PFNGLTEXTURESTORAGE2DPROC textureStorage2D;
- PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC textureStorage2DMultisample;
- PFNGLTEXTURESTORAGE3DPROC textureStorage3D;
- PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC textureStorage3DMultisample;
- PFNGLTEXTURESUBIMAGE1DPROC textureSubImage1D;
- PFNGLTEXTURESUBIMAGE2DPROC textureSubImage2D;
- PFNGLTEXTURESUBIMAGE3DPROC textureSubImage3D;
- PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC transformFeedbackBufferBase;
- PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC transformFeedbackBufferRange;
- PFNGLUNMAPNAMEDBUFFERPROC unmapNamedBuffer;
- PFNGLVERTEXARRAYATTRIBBINDINGPROC vertexArrayAttribBinding;
- PFNGLVERTEXARRAYATTRIBFORMATPROC vertexArrayAttribFormat;
- PFNGLVERTEXARRAYATTRIBIFORMATPROC vertexArrayAttribIFormat;
- PFNGLVERTEXARRAYATTRIBLFORMATPROC vertexArrayAttribLFormat;
- PFNGLVERTEXARRAYBINDINGDIVISORPROC vertexArrayBindingDivisor;
- PFNGLVERTEXARRAYELEMENTBUFFERPROC vertexArrayElementBuffer;
- PFNGLVERTEXARRAYVERTEXBUFFERPROC vertexArrayVertexBuffer;
- PFNGLVERTEXARRAYVERTEXBUFFERSPROC vertexArrayVertexBuffers;
-
- // ES 3.2
- PFNGLBLENDBARRIERPROC blendBarrier;
- PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox;
-
- // GL_OES_EGL_image
- PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eglImageTargetRenderbufferStorageOES;
- PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2DOES;
-
- // GL_EXT_discard_framebuffer
- PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebuffer;
-
- // GL_NV_internalformat_sample_query
- PFNGLGETINTERNALFORMATSAMPLEIVNVPROC getInternalformatSampleivNV;
-
- private:
- void initializeProcsDesktopGL();
- void initializeProcsGLES();
-
- virtual void *loadProcAddress(const std::string &function) = 0;
};
-}
+} // namespace rx
#endif // LIBANGLE_RENDERER_GL_FUNCTIONSGL_H_
diff --git a/src/libANGLE/renderer/gl/PathGL.cpp b/src/libANGLE/renderer/gl/PathGL.cpp
index 5348674..0891d1b 100644
--- a/src/libANGLE/renderer/gl/PathGL.cpp
+++ b/src/libANGLE/renderer/gl/PathGL.cpp
@@ -32,7 +32,7 @@
void PathGL::setPathParameter(GLenum pname, GLfloat value)
{
- mFunctions->setPathParameterfNV(mPathID, pname, value);
+ mFunctions->pathParameterfNV(mPathID, pname, value);
}
} // rx
diff --git a/src/libANGLE/renderer/gl/StateManagerGL.cpp b/src/libANGLE/renderer/gl/StateManagerGL.cpp
index 1f9d468..e007060 100644
--- a/src/libANGLE/renderer/gl/StateManagerGL.cpp
+++ b/src/libANGLE/renderer/gl/StateManagerGL.cpp
@@ -2162,7 +2162,7 @@
if (memcmp(mPathMatrixMV, m, sizeof(mPathMatrixMV)) != 0)
{
memcpy(mPathMatrixMV, m, sizeof(mPathMatrixMV));
- mFunctions->matrixLoadEXT(GL_PATH_MODELVIEW_CHROMIUM, m);
+ mFunctions->matrixLoadfEXT(GL_PATH_MODELVIEW_CHROMIUM, m);
mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_MV);
}
@@ -2173,7 +2173,7 @@
if (memcmp(mPathMatrixProj, m, sizeof(mPathMatrixProj)) != 0)
{
memcpy(mPathMatrixProj, m, sizeof(mPathMatrixProj));
- mFunctions->matrixLoadEXT(GL_PATH_PROJECTION_CHROMIUM, m);
+ mFunctions->matrixLoadfEXT(GL_PATH_PROJECTION_CHROMIUM, m);
mLocalDirtyBits.set(gl::State::DIRTY_BIT_PATH_RENDERING_MATRIX_PROJ);
}
diff --git a/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm b/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
index f94f813..9ac4f32 100644
--- a/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
+++ b/src/libANGLE/renderer/gl/cgl/DisplayCGL.mm
@@ -36,7 +36,7 @@
~FunctionsGLCGL() override { dlclose(mDylibHandle); }
private:
- void *loadProcAddress(const std::string &function) override
+ void *loadProcAddress(const std::string &function) const override
{
return dlsym(mDylibHandle, function.c_str());
}
diff --git a/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp b/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
index 20fffc7..ec301fa 100644
--- a/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
+++ b/src/libANGLE/renderer/gl/egl/FunctionsEGL.cpp
@@ -200,7 +200,7 @@
~FunctionsGLEGL() override {}
private:
- void *loadProcAddress(const std::string &function) override
+ void *loadProcAddress(const std::string &function) const override
{
return mEGL.getProcAddress(function.c_str());
}
diff --git a/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp b/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
index f8f5c02..8cc62cd 100644
--- a/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
+++ b/src/libANGLE/renderer/gl/egl/ozone/DisplayOzone.cpp
@@ -218,7 +218,7 @@
gl->genRenderbuffers(1, &mColorBuffer);
sm->bindRenderbuffer(GL_RENDERBUFFER, mColorBuffer);
- gl->eglImageTargetRenderbufferStorageOES(GL_RENDERBUFFER, mImage);
+ gl->eGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER, mImage);
sm->bindFramebuffer(GL_FRAMEBUFFER, mGLFB);
gl->framebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER,
@@ -263,7 +263,7 @@
void DisplayOzone::Buffer::bindTexImage()
{
- mDisplay->mFunctionsGL->eglImageTargetTexture2DOES(GL_TEXTURE_2D, mImage);
+ mDisplay->mFunctionsGL->eGLImageTargetTexture2DOES(GL_TEXTURE_2D, mImage);
}
GLuint DisplayOzone::Buffer::getTexture()
@@ -280,7 +280,7 @@
gl->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
gl->texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
ASSERT(mImage != EGL_NO_IMAGE_KHR);
- gl->eglImageTargetTexture2DOES(GL_TEXTURE_2D, mImage);
+ gl->eGLImageTargetTexture2DOES(GL_TEXTURE_2D, mImage);
return mTexture;
}
diff --git a/src/libANGLE/renderer/gl/functionsgl_typedefs.h b/src/libANGLE/renderer/gl/functionsgl_typedefs.h
index daf7ff7..0329cac 100644
--- a/src/libANGLE/renderer/gl/functionsgl_typedefs.h
+++ b/src/libANGLE/renderer/gl/functionsgl_typedefs.h
@@ -753,6 +753,143 @@
typedef void (INTERNAL_GL_APIENTRY *PFNGLVERTEXARRAYVERTEXBUFFERPROC)(GLuint, GLuint, GLuint, GLintptr, GLsizei);
typedef void (INTERNAL_GL_APIENTRY *PFNGLVERTEXARRAYVERTEXBUFFERSPROC)(GLuint, GLuint, GLsizei, const GLuint *, const GLintptr *, const GLsizei *);
+// GL_EXT_discard_framebuffer
+typedef void(INTERNAL_GL_APIENTRY *PFNGLDISCARDFRAMEBUFFEREXTPROC)(GLenum target,
+ GLsizei numAttachments,
+ const GLenum *attachments);
+
+// GL_OES_EGL_image
+typedef void *GLeglImageOES;
+typedef void(INTERNAL_GL_APIENTRY *PFNGLEGLIMAGETARGETTEXTURE2DOESPROC)(GLenum target,
+ GLeglImageOES image);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC)(
+ GLenum target,
+ GLeglImageOES image);
+
+// NV_path_rendering (originally written against 3.2 compatibility profile)
+typedef void(INTERNAL_GL_APIENTRY *PFNGLMATRIXLOADFEXTPROC)(GLenum matrixMode, const GLfloat *m);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLMATRIXLOADFNVPROC)(GLenum matrixMode, const GLfloat *m);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLMATRIXLOADIDENTITYNVPROC)(GLenum matrixMode);
+typedef GLuint(INTERNAL_GL_APIENTRY *PFNGLGENPATHSNVPROC)(GLsizei range);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLDELETEPATHSNVPROC)(GLuint path, GLsizei range);
+typedef GLboolean(INTERNAL_GL_APIENTRY *PFNGLISPATHNVPROC)(GLuint path);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPATHCOMMANDSNVPROC)(GLuint path,
+ GLsizei numCommands,
+ const GLubyte *commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const void *coords);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPATHPARAMETERINVPROC)(GLuint path,
+ GLenum pname,
+ GLint value);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPATHPARAMETERFNVPROC)(GLuint path,
+ GLenum pname,
+ GLfloat value);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLGETPATHPARAMETERIVNVPROC)(GLuint path,
+ GLenum pname,
+ GLint *value);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLGETPATHPARAMETERFVNVPROC)(GLuint path,
+ GLenum pname,
+ GLfloat *value);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPATHSTENCILFUNCNVPROC)(GLenum func, GLint ref, GLuint mask);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILFILLPATHNVPROC)(GLuint path,
+ GLenum fillMode,
+ GLuint mask);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILSTROKEPATHNVPROC)(GLuint path,
+ GLint reference,
+ GLuint mask);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLCOVERFILLPATHNVPROC)(GLuint path, GLenum coverMode);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLCOVERSTROKEPATHNVPROC)(GLuint path, GLenum coverMode);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILTHENCOVERFILLPATHNVPROC)(GLuint path,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC)(GLuint path,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLCOVERFILLPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLCOVERSTROKEPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILFILLPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat *transformValues);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat *transformValues);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC)(
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void *paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat *transformValues);
+
+typedef void(INTERNAL_GL_APIENTRY *PFNGLBINDFRAGMENTINPUTLOCATIONNVPROC)(GLuint program,
+ GLint location,
+ const GLchar *name);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC)(GLuint program,
+ GLint location,
+ GLenum genMode,
+ GLint components,
+ const GLfloat *coeffs);
+
+// ES 3.2
+typedef void(INTERNAL_GL_APIENTRY *PFNGLBLENDBARRIERPROC)(void);
+typedef void(INTERNAL_GL_APIENTRY *PFNGLPRIMITIVEBOUNDINGBOXPROC)(GLfloat minX,
+ GLfloat minY,
+ GLfloat minZ,
+ GLfloat minW,
+ GLfloat maxX,
+ GLfloat maxY,
+ GLfloat maxZ,
+ GLfloat maxW);
+
+// GL_NV_internalformat_sample_query
+typedef void(INTERNAL_GL_APIENTRY *PFNGLGETINTERNALFORMATSAMPLEIVNVPROC)(GLenum target,
+ GLenum internalformat,
+ GLsizei samples,
+ GLenum pname,
+ GLsizei bufSize,
+ GLint *params);
}
#endif // LIBANGLE_RENDERER_GL_FUNCTIONSGLTYPEDEFS_H_
diff --git a/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py b/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py
new file mode 100644
index 0000000..8b60cfb
--- /dev/null
+++ b/src/libANGLE/renderer/gl/generate_gl_dispatch_table.py
@@ -0,0 +1,301 @@
+#!/usr/bin/python
+# Copyright 2017 The ANGLE Project Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# generate_gl_dispatch_table.py:
+# Generation script for OpenGL bindings with ANGLE.
+
+import sys
+import os
+import xml.etree.ElementTree as etree
+from datetime import date
+
+# Set the CWD to the script directory.
+os.chdir(os.path.dirname(os.path.abspath(sys.argv[0])))
+
+sys.path.append('..')
+import angle_format
+
+def safe_append(the_dict, key, element):
+ if key not in the_dict:
+ the_dict[key] = []
+ the_dict[key].append(element)
+
+gl_xml_path = os.path.join('..', '..', '..', '..', 'scripts', 'gl.xml')
+dispatch_header_path = 'DispatchTableGL_autogen.h'
+dispatch_source_path = 'DispatchTableGL_autogen.cpp'
+
+# Load the JSON and XML data.
+data_source_name = 'gl_bindings_data.json'
+json_data = angle_format.load_json(data_source_name)
+xml_root = etree.parse(gl_xml_path).getroot()
+
+api_feature_info = {}
+
+core_removed_eps = []
+for core_removed_ep in xml_root.findall('feature/remove'):
+ assert(core_removed_ep.attrib['profile'] == 'core')
+ for command in core_removed_ep.findall('./command'):
+ core_removed_eps.append(command.attrib['name'])
+
+for feature in xml_root.findall('feature'):
+ api = feature.attrib['api']
+ name = feature.attrib['name']
+ number = feature.attrib['number']
+
+ # OpenGL ES 3.x versions are listed as api 'gles2'
+ if api != 'gl' and api != 'gles2':
+ continue
+
+ for command in feature.findall('./require/command'):
+ command_name = command.attrib['name']
+ safe_append(api_feature_info, command_name, (api, name, number))
+
+gl_extension_commands = {}
+gles2_extension_commands = {}
+both_extension_commands = {}
+
+for extension in xml_root.findall('extensions/extension'):
+ extension_name = extension.attrib['name']
+ support = extension.attrib['supported'].split('|')
+ for command in extension.findall('./require/command'):
+ command_name = command.attrib['name']
+ if 'gl' in support and 'gles2' in support:
+ # Special case for KHR extensions, since in GLES they are suffixed.
+ if '_KHR_' in extension_name:
+ safe_append(gl_extension_commands, command_name, extension_name)
+ safe_append(gles2_extension_commands, command_name, extension_name)
+ else:
+ safe_append(both_extension_commands, command_name, extension_name)
+ elif 'gl' in support:
+ safe_append(gl_extension_commands, command_name, extension_name)
+ elif 'gles2' in support:
+ safe_append(gles2_extension_commands, command_name, extension_name)
+
+gl_requirements = {}
+gles2_requirements = {}
+gl_extension_requirements = {}
+gles2_extension_requirements = {}
+both_extension_requirements = {}
+
+for comment, entry_points in json_data.iteritems():
+ for entry_point_no_prefix in entry_points:
+ entry_point = "gl" + entry_point_no_prefix
+
+ gl_required = None
+ gles2_required = None
+
+ if entry_point in api_feature_info:
+ for api, name, number in api_feature_info[entry_point]:
+ major, minor = number.split(".")
+ reqs = (major, minor)
+ if api == 'gl':
+ if not gl_required:
+ gl_required = reqs
+ elif entry_point in core_removed_eps:
+ print('Upgrade ' + entry_point + ' to ' + str(reqs) + ' instead of ' + str(gl_required))
+ gl_required = reqs
+ else:
+ print('Keep ' + entry_point + ' at ' + str(gl_required) + ' instead of ' + str(reqs))
+ elif api == 'gles2':
+ if not gles2_required:
+ gles2_required = reqs
+ else:
+ print("Duplicate for " + entry_point + ": " + str(reqs) + " and " + str(gles2_required))
+ else:
+ raise Exception('Bad api type: ' + api)
+
+ if gl_required:
+ safe_append(gl_requirements, gl_required, entry_point)
+
+ if gles2_required:
+ safe_append(gles2_requirements, gles2_required, entry_point)
+
+ # Special case for finding extensions that overlap with core functions.
+
+ extension = False
+
+ for ep in [entry_point, entry_point + "EXT", entry_point + "ARB", entry_point + "OES"]:
+ if ep in both_extension_commands:
+ extension = True
+ for extension in both_extension_commands[ep]:
+ safe_append(both_extension_requirements, extension, (entry_point, ep))
+
+ else:
+ if ep in gl_extension_commands:
+ extension = True
+ for extension in gl_extension_commands[ep]:
+ safe_append(gl_extension_requirements, extension, (entry_point, ep))
+
+ if ep in gles2_extension_commands:
+ extension = True
+ for extension in gles2_extension_commands[ep]:
+ full_ep = ep
+ if '_KHR_' in extension:
+ full_ep += 'KHR'
+ safe_append(gles2_extension_requirements, extension, (entry_point, full_ep))
+
+ if not (gl_required or gles2_required or extension):
+ raise Exception('Entry point ' + entry_point + ' not found in the xml.')
+
+# Template for the header declaration of the dispatch table.
+dispatch_table_header_template = """// GENERATED FILE - DO NOT EDIT.
+// Generated by {script_name} using data from {data_source_name} and gl.xml.
+//
+// Copyright {year} The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// {file_name}:
+// Defines the native binding interface for ANGLE's OpenGL back-end.
+
+#ifndef LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
+#define LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
+
+#include "common/angleutils.h"
+#include "libANGLE/renderer/gl/functionsgl_typedefs.h"
+
+#include <set>
+
+namespace gl
+{{
+struct Version;
+}} // namespace gl
+
+namespace rx
+{{
+class DispatchTableGL : angle::NonCopyable
+{{
+ public:
+{table_data}
+
+ protected:
+ virtual void *loadProcAddress(const std::string &function) const = 0;
+
+ void initProcsDesktopGL(const gl::Version &version, const std::set<std::string> &extensions);
+ void initProcsGLES(const gl::Version &version, const std::set<std::string> &extensions);
+ void initProcsSharedExtensions(const std::set<std::string> &extensions);
+}};
+
+}} // namespace rx
+
+#endif // LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
+"""
+
+def first_lower(str):
+ return str[:1].lower() + str[1:]
+
+def format_ep_decl(entry_point):
+ return " PFNGL" + entry_point.upper() + "PROC " + first_lower(entry_point) + " = nullptr;"
+
+table_data = []
+for comment, entry_points in sorted(json_data.iteritems()):
+ formatted = [" // " + comment]
+ formatted += [format_ep_decl(entry_point) for entry_point in sorted(entry_points)]
+
+ table_data.append("\n".join(formatted))
+
+dispatch_table_header = dispatch_table_header_template.format(
+ script_name = os.path.basename(sys.argv[0]),
+ data_source_name = data_source_name,
+ year = date.today().year,
+ file_name = dispatch_header_path,
+ table_data = "\n\n".join(table_data))
+
+with open(dispatch_header_path, "w") as out:
+ out.write(dispatch_table_header)
+
+# Template for the initialization file of the dispatch table.
+dispatch_table_source_template = """// GENERATED FILE - DO NOT EDIT.
+// Generated by {script_name} using data from {data_source_name} and gl.xml.
+//
+// Copyright {year} The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+// {file_name}:
+// Initialize the native bindings for ANGLE's OpenGL back-end.
+
+#include "libANGLE/renderer/gl/DispatchTableGL_autogen.h"
+
+#include "libANGLE/Version.h"
+#include "libANGLE/renderer/gl/FunctionsGL.h"
+
+// Check for nullptr so extensions do not overwrite core imports.
+#define ASSIGN(NAME, FP) if (!FP) *reinterpret_cast<void **>(&FP) = loadProcAddress(NAME)
+
+namespace rx
+{{
+
+void DispatchTableGL::initProcsDesktopGL(const gl::Version &version, const std::set<std::string> &extensions)
+{{
+{gl_data}
+
+{gl_extensions_data}
+}}
+
+void DispatchTableGL::initProcsGLES(const gl::Version &version, const std::set<std::string> &extensions)
+{{
+{gles2_data}
+
+{gles2_extensions_data}
+}}
+
+void DispatchTableGL::initProcsSharedExtensions(const std::set<std::string> &extensions)
+{{
+{both_extensions_data}
+}}
+
+}} // namespace rx
+"""
+
+def format_assign_ep(entry_point, ep):
+ return ' ASSIGN("' + ep + '", ' + first_lower(entry_point[2:]) + ');'
+
+def format_requirements_lines(required, entry_points):
+ major, minor = required
+ lines = [' if (version >= gl::Version(' + major + ', ' + minor + '))', ' {']
+ lines += [format_assign_ep(entry_point, entry_point) for entry_point in sorted(entry_points)]
+ lines += [' }']
+ return '\n'.join(lines)
+
+def format_extension_requirements_lines(extension, entry_points, api):
+ lines = [' if (extensions.count("' + extension + '") != 0)', ' {']
+ lines += [format_assign_ep(entry_point, ep) for entry_point, ep in sorted(entry_points)]
+ lines += [' }']
+ return '\n'.join(lines)
+
+gl_data = []
+for gl_required, entry_points in sorted(gl_requirements.iteritems()):
+ gl_data.append(format_requirements_lines(gl_required, entry_points))
+
+gl_extensions_data = []
+for extension, entry_points in sorted(gl_extension_requirements.iteritems()):
+ gl_extensions_data.append(format_extension_requirements_lines(extension, entry_points, "gl"))
+
+gles2_data = []
+for gles2_required, entry_points in sorted(gles2_requirements.iteritems()):
+ gles2_data.append(format_requirements_lines(gles2_required, entry_points))
+
+gles2_extensions_data = []
+for extension, entry_points in sorted(gles2_extension_requirements.iteritems()):
+ gles2_extensions_data.append(format_extension_requirements_lines(extension, entry_points, "gles2"))
+
+both_extensions_data = []
+for extension, entry_points in sorted(both_extension_requirements.iteritems()):
+ both_extensions_data.append(format_extension_requirements_lines(extension, entry_points, "gles2|gl"))
+
+dispatch_table_source = dispatch_table_source_template.format(
+ script_name = os.path.basename(sys.argv[0]),
+ data_source_name = data_source_name,
+ year = date.today().year,
+ file_name = dispatch_source_path,
+ gl_data = "\n\n".join(gl_data),
+ gl_extensions_data = "\n\n".join(gl_extensions_data),
+ gles2_data = "\n\n".join(gles2_data),
+ gles2_extensions_data = "\n\n".join(gles2_extensions_data),
+ both_extensions_data = "\n\n".join(both_extensions_data))
+
+with open(dispatch_source_path, "w") as out:
+ out.write(dispatch_table_source)
diff --git a/src/libANGLE/renderer/gl/gl_bindings_data.json b/src/libANGLE/renderer/gl/gl_bindings_data.json
new file mode 100644
index 0000000..d4e0a2f
--- /dev/null
+++ b/src/libANGLE/renderer/gl/gl_bindings_data.json
@@ -0,0 +1,787 @@
+{
+ "1.0":
+ [
+ "BlendFunc",
+ "Clear",
+ "ClearColor",
+ "ClearDepth",
+ "ClearStencil",
+ "ColorMask",
+ "CullFace",
+ "DepthFunc",
+ "DepthMask",
+ "DepthRange",
+ "Disable",
+ "DrawBuffer",
+ "Enable",
+ "Finish",
+ "Flush",
+ "FrontFace",
+ "GetBooleanv",
+ "GetDoublev",
+ "GetError",
+ "GetFloatv",
+ "GetIntegerv",
+ "GetString",
+ "GetTexImage",
+ "GetTexLevelParameterfv",
+ "GetTexLevelParameteriv",
+ "GetTexParameterfv",
+ "GetTexParameteriv",
+ "Hint",
+ "IsEnabled",
+ "LineWidth",
+ "LogicOp",
+ "PixelStoref",
+ "PixelStorei",
+ "PointSize",
+ "PolygonMode",
+ "ReadBuffer",
+ "ReadPixels",
+ "Scissor",
+ "StencilFunc",
+ "StencilMask",
+ "StencilOp",
+ "TexImage1D",
+ "TexImage2D",
+ "TexParameterf",
+ "TexParameterfv",
+ "TexParameteri",
+ "TexParameteriv",
+ "Viewport"
+ ],
+
+ "1.1":
+ [
+ "BindTexture",
+ "CopyTexImage1D",
+ "CopyTexImage2D",
+ "CopyTexSubImage1D",
+ "CopyTexSubImage2D",
+ "DeleteTextures",
+ "DrawArrays",
+ "DrawElements",
+ "GenTextures",
+ "IsTexture",
+ "PolygonOffset",
+ "TexSubImage1D",
+ "TexSubImage2D"
+ ],
+
+ "1.2":
+ [
+ "BlendColor",
+ "BlendEquation",
+ "CopyTexSubImage3D",
+ "DrawRangeElements",
+ "TexImage3D",
+ "TexSubImage3D"
+ ],
+
+ "1.2 Extensions":
+ [
+ "DeleteFencesNV",
+ "GenFencesNV",
+ "IsFenceNV",
+ "TestFenceNV",
+ "GetFenceivNV",
+ "FinishFenceNV",
+ "SetFenceNV"
+ ],
+
+ "1.3":
+ [
+ "ActiveTexture",
+ "CompressedTexImage1D",
+ "CompressedTexImage2D",
+ "CompressedTexImage3D",
+ "CompressedTexSubImage1D",
+ "CompressedTexSubImage2D",
+ "CompressedTexSubImage3D",
+ "GetCompressedTexImage",
+ "SampleCoverage"
+ ],
+
+ "1.4":
+ [
+ "BlendFuncSeparate",
+ "MultiDrawArrays",
+ "MultiDrawElements",
+ "PointParameterf",
+ "PointParameterfv",
+ "PointParameteri",
+ "PointParameteriv"
+ ],
+
+ "1.5":
+ [
+ "BeginQuery",
+ "BindBuffer",
+ "BufferData",
+ "BufferSubData",
+ "DeleteBuffers",
+ "DeleteQueries",
+ "EndQuery",
+ "GenBuffers",
+ "GenQueries",
+ "GetBufferParameteriv",
+ "GetBufferPointerv",
+ "GetBufferSubData",
+ "GetQueryObjectiv",
+ "GetQueryObjectuiv",
+ "GetQueryiv",
+ "IsBuffer",
+ "IsQuery",
+ "MapBuffer",
+ "UnmapBuffer"
+ ],
+
+ "2.0":
+ [
+ "AttachShader",
+ "BindAttribLocation",
+ "BlendEquationSeparate",
+ "CompileShader",
+ "CreateProgram",
+ "CreateShader",
+ "DeleteProgram",
+ "DeleteShader",
+ "DetachShader",
+ "DisableVertexAttribArray",
+ "DrawBuffers",
+ "EnableVertexAttribArray",
+ "GetActiveAttrib",
+ "GetActiveUniform",
+ "GetAttachedShaders",
+ "GetAttribLocation",
+ "GetProgramInfoLog",
+ "GetProgramiv",
+ "GetShaderInfoLog",
+ "GetShaderSource",
+ "GetShaderiv",
+ "GetUniformLocation",
+ "GetUniformfv",
+ "GetUniformiv",
+ "GetVertexAttribPointerv",
+ "GetVertexAttribdv",
+ "GetVertexAttribfv",
+ "GetVertexAttribiv",
+ "IsProgram",
+ "IsShader",
+ "LinkProgram",
+ "ShaderSource",
+ "StencilFuncSeparate",
+ "StencilMaskSeparate",
+ "StencilOpSeparate",
+ "Uniform1f",
+ "Uniform1fv",
+ "Uniform1i",
+ "Uniform1iv",
+ "Uniform2f",
+ "Uniform2fv",
+ "Uniform2i",
+ "Uniform2iv",
+ "Uniform3f",
+ "Uniform3fv",
+ "Uniform3i",
+ "Uniform3iv",
+ "Uniform4f",
+ "Uniform4fv",
+ "Uniform4i",
+ "Uniform4iv",
+ "UniformMatrix2fv",
+ "UniformMatrix3fv",
+ "UniformMatrix4fv",
+ "UseProgram",
+ "ValidateProgram",
+ "VertexAttrib1d",
+ "VertexAttrib1dv",
+ "VertexAttrib1f",
+ "VertexAttrib1fv",
+ "VertexAttrib1s",
+ "VertexAttrib1sv",
+ "VertexAttrib2d",
+ "VertexAttrib2dv",
+ "VertexAttrib2f",
+ "VertexAttrib2fv",
+ "VertexAttrib2s",
+ "VertexAttrib2sv",
+ "VertexAttrib3d",
+ "VertexAttrib3dv",
+ "VertexAttrib3f",
+ "VertexAttrib3fv",
+ "VertexAttrib3s",
+ "VertexAttrib3sv",
+ "VertexAttrib4Nbv",
+ "VertexAttrib4Niv",
+ "VertexAttrib4Nsv",
+ "VertexAttrib4Nub",
+ "VertexAttrib4Nubv",
+ "VertexAttrib4Nuiv",
+ "VertexAttrib4Nusv",
+ "VertexAttrib4bv",
+ "VertexAttrib4d",
+ "VertexAttrib4dv",
+ "VertexAttrib4f",
+ "VertexAttrib4fv",
+ "VertexAttrib4iv",
+ "VertexAttrib4s",
+ "VertexAttrib4sv",
+ "VertexAttrib4ubv",
+ "VertexAttrib4uiv",
+ "VertexAttrib4usv",
+ "VertexAttribPointer"
+ ],
+
+ "2.1":
+ [
+ "UniformMatrix2x3fv",
+ "UniformMatrix2x4fv",
+ "UniformMatrix3x2fv",
+ "UniformMatrix3x4fv",
+ "UniformMatrix4x2fv",
+ "UniformMatrix4x3fv"
+ ],
+
+ "3.0":
+ [
+ "BeginConditionalRender",
+ "BeginTransformFeedback",
+ "BindBufferBase",
+ "BindBufferRange",
+ "BindFragDataLocation",
+ "BindFramebuffer",
+ "BindRenderbuffer",
+ "BindVertexArray",
+ "BlitFramebuffer",
+ "CheckFramebufferStatus",
+ "ClampColor",
+ "ClearBufferfi",
+ "ClearBufferfv",
+ "ClearBufferiv",
+ "ClearBufferuiv",
+ "ColorMaski",
+ "DeleteFramebuffers",
+ "DeleteRenderbuffers",
+ "DeleteVertexArrays",
+ "Disablei",
+ "Enablei",
+ "EndConditionalRender",
+ "EndTransformFeedback",
+ "FlushMappedBufferRange",
+ "FramebufferRenderbuffer",
+ "FramebufferTexture1D",
+ "FramebufferTexture2D",
+ "FramebufferTexture3D",
+ "FramebufferTextureLayer",
+ "GenFramebuffers",
+ "GenRenderbuffers",
+ "GenVertexArrays",
+ "GenerateMipmap",
+ "GetBooleani_v",
+ "GetFragDataLocation",
+ "GetFramebufferAttachmentParameteriv",
+ "GetIntegeri_v",
+ "GetRenderbufferParameteriv",
+ "GetStringi",
+ "GetTexParameterIiv",
+ "GetTexParameterIuiv",
+ "GetTransformFeedbackVarying",
+ "GetUniformuiv",
+ "GetVertexAttribIiv",
+ "GetVertexAttribIuiv",
+ "IsEnabledi",
+ "IsFramebuffer",
+ "IsRenderbuffer",
+ "IsVertexArray",
+ "MapBufferRange",
+ "RenderbufferStorage",
+ "RenderbufferStorageMultisample",
+ "TexParameterIiv",
+ "TexParameterIuiv",
+ "TransformFeedbackVaryings",
+ "Uniform1ui",
+ "Uniform1uiv",
+ "Uniform2ui",
+ "Uniform2uiv",
+ "Uniform3ui",
+ "Uniform3uiv",
+ "Uniform4ui",
+ "Uniform4uiv",
+ "VertexAttribI1i",
+ "VertexAttribI1iv",
+ "VertexAttribI1ui",
+ "VertexAttribI1uiv",
+ "VertexAttribI2i",
+ "VertexAttribI2iv",
+ "VertexAttribI2ui",
+ "VertexAttribI2uiv",
+ "VertexAttribI3i",
+ "VertexAttribI3iv",
+ "VertexAttribI3ui",
+ "VertexAttribI3uiv",
+ "VertexAttribI4bv",
+ "VertexAttribI4i",
+ "VertexAttribI4iv",
+ "VertexAttribI4sv",
+ "VertexAttribI4ubv",
+ "VertexAttribI4ui",
+ "VertexAttribI4uiv",
+ "VertexAttribI4usv",
+ "VertexAttribIPointer"
+ ],
+
+ "3.1":
+ [
+ "CopyBufferSubData",
+ "DrawArraysInstanced",
+ "DrawElementsInstanced",
+ "GetActiveUniformBlockName",
+ "GetActiveUniformBlockiv",
+ "GetActiveUniformName",
+ "GetActiveUniformsiv",
+ "GetUniformBlockIndex",
+ "GetUniformIndices",
+ "PrimitiveRestartIndex",
+ "TexBuffer",
+ "UniformBlockBinding"
+ ],
+
+ "3.2":
+ [
+ "ClientWaitSync",
+ "DeleteSync",
+ "DrawElementsBaseVertex",
+ "DrawElementsInstancedBaseVertex",
+ "DrawRangeElementsBaseVertex",
+ "FenceSync",
+ "FramebufferTexture",
+ "GetBufferParameteri64v",
+ "GetInteger64i_v",
+ "GetInteger64v",
+ "GetMultisamplefv",
+ "GetSynciv",
+ "IsSync",
+ "MultiDrawElementsBaseVertex",
+ "ProvokingVertex",
+ "SampleMaski",
+ "TexImage2DMultisample",
+ "TexImage3DMultisample",
+ "WaitSync"
+ ],
+
+ "NV_path_rendering (originally written against 3.2 compatibility profile)":
+ [
+ "MatrixLoadfEXT",
+ "GenPathsNV",
+ "DeletePathsNV",
+ "PathCommandsNV",
+ "IsPathNV",
+ "PathParameterfNV",
+ "PathParameteriNV",
+ "GetPathParameterfvNV",
+ "GetPathParameterivNV",
+ "PathStencilFuncNV",
+ "StencilFillPathNV",
+ "StencilStrokePathNV",
+ "CoverFillPathNV",
+ "CoverStrokePathNV",
+ "StencilThenCoverFillPathNV",
+ "StencilThenCoverStrokePathNV",
+ "CoverFillPathInstancedNV",
+ "CoverStrokePathInstancedNV",
+ "StencilFillPathInstancedNV",
+ "StencilStrokePathInstancedNV",
+ "StencilThenCoverFillPathInstancedNV",
+ "StencilThenCoverStrokePathInstancedNV",
+ "ProgramPathFragmentInputGenNV"
+ ],
+
+ "3.3":
+ [
+ "BindFragDataLocationIndexed",
+ "BindSampler",
+ "DeleteSamplers",
+ "GenSamplers",
+ "GetFragDataIndex",
+ "GetQueryObjecti64v",
+ "GetQueryObjectui64v",
+ "GetSamplerParameterIiv",
+ "GetSamplerParameterIuiv",
+ "GetSamplerParameterfv",
+ "GetSamplerParameteriv",
+ "IsSampler",
+ "QueryCounter",
+ "SamplerParameterIiv",
+ "SamplerParameterIuiv",
+ "SamplerParameterf",
+ "SamplerParameterfv",
+ "SamplerParameteri",
+ "SamplerParameteriv",
+ "VertexAttribDivisor",
+ "VertexAttribP1ui",
+ "VertexAttribP1uiv",
+ "VertexAttribP2ui",
+ "VertexAttribP2uiv",
+ "VertexAttribP3ui",
+ "VertexAttribP3uiv",
+ "VertexAttribP4ui",
+ "VertexAttribP4uiv"
+ ],
+
+ "4.0":
+ [
+ "BeginQueryIndexed",
+ "BindTransformFeedback",
+ "BlendEquationSeparatei",
+ "BlendEquationi",
+ "BlendFuncSeparatei",
+ "BlendFunci",
+ "DeleteTransformFeedbacks",
+ "DrawArraysIndirect",
+ "DrawElementsIndirect",
+ "DrawTransformFeedback",
+ "DrawTransformFeedbackStream",
+ "EndQueryIndexed",
+ "GenTransformFeedbacks",
+ "GetActiveSubroutineName",
+ "GetActiveSubroutineUniformName",
+ "GetActiveSubroutineUniformiv",
+ "GetProgramStageiv",
+ "GetQueryIndexediv",
+ "GetSubroutineIndex",
+ "GetSubroutineUniformLocation",
+ "GetUniformSubroutineuiv",
+ "GetUniformdv",
+ "IsTransformFeedback",
+ "MinSampleShading",
+ "PatchParameterfv",
+ "PatchParameteri",
+ "PauseTransformFeedback",
+ "ResumeTransformFeedback",
+ "Uniform1d",
+ "Uniform1dv",
+ "Uniform2d",
+ "Uniform2dv",
+ "Uniform3d",
+ "Uniform3dv",
+ "Uniform4d",
+ "Uniform4dv",
+ "UniformMatrix2dv",
+ "UniformMatrix2x3dv",
+ "UniformMatrix2x4dv",
+ "UniformMatrix3dv",
+ "UniformMatrix3x2dv",
+ "UniformMatrix3x4dv",
+ "UniformMatrix4dv",
+ "UniformMatrix4x2dv",
+ "UniformMatrix4x3dv",
+ "UniformSubroutinesuiv"
+ ],
+
+ "4.1":
+ [
+ "ActiveShaderProgram",
+ "BindProgramPipeline",
+ "ClearDepthf",
+ "CreateShaderProgramv",
+ "DeleteProgramPipelines",
+ "DepthRangeArrayv",
+ "DepthRangeIndexed",
+ "DepthRangef",
+ "GenProgramPipelines",
+ "GetDoublei_v",
+ "GetFloati_v",
+ "GetProgramBinary",
+ "GetProgramPipelineInfoLog",
+ "GetProgramPipelineiv",
+ "GetShaderPrecisionFormat",
+ "GetVertexAttribLdv",
+ "IsProgramPipeline",
+ "ProgramBinary",
+ "ProgramParameteri",
+ "ProgramUniform1d",
+ "ProgramUniform1dv",
+ "ProgramUniform1f",
+ "ProgramUniform1fv",
+ "ProgramUniform1i",
+ "ProgramUniform1iv",
+ "ProgramUniform1ui",
+ "ProgramUniform1uiv",
+ "ProgramUniform2d",
+ "ProgramUniform2dv",
+ "ProgramUniform2f",
+ "ProgramUniform2fv",
+ "ProgramUniform2i",
+ "ProgramUniform2iv",
+ "ProgramUniform2ui",
+ "ProgramUniform2uiv",
+ "ProgramUniform3d",
+ "ProgramUniform3dv",
+ "ProgramUniform3f",
+ "ProgramUniform3fv",
+ "ProgramUniform3i",
+ "ProgramUniform3iv",
+ "ProgramUniform3ui",
+ "ProgramUniform3uiv",
+ "ProgramUniform4d",
+ "ProgramUniform4dv",
+ "ProgramUniform4f",
+ "ProgramUniform4fv",
+ "ProgramUniform4i",
+ "ProgramUniform4iv",
+ "ProgramUniform4ui",
+ "ProgramUniform4uiv",
+ "ProgramUniformMatrix2dv",
+ "ProgramUniformMatrix2fv",
+ "ProgramUniformMatrix2x3dv",
+ "ProgramUniformMatrix2x3fv",
+ "ProgramUniformMatrix2x4dv",
+ "ProgramUniformMatrix2x4fv",
+ "ProgramUniformMatrix3dv",
+ "ProgramUniformMatrix3fv",
+ "ProgramUniformMatrix3x2dv",
+ "ProgramUniformMatrix3x2fv",
+ "ProgramUniformMatrix3x4dv",
+ "ProgramUniformMatrix3x4fv",
+ "ProgramUniformMatrix4dv",
+ "ProgramUniformMatrix4fv",
+ "ProgramUniformMatrix4x2dv",
+ "ProgramUniformMatrix4x2fv",
+ "ProgramUniformMatrix4x3dv",
+ "ProgramUniformMatrix4x3fv",
+ "ReleaseShaderCompiler",
+ "ScissorArrayv",
+ "ScissorIndexed",
+ "ScissorIndexedv",
+ "ShaderBinary",
+ "UseProgramStages",
+ "ValidateProgramPipeline",
+ "VertexAttribL1d",
+ "VertexAttribL1dv",
+ "VertexAttribL2d",
+ "VertexAttribL2dv",
+ "VertexAttribL3d",
+ "VertexAttribL3dv",
+ "VertexAttribL4d",
+ "VertexAttribL4dv",
+ "VertexAttribLPointer",
+ "ViewportArrayv",
+ "ViewportIndexedf",
+ "ViewportIndexedfv"
+ ],
+
+ "4.2":
+ [
+ "BindImageTexture",
+ "DrawArraysInstancedBaseInstance",
+ "DrawElementsInstancedBaseInstance",
+ "DrawElementsInstancedBaseVertexBaseInstance",
+ "DrawTransformFeedbackInstanced",
+ "DrawTransformFeedbackStreamInstanced",
+ "GetActiveAtomicCounterBufferiv",
+ "GetInternalformativ",
+ "MemoryBarrier",
+ "TexStorage1D",
+ "TexStorage2D",
+ "TexStorage3D"
+ ],
+
+ "4.3":
+ [
+ "BindVertexBuffer",
+ "ClearBufferData",
+ "ClearBufferSubData",
+ "CopyImageSubData",
+ "DebugMessageCallback",
+ "DebugMessageControl",
+ "DebugMessageInsert",
+ "DispatchCompute",
+ "DispatchComputeIndirect",
+ "FramebufferParameteri",
+ "GetDebugMessageLog",
+ "GetFramebufferParameteriv",
+ "GetInternalformati64v",
+ "GetPointerv",
+ "GetObjectLabel",
+ "GetObjectPtrLabel",
+ "GetProgramInterfaceiv",
+ "GetProgramResourceIndex",
+ "GetProgramResourceLocation",
+ "GetProgramResourceLocationIndex",
+ "GetProgramResourceName",
+ "GetProgramResourceiv",
+ "InvalidateBufferData",
+ "InvalidateBufferSubData",
+ "InvalidateFramebuffer",
+ "InvalidateSubFramebuffer",
+ "InvalidateTexImage",
+ "InvalidateTexSubImage",
+ "MultiDrawArraysIndirect",
+ "MultiDrawElementsIndirect",
+ "ObjectLabel",
+ "ObjectPtrLabel",
+ "PopDebugGroup",
+ "PushDebugGroup",
+ "ShaderStorageBlockBinding",
+ "TexBufferRange",
+ "TexStorage2DMultisample",
+ "TexStorage3DMultisample",
+ "TextureView",
+ "VertexAttribBinding",
+ "VertexAttribFormat",
+ "VertexAttribIFormat",
+ "VertexAttribLFormat",
+ "VertexBindingDivisor",
+ "CoverageModulationNV"
+ ],
+
+ "4.4":
+ [
+ "BindBuffersBase",
+ "BindBuffersRange",
+ "BindImageTextures",
+ "BindSamplers",
+ "BindTextures",
+ "BindVertexBuffers",
+ "BufferStorage",
+ "ClearTexImage",
+ "ClearTexSubImage"
+ ],
+
+ "4.5":
+ [
+ "BindTextureUnit",
+ "BlitNamedFramebuffer",
+ "CheckNamedFramebufferStatus",
+ "ClearNamedBufferData",
+ "ClearNamedBufferSubData",
+ "ClearNamedFramebufferfi",
+ "ClearNamedFramebufferfv",
+ "ClearNamedFramebufferiv",
+ "ClearNamedFramebufferuiv",
+ "ClipControl",
+ "CompressedTextureSubImage1D",
+ "CompressedTextureSubImage2D",
+ "CompressedTextureSubImage3D",
+ "CopyNamedBufferSubData",
+ "CopyTextureSubImage1D",
+ "CopyTextureSubImage2D",
+ "CopyTextureSubImage3D",
+ "CreateBuffers",
+ "CreateFramebuffers",
+ "CreateProgramPipelines",
+ "CreateQueries",
+ "CreateRenderbuffers",
+ "CreateSamplers",
+ "CreateTextures",
+ "CreateTransformFeedbacks",
+ "CreateVertexArrays",
+ "DisableVertexArrayAttrib",
+ "EnableVertexArrayAttrib",
+ "FlushMappedNamedBufferRange",
+ "GenerateTextureMipmap",
+ "GetCompressedTextureImage",
+ "GetCompressedTextureSubImage",
+ "GetGraphicsResetStatus",
+ "GetNamedBufferParameteri64v",
+ "GetNamedBufferParameteriv",
+ "GetNamedBufferPointerv",
+ "GetNamedBufferSubData",
+ "GetNamedFramebufferAttachmentParameteriv",
+ "GetNamedFramebufferParameteriv",
+ "GetNamedRenderbufferParameteriv",
+ "GetQueryBufferObjecti64v",
+ "GetQueryBufferObjectiv",
+ "GetQueryBufferObjectui64v",
+ "GetQueryBufferObjectuiv",
+ "GetTextureImage",
+ "GetTextureLevelParameterfv",
+ "GetTextureLevelParameteriv",
+ "GetTextureParameterIiv",
+ "GetTextureParameterIuiv",
+ "GetTextureParameterfv",
+ "GetTextureParameteriv",
+ "GetTextureSubImage",
+ "GetTransformFeedbacki64_v",
+ "GetTransformFeedbacki_v",
+ "GetTransformFeedbackiv",
+ "GetVertexArrayIndexed64iv",
+ "GetVertexArrayIndexediv",
+ "GetVertexArrayiv",
+ "GetnCompressedTexImage",
+ "GetnTexImage",
+ "GetnUniformdv",
+ "GetnUniformfv",
+ "GetnUniformiv",
+ "GetnUniformuiv",
+ "InvalidateNamedFramebufferData",
+ "InvalidateNamedFramebufferSubData",
+ "MapNamedBuffer",
+ "MapNamedBufferRange",
+ "MemoryBarrierByRegion",
+ "NamedBufferData",
+ "NamedBufferStorage",
+ "NamedBufferSubData",
+ "NamedFramebufferDrawBuffer",
+ "NamedFramebufferDrawBuffers",
+ "NamedFramebufferParameteri",
+ "NamedFramebufferReadBuffer",
+ "NamedFramebufferRenderbuffer",
+ "NamedFramebufferTexture",
+ "NamedFramebufferTextureLayer",
+ "NamedRenderbufferStorage",
+ "NamedRenderbufferStorageMultisample",
+ "ReadnPixels",
+ "TextureBarrier",
+ "TextureBuffer",
+ "TextureBufferRange",
+ "TextureParameterIiv",
+ "TextureParameterIuiv",
+ "TextureParameterf",
+ "TextureParameterfv",
+ "TextureParameteri",
+ "TextureParameteriv",
+ "TextureStorage1D",
+ "TextureStorage2D",
+ "TextureStorage2DMultisample",
+ "TextureStorage3D",
+ "TextureStorage3DMultisample",
+ "TextureSubImage1D",
+ "TextureSubImage2D",
+ "TextureSubImage3D",
+ "TransformFeedbackBufferBase",
+ "TransformFeedbackBufferRange",
+ "UnmapNamedBuffer",
+ "VertexArrayAttribBinding",
+ "VertexArrayAttribFormat",
+ "VertexArrayAttribIFormat",
+ "VertexArrayAttribLFormat",
+ "VertexArrayBindingDivisor",
+ "VertexArrayElementBuffer",
+ "VertexArrayVertexBuffer",
+ "VertexArrayVertexBuffers"
+ ],
+
+ "ES 3.2":
+ [
+ "BlendBarrier",
+ "PrimitiveBoundingBox"
+ ],
+
+ "GL_OES_EGL_image":
+ [
+ "EGLImageTargetRenderbufferStorageOES",
+ "EGLImageTargetTexture2DOES"
+ ],
+
+ "GL_EXT_discard_framebuffer":
+ [
+ "DiscardFramebufferEXT"
+ ],
+
+ "GL_NV_internalformat_sample_query":
+ [
+ "GetInternalformatSampleivNV"
+ ]
+}
diff --git a/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp b/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
index d4929de..c97d327 100644
--- a/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
+++ b/src/libANGLE/renderer/gl/glx/DisplayGLX.cpp
@@ -49,7 +49,7 @@
~FunctionsGLGLX() override {}
private:
- void *loadProcAddress(const std::string &function) override
+ void *loadProcAddress(const std::string &function) const override
{
return reinterpret_cast<void*>(mGetProc(function.c_str()));
}
diff --git a/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp b/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
index 169eb5d..cb9db8a 100644
--- a/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
+++ b/src/libANGLE/renderer/gl/wgl/DisplayWGL.cpp
@@ -44,7 +44,7 @@
~FunctionsGLWindows() override {}
private:
- void *loadProcAddress(const std::string &function) override
+ void *loadProcAddress(const std::string &function) const override
{
void *proc = reinterpret_cast<void*>(mGetProcAddressWGL(function.c_str()));
if (!proc)
diff --git a/src/libGLESv2.gypi b/src/libGLESv2.gypi
index 055e5ef..7b4fa2f 100644
--- a/src/libGLESv2.gypi
+++ b/src/libGLESv2.gypi
@@ -574,6 +574,8 @@
'libANGLE/renderer/gl/CompilerGL.h',
'libANGLE/renderer/gl/ContextGL.cpp',
'libANGLE/renderer/gl/ContextGL.h',
+ 'libANGLE/renderer/gl/DispatchTableGL_autogen.cpp',
+ 'libANGLE/renderer/gl/DispatchTableGL_autogen.h',
'libANGLE/renderer/gl/DisplayGL.cpp',
'libANGLE/renderer/gl/DisplayGL.h',
'libANGLE/renderer/gl/FenceNVGL.cpp',