Commit 29ddcc99 by Jamie Madill Committed by Commit Bot

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: 's avatarYuly Novikov <ynovikov@chromium.org>
parent 76e471e9
......@@ -44460,6 +44460,7 @@ typedef unsigned int GLhandleARB;
<command name="glIsPointInStrokePathNV"/>
<command name="glGetPathLengthNV"/>
<command name="glPointAlongPathNV"/>
<command name="glMatrixLoadfEXT"/>
</require>
<require comment="API revision 1.2">
<enum name="GL_ROUNDED_RECT_NV"/>
......@@ -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);
......
......@@ -20,7 +20,7 @@ constexpr Version::Version()
#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 @@ inline bool operator>(const Version &a, const Version &b)
return std::tie(a.major, a.minor) > std::tie(b.major, b.minor);
}
}
} // namespace gl
This source diff could not be displayed because it is too large. You can view the blob instead.
// 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_
......@@ -250,11 +250,11 @@ Error FramebufferGL::invalidate(const gl::Context *context, size_t count, const
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();
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -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 @@ enum StandardGL
STANDARD_GL_ES,
};
class FunctionsGL
class FunctionsGL : public DispatchTableGL
{
public:
FunctionsGL();
......@@ -45,753 +46,8 @@ class FunctionsGL
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_
......@@ -32,7 +32,7 @@ gl::Error PathGL::setCommands(GLsizei numCommands,
void PathGL::setPathParameter(GLenum pname, GLfloat value)
{
mFunctions->setPathParameterfNV(mPathID, pname, value);
mFunctions->pathParameterfNV(mPathID, pname, value);
}
} // rx
......@@ -2162,7 +2162,7 @@ void StateManagerGL::setPathRenderingModelViewMatrix(const GLfloat *m)
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 @@ void StateManagerGL::setPathRenderingProjectionMatrix(const GLfloat *m)
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);
}
......
......@@ -36,7 +36,7 @@ class FunctionsGLCGL : public FunctionsGL
~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());
}
......
......@@ -200,7 +200,7 @@ class FunctionsGLEGL : public FunctionsGL
~FunctionsGLEGL() override {}
private:
void *loadProcAddress(const std::string &function) override
void *loadProcAddress(const std::string &function) const override
{
return mEGL.getProcAddress(function.c_str());
}
......
......@@ -218,7 +218,7 @@ bool DisplayOzone::Buffer::resize(int32_t width, int32_t height)
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 @@ bool DisplayOzone::Buffer::initialize(int width, int height)
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 @@ GLuint DisplayOzone::Buffer::getTexture()
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;
}
......
......@@ -753,6 +753,143 @@ typedef void (INTERNAL_GL_APIENTRY *PFNGLVERTEXARRAYELEMENTBUFFERPROC)(GLuint, G
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_
#!/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)
{
"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"
]
}
......@@ -49,7 +49,7 @@ class FunctionsGLGLX : public FunctionsGL
~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()));
}
......
......@@ -44,7 +44,7 @@ class FunctionsGLWindows : public FunctionsGL
~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)
......
......@@ -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',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment