summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h')
-rwxr-xr-xgfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h791
1 files changed, 791 insertions, 0 deletions
diff --git a/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h b/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
new file mode 100755
index 000000000..fa8634e57
--- /dev/null
+++ b/gfx/angle/src/libANGLE/renderer/gl/FunctionsGL.h
@@ -0,0 +1,791 @@
+//
+// Copyright (c) 2015 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.
+//
+
+// FunctionsGL.h: Defines the FuntionsGL class to contain loaded GL functions
+
+#ifndef LIBANGLE_RENDERER_GL_FUNCTIONSGL_H_
+#define LIBANGLE_RENDERER_GL_FUNCTIONSGL_H_
+
+#include "common/debug.h"
+#include "libANGLE/Version.h"
+#include "libANGLE/renderer/gl/functionsgl_enums.h"
+#include "libANGLE/renderer/gl/functionsgl_typedefs.h"
+
+namespace rx
+{
+
+enum StandardGL
+{
+ STANDARD_GL_DESKTOP,
+ STANDARD_GL_ES,
+};
+
+class FunctionsGL
+{
+ public:
+ FunctionsGL();
+ virtual ~FunctionsGL();
+
+ void initialize();
+
+ // Version information
+ gl::Version version;
+ StandardGL standard;
+ GLint profile;
+ bool isAtLeastGL(const gl::Version &glVersion) const;
+ bool isAtMostGL(const gl::Version &glVersion) const;
+ bool isAtLeastGLES(const gl::Version &glesVersion) const;
+ bool isAtMostGLES(const gl::Version &glesVersion) const;
+
+ // Extensions
+ std::vector<std::string> extensions;
+ 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;
+
+ // ES extensions
+ PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eglImageTargetRenderbufferStorageOES;
+ PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eglImageTargetTexture2DOES;
+
+ private:
+ void initializeProcsDesktopGL();
+ void initializeProcsGLES();
+
+ virtual void *loadProcAddress(const std::string &function) = 0;
+};
+
+}
+
+#endif // LIBANGLE_RENDERER_GL_FUNCTIONSGL_H_