diff --git a/Source/Core/Common/Common.vcxproj b/Source/Core/Common/Common.vcxproj
index e6295033b2..d6541d1b31 100644
--- a/Source/Core/Common/Common.vcxproj
+++ b/Source/Core/Common/Common.vcxproj
@@ -97,6 +97,9 @@
+
+
+
diff --git a/Source/Core/Common/Common.vcxproj.filters b/Source/Core/Common/Common.vcxproj.filters
index 9ee2471809..28b01541a4 100644
--- a/Source/Core/Common/Common.vcxproj.filters
+++ b/Source/Core/Common/Common.vcxproj.filters
@@ -189,6 +189,15 @@
GL\GLExtensions
+
+ GL\GLExtensions
+
+
+ GL\GLExtensions
+
+
+ GL\GLExtensions
+
GL\GLExtensions
diff --git a/Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h b/Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h
index a2ee3441b6..386c1bcbc3 100644
--- a/Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h
+++ b/Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h
@@ -37,7 +37,5 @@ typedef void (APIENTRYP PFNDOLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size
typedef void (APIENTRYP PFNDOLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
extern PFNDOLBUFFERSTORAGEPROC dolBufferStorage;
-extern PFNDOLNAMEDBUFFERSTORAGEEXTPROC dolNamedBufferStorageEXT;
#define glBufferStorage dolBufferStorage
-#define glNamedBufferStorageEXT dolNamedBufferStorageEXT
diff --git a/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp b/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp
index 69c11c1030..8f85a2eca3 100644
--- a/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp
+++ b/Source/Core/Common/GL/GLExtensions/GLExtensions.cpp
@@ -648,18 +648,182 @@ PFNDOLGETBUFFERPARAMETERI64VPROC dolGetBufferParameteri64v;
PFNDOLGETINTEGER64I_VPROC dolGetInteger64i_v;
// gl 4_2
-PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
-PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
-PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
-PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
-PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
-PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
-PFNGLMEMORYBARRIERPROC glMemoryBarrier;
-PFNGLTEXSTORAGE1DPROC glTexStorage1D;
-PFNGLTEXSTORAGE2DPROC glTexStorage2D;
-PFNGLTEXSTORAGE3DPROC glTexStorage3D;
-PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
-PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
+PFNDOLDRAWARRAYSINSTANCEDBASEINSTANCEPROC dolDrawArraysInstancedBaseInstance;
+PFNDOLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC dolDrawElementsInstancedBaseInstance;
+PFNDOLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC dolDrawElementsInstancedBaseVertexBaseInstance;
+PFNDOLGETINTERNALFORMATIVPROC dolGetInternalformativ;
+PFNDOLGETACTIVEATOMICCOUNTERBUFFERIVPROC dolGetActiveAtomicCounterBufferiv;
+PFNDOLBINDIMAGETEXTUREPROC dolBindImageTexture;
+PFNDOLMEMORYBARRIERPROC dolMemoryBarrier;
+PFNDOLTEXSTORAGE1DPROC dolTexStorage1D;
+PFNDOLTEXSTORAGE2DPROC dolTexStorage2D;
+PFNDOLTEXSTORAGE3DPROC dolTexStorage3D;
+PFNDOLDRAWTRANSFORMFEEDBACKINSTANCEDPROC dolDrawTransformFeedbackInstanced;
+PFNDOLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC dolDrawTransformFeedbackStreamInstanced;
+
+// gl_4_3
+PFNDOLCLEARBUFFERDATAPROC dolClearBufferData;
+PFNDOLCLEARBUFFERSUBDATAPROC dolClearBufferSubData;
+PFNDOLDISPATCHCOMPUTEPROC dolDispatchCompute;
+PFNDOLDISPATCHCOMPUTEINDIRECTPROC dolDispatchComputeIndirect;
+PFNDOLFRAMEBUFFERPARAMETERIPROC dolFramebufferParameteri;
+PFNDOLGETFRAMEBUFFERPARAMETERIVPROC dolGetFramebufferParameteriv;
+PFNDOLGETINTERNALFORMATI64VPROC dolGetInternalformati64v;
+PFNDOLINVALIDATETEXSUBIMAGEPROC dolInvalidateTexSubImage;
+PFNDOLINVALIDATETEXIMAGEPROC dolInvalidateTexImage;
+PFNDOLINVALIDATEBUFFERSUBDATAPROC dolInvalidateBufferSubData;
+PFNDOLINVALIDATEBUFFERDATAPROC dolInvalidateBufferData;
+PFNDOLINVALIDATEFRAMEBUFFERPROC dolInvalidateFramebuffer;
+PFNDOLINVALIDATESUBFRAMEBUFFERPROC dolInvalidateSubFramebuffer;
+PFNDOLMULTIDRAWARRAYSINDIRECTPROC dolMultiDrawArraysIndirect;
+PFNDOLMULTIDRAWELEMENTSINDIRECTPROC dolMultiDrawElementsIndirect;
+PFNDOLGETPROGRAMINTERFACEIVPROC dolGetProgramInterfaceiv;
+PFNDOLGETPROGRAMRESOURCEINDEXPROC dolGetProgramResourceIndex;
+PFNDOLGETPROGRAMRESOURCENAMEPROC dolGetProgramResourceName;
+PFNDOLGETPROGRAMRESOURCEIVPROC dolGetProgramResourceiv;
+PFNDOLGETPROGRAMRESOURCELOCATIONPROC dolGetProgramResourceLocation;
+PFNDOLGETPROGRAMRESOURCELOCATIONINDEXPROC dolGetProgramResourceLocationIndex;
+PFNDOLTEXBUFFERRANGEPROC dolTexBufferRange;
+PFNDOLTEXTUREVIEWPROC dolTextureView;
+PFNDOLBINDVERTEXBUFFERPROC dolBindVertexBuffer;
+PFNDOLVERTEXATTRIBFORMATPROC dolVertexAttribFormat;
+PFNDOLVERTEXATTRIBIFORMATPROC dolVertexAttribIFormat;
+PFNDOLVERTEXATTRIBLFORMATPROC dolVertexAttribLFormat;
+PFNDOLVERTEXATTRIBBINDINGPROC dolVertexAttribBinding;
+PFNDOLVERTEXBINDINGDIVISORPROC dolVertexBindingDivisor;
+
+// gl_4_4
+PFNDOLCLEARTEXIMAGEPROC dolClearTexImage;
+PFNDOLCLEARTEXSUBIMAGEPROC dolClearTexSubImage;
+PFNDOLBINDBUFFERSBASEPROC dolBindBuffersBase;
+PFNDOLBINDBUFFERSRANGEPROC dolBindBuffersRange;
+PFNDOLBINDTEXTURESPROC dolBindTextures;
+PFNDOLBINDSAMPLERSPROC dolBindSamplers;
+PFNDOLBINDIMAGETEXTURESPROC dolBindImageTextures;
+PFNDOLBINDVERTEXBUFFERSPROC dolBindVertexBuffers;
+
+// gl_4_5
+PFNDOLCREATETRANSFORMFEEDBACKSPROC dolCreateTransformFeedbacks;
+PFNDOLTRANSFORMFEEDBACKBUFFERBASEPROC dolTransformFeedbackBufferBase;
+PFNDOLTRANSFORMFEEDBACKBUFFERRANGEPROC dolTransformFeedbackBufferRange;
+PFNDOLGETTRANSFORMFEEDBACKIVPROC dolGetTransformFeedbackiv;
+PFNDOLGETTRANSFORMFEEDBACKI_VPROC dolGetTransformFeedbacki_v;
+PFNDOLGETTRANSFORMFEEDBACKI64_VPROC dolGetTransformFeedbacki64_v;
+PFNDOLCREATEBUFFERSPROC dolCreateBuffers;
+PFNDOLNAMEDBUFFERSTORAGEPROC dolNamedBufferStorage;
+PFNDOLNAMEDBUFFERDATAPROC dolNamedBufferData;
+PFNDOLNAMEDBUFFERSUBDATAPROC dolNamedBufferSubData;
+PFNDOLCOPYNAMEDBUFFERSUBDATAPROC dolCopyNamedBufferSubData;
+PFNDOLCLEARNAMEDBUFFERDATAPROC dolClearNamedBufferData;
+PFNDOLCLEARNAMEDBUFFERSUBDATAPROC dolClearNamedBufferSubData;
+PFNDOLMAPNAMEDBUFFERPROC dolMapNamedBuffer;
+PFNDOLMAPNAMEDBUFFERRANGEPROC dolMapNamedBufferRange;
+PFNDOLUNMAPNAMEDBUFFERPROC dolUnmapNamedBuffer;
+PFNDOLFLUSHMAPPEDNAMEDBUFFERRANGEPROC dolFlushMappedNamedBufferRange;
+PFNDOLGETNAMEDBUFFERPARAMETERIVPROC dolGetNamedBufferParameteriv;
+PFNDOLGETNAMEDBUFFERPARAMETERI64VPROC dolGetNamedBufferParameteri64v;
+PFNDOLGETNAMEDBUFFERPOINTERVPROC dolGetNamedBufferPointerv;
+PFNDOLGETNAMEDBUFFERSUBDATAPROC dolGetNamedBufferSubData;
+PFNDOLCREATEFRAMEBUFFERSPROC dolCreateFramebuffers;
+PFNDOLNAMEDFRAMEBUFFERRENDERBUFFERPROC dolNamedFramebufferRenderbuffer;
+PFNDOLNAMEDFRAMEBUFFERPARAMETERIPROC dolNamedFramebufferParameteri;
+PFNDOLNAMEDFRAMEBUFFERTEXTUREPROC dolNamedFramebufferTexture;
+PFNDOLNAMEDFRAMEBUFFERTEXTURELAYERPROC dolNamedFramebufferTextureLayer;
+PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERPROC dolNamedFramebufferDrawBuffer;
+PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERSPROC dolNamedFramebufferDrawBuffers;
+PFNDOLNAMEDFRAMEBUFFERREADBUFFERPROC dolNamedFramebufferReadBuffer;
+PFNDOLINVALIDATENAMEDFRAMEBUFFERDATAPROC dolInvalidateNamedFramebufferData;
+PFNDOLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC dolInvalidateNamedFramebufferSubData;
+PFNDOLCLEARNAMEDFRAMEBUFFERIVPROC dolClearNamedFramebufferiv;
+PFNDOLCLEARNAMEDFRAMEBUFFERUIVPROC dolClearNamedFramebufferuiv;
+PFNDOLCLEARNAMEDFRAMEBUFFERFVPROC dolClearNamedFramebufferfv;
+PFNDOLCLEARNAMEDFRAMEBUFFERFIPROC dolClearNamedFramebufferfi;
+PFNDOLBLITNAMEDFRAMEBUFFERPROC dolBlitNamedFramebuffer;
+PFNDOLCHECKNAMEDFRAMEBUFFERSTATUSPROC dolCheckNamedFramebufferStatus;
+PFNDOLGETNAMEDFRAMEBUFFERPARAMETERIVPROC dolGetNamedFramebufferParameteriv;
+PFNDOLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC dolGetNamedFramebufferAttachmentParameteriv;
+PFNDOLCREATERENDERBUFFERSPROC dolCreateRenderbuffers;
+PFNDOLNAMEDRENDERBUFFERSTORAGEPROC dolNamedRenderbufferStorage;
+PFNDOLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC dolNamedRenderbufferStorageMultisample;
+PFNDOLGETNAMEDRENDERBUFFERPARAMETERIVPROC dolGetNamedRenderbufferParameteriv;
+PFNDOLCREATETEXTURESPROC dolCreateTextures;
+PFNDOLTEXTUREBUFFERPROC dolTextureBuffer;
+PFNDOLTEXTUREBUFFERRANGEPROC dolTextureBufferRange;
+PFNDOLTEXTURESTORAGE1DPROC dolTextureStorage1D;
+PFNDOLTEXTURESTORAGE2DPROC dolTextureStorage2D;
+PFNDOLTEXTURESTORAGE3DPROC dolTextureStorage3D;
+PFNDOLTEXTURESTORAGE2DMULTISAMPLEPROC dolTextureStorage2DMultisample;
+PFNDOLTEXTURESTORAGE3DMULTISAMPLEPROC dolTextureStorage3DMultisample;
+PFNDOLTEXTURESUBIMAGE1DPROC dolTextureSubImage1D;
+PFNDOLTEXTURESUBIMAGE2DPROC dolTextureSubImage2D;
+PFNDOLTEXTURESUBIMAGE3DPROC dolTextureSubImage3D;
+PFNDOLCOMPRESSEDTEXTURESUBIMAGE1DPROC dolCompressedTextureSubImage1D;
+PFNDOLCOMPRESSEDTEXTURESUBIMAGE2DPROC dolCompressedTextureSubImage2D;
+PFNDOLCOMPRESSEDTEXTURESUBIMAGE3DPROC dolCompressedTextureSubImage3D;
+PFNDOLCOPYTEXTURESUBIMAGE1DPROC dolCopyTextureSubImage1D;
+PFNDOLCOPYTEXTURESUBIMAGE2DPROC dolCopyTextureSubImage2D;
+PFNDOLCOPYTEXTURESUBIMAGE3DPROC dolCopyTextureSubImage3D;
+PFNDOLTEXTUREPARAMETERFPROC dolTextureParameterf;
+PFNDOLTEXTUREPARAMETERFVPROC dolTextureParameterfv;
+PFNDOLTEXTUREPARAMETERIPROC dolTextureParameteri;
+PFNDOLTEXTUREPARAMETERIIVPROC dolTextureParameterIiv;
+PFNDOLTEXTUREPARAMETERIUIVPROC dolTextureParameterIuiv;
+PFNDOLTEXTUREPARAMETERIVPROC dolTextureParameteriv;
+PFNDOLGENERATETEXTUREMIPMAPPROC dolGenerateTextureMipmap;
+PFNDOLBINDTEXTUREUNITPROC dolBindTextureUnit;
+PFNDOLGETTEXTUREIMAGEPROC dolGetTextureImage;
+PFNDOLGETCOMPRESSEDTEXTUREIMAGEPROC dolGetCompressedTextureImage;
+PFNDOLGETTEXTURELEVELPARAMETERFVPROC dolGetTextureLevelParameterfv;
+PFNDOLGETTEXTURELEVELPARAMETERIVPROC dolGetTextureLevelParameteriv;
+PFNDOLGETTEXTUREPARAMETERFVPROC dolGetTextureParameterfv;
+PFNDOLGETTEXTUREPARAMETERIIVPROC dolGetTextureParameterIiv;
+PFNDOLGETTEXTUREPARAMETERIUIVPROC dolGetTextureParameterIuiv;
+PFNDOLGETTEXTUREPARAMETERIVPROC dolGetTextureParameteriv;
+PFNDOLCREATEVERTEXARRAYSPROC dolCreateVertexArrays;
+PFNDOLDISABLEVERTEXARRAYATTRIBPROC dolDisableVertexArrayAttrib;
+PFNDOLENABLEVERTEXARRAYATTRIBPROC dolEnableVertexArrayAttrib;
+PFNDOLVERTEXARRAYELEMENTBUFFERPROC dolVertexArrayElementBuffer;
+PFNDOLVERTEXARRAYVERTEXBUFFERPROC dolVertexArrayVertexBuffer;
+PFNDOLVERTEXARRAYVERTEXBUFFERSPROC dolVertexArrayVertexBuffers;
+PFNDOLVERTEXARRAYATTRIBBINDINGPROC dolVertexArrayAttribBinding;
+PFNDOLVERTEXARRAYATTRIBFORMATPROC dolVertexArrayAttribFormat;
+PFNDOLVERTEXARRAYATTRIBIFORMATPROC dolVertexArrayAttribIFormat;
+PFNDOLVERTEXARRAYATTRIBLFORMATPROC dolVertexArrayAttribLFormat;
+PFNDOLVERTEXARRAYBINDINGDIVISORPROC dolVertexArrayBindingDivisor;
+PFNDOLGETVERTEXARRAYIVPROC dolGetVertexArrayiv;
+PFNDOLGETVERTEXARRAYINDEXEDIVPROC dolGetVertexArrayIndexediv;
+PFNDOLGETVERTEXARRAYINDEXED64IVPROC dolGetVertexArrayIndexed64iv;
+PFNDOLCREATESAMPLERSPROC dolCreateSamplers;
+PFNDOLCREATEPROGRAMPIPELINESPROC dolCreateProgramPipelines;
+PFNDOLCREATEQUERIESPROC dolCreateQueries;
+PFNDOLGETQUERYBUFFEROBJECTI64VPROC dolGetQueryBufferObjecti64v;
+PFNDOLGETQUERYBUFFEROBJECTIVPROC dolGetQueryBufferObjectiv;
+PFNDOLGETQUERYBUFFEROBJECTUI64VPROC dolGetQueryBufferObjectui64v;
+PFNDOLGETQUERYBUFFEROBJECTUIVPROC dolGetQueryBufferObjectuiv;
+PFNDOLMEMORYBARRIERBYREGIONPROC dolMemoryBarrierByRegion;
+PFNDOLGETTEXTURESUBIMAGEPROC dolGetTextureSubImage;
+PFNDOLGETCOMPRESSEDTEXTURESUBIMAGEPROC dolGetCompressedTextureSubImage;
+PFNDOLGETGRAPHICSRESETSTATUSPROC dolGetGraphicsResetStatus;
+PFNDOLGETNCOMPRESSEDTEXIMAGEPROC dolGetnCompressedTexImage;
+PFNDOLGETNTEXIMAGEPROC dolGetnTexImage;
+PFNDOLGETNUNIFORMDVPROC dolGetnUniformdv;
+PFNDOLGETNUNIFORMFVPROC dolGetnUniformfv;
+PFNDOLGETNUNIFORMIVPROC dolGetnUniformiv;
+PFNDOLGETNUNIFORMUIVPROC dolGetnUniformuiv;
+PFNDOLREADNPIXELSPROC dolReadnPixels;
+PFNDOLGETNMAPDVPROC dolGetnMapdv;
+PFNDOLGETNMAPFVPROC dolGetnMapfv;
+PFNDOLGETNMAPIVPROC dolGetnMapiv;
+PFNDOLGETNPIXELMAPFVPROC dolGetnPixelMapfv;
+PFNDOLGETNPIXELMAPUIVPROC dolGetnPixelMapuiv;
+PFNDOLGETNPIXELMAPUSVPROC dolGetnPixelMapusv;
+PFNDOLGETNPOLYGONSTIPPLEPROC dolGetnPolygonStipple;
+PFNDOLGETNCOLORTABLEPROC dolGetnColorTable;
+PFNDOLGETNCONVOLUTIONFILTERPROC dolGetnConvolutionFilter;
+PFNDOLGETNSEPARABLEFILTERPROC dolGetnSeparableFilter;
+PFNDOLGETNHISTOGRAMPROC dolGetnHistogram;
+PFNDOLGETNMINMAXPROC dolGetnMinmax;
+PFNDOLTEXTUREBARRIERPROC dolTextureBarrier;
// ARB_uniform_buffer_object
PFNDOLBINDBUFFERBASEPROC dolBindBufferBase;
@@ -801,7 +965,6 @@ PFNDOLPUSHDEBUGGROUPPROC dolPushDebugGroup;
// ARB_buffer_storage
PFNDOLBUFFERSTORAGEPROC dolBufferStorage;
-PFNDOLNAMEDBUFFERSTORAGEEXTPROC dolNamedBufferStorageEXT;
// GL_NV_occlusion_query_samples
PFNDOLGENOCCLUSIONQUERIESNVPROC dolGenOcclusionQueriesNV;
@@ -1494,6 +1657,187 @@ const GLFunc gl_function_array[] =
GLFUNC_REQUIRES(glDrawTransformFeedbackInstanced, "VERSION_4_2"),
GLFUNC_REQUIRES(glDrawTransformFeedbackStreamInstanced, "VERSION_4_2"),
+
+ // gl_4_3
+ GLFUNC_REQUIRES(glClearBufferData, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glClearBufferSubData, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glDispatchCompute, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glDispatchComputeIndirect, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glCopyImageSubData, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glFramebufferParameteri, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetFramebufferParameteriv, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetInternalformati64v, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateTexSubImage, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateTexImage, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateBufferSubData, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateBufferData, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateFramebuffer, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glInvalidateSubFramebuffer, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glMultiDrawArraysIndirect, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glMultiDrawElementsIndirect, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramInterfaceiv, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramResourceIndex, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramResourceName, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramResourceiv, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramResourceLocation, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetProgramResourceLocationIndex, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glShaderStorageBlockBinding, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glTexBufferRange, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glTexStorage2DMultisample, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glTexStorage3DMultisample, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glTextureView, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glBindVertexBuffer, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glVertexAttribFormat, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glVertexAttribIFormat, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glVertexAttribLFormat, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glVertexAttribBinding, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glVertexBindingDivisor, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glDebugMessageControl, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glDebugMessageInsert, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glDebugMessageCallback, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetDebugMessageLog, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glPushDebugGroup, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glPopDebugGroup, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glObjectLabel, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetObjectLabel, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glObjectPtrLabel, "VERSION_4_3"),
+ GLFUNC_REQUIRES(glGetObjectPtrLabel, "VERSION_4_3"),
+
+ // gl_4_4
+ GLFUNC_REQUIRES(glBufferStorage, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glClearTexImage, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glClearTexSubImage, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindBuffersBase, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindBuffersRange, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindTextures, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindSamplers, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindImageTextures, "VERSION_4_4"),
+ GLFUNC_REQUIRES(glBindVertexBuffers, "VERSION_4_4"),
+
+ // gl_4_5
+ GLFUNC_REQUIRES(glClipControl, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateTransformFeedbacks, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTransformFeedbackBufferBase, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTransformFeedbackBufferRange, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTransformFeedbackiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTransformFeedbacki_v, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTransformFeedbacki64_v, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateBuffers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedBufferStorage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedBufferData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedBufferSubData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCopyNamedBufferSubData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedBufferData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedBufferSubData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glMapNamedBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glMapNamedBufferRange, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glUnmapNamedBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glFlushMappedNamedBufferRange, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedBufferParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedBufferParameteri64v, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedBufferPointerv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedBufferSubData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateFramebuffers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferRenderbuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferParameteri, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferTexture, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferTextureLayer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferDrawBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferDrawBuffers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedFramebufferReadBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glInvalidateNamedFramebufferData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glInvalidateNamedFramebufferSubData, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedFramebufferiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedFramebufferuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedFramebufferfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glClearNamedFramebufferfi, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glBlitNamedFramebuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCheckNamedFramebufferStatus, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedFramebufferParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedFramebufferAttachmentParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateRenderbuffers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedRenderbufferStorage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glNamedRenderbufferStorageMultisample, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetNamedRenderbufferParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateTextures, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureBufferRange, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureStorage1D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureStorage2D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureStorage3D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureStorage2DMultisample, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureStorage3DMultisample, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureSubImage1D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureSubImage2D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureSubImage3D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCompressedTextureSubImage1D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCompressedTextureSubImage2D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCompressedTextureSubImage3D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCopyTextureSubImage1D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCopyTextureSubImage2D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCopyTextureSubImage3D, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameterf, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameterfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameteri, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameterIiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameterIuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGenerateTextureMipmap, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glBindTextureUnit, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetCompressedTextureImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureLevelParameterfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureLevelParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureParameterfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureParameterIiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureParameterIuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureParameteriv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateVertexArrays, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glDisableVertexArrayAttrib, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glEnableVertexArrayAttrib, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayElementBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayVertexBuffer, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayVertexBuffers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayAttribBinding, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayAttribFormat, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayAttribIFormat, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayAttribLFormat, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glVertexArrayBindingDivisor, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetVertexArrayiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetVertexArrayIndexediv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetVertexArrayIndexed64iv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateSamplers, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateProgramPipelines, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glCreateQueries, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetQueryBufferObjecti64v, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetQueryBufferObjectiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetQueryBufferObjectui64v, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetQueryBufferObjectuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glMemoryBarrierByRegion, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetTextureSubImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetCompressedTextureSubImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetGraphicsResetStatus, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnCompressedTexImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnTexImage, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnUniformdv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnUniformfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnUniformiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnUniformuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glReadnPixels, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnMapdv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnMapfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnMapiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnPixelMapfv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnPixelMapuiv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnPixelMapusv, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnPolygonStipple, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnColorTable, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnConvolutionFilter, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnSeparableFilter, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnHistogram, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glGetnMinmax, "VERSION_4_5"),
+ GLFUNC_REQUIRES(glTextureBarrier, "VERSION_4_5"),
+
// ARB_uniform_buffer_object
GLFUNC_REQUIRES(glGetActiveUniformName, "GL_ARB_uniform_buffer_object"),
GLFUNC_REQUIRES(glBindBufferBase, "GL_ARB_uniform_buffer_object |VERSION_GLES_3"),
@@ -1581,8 +1925,8 @@ const GLFunc gl_function_array[] =
GLFUNC_REQUIRES(glSampleMaski, "GL_ARB_texture_multisample"),
// ARB_texture_storage_multisample
- GLFUNC_REQUIRES(glTexStorage2DMultisample, "GL_ARB_texture_storage_multisample |VERSION_GLES_3_1"),
- GLFUNC_REQUIRES(glTexStorage3DMultisample, "GL_ARB_texture_storage_multisample |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glTexStorage2DMultisample, "GL_ARB_texture_storage_multisample !VERSION_4_3 |VERSION_GLES_3_1"),
+ GLFUNC_REQUIRES(glTexStorage3DMultisample, "GL_ARB_texture_storage_multisample !VERSION_4_3 |VERSION_GLES_3_2"),
GLFUNC_SUFFIX(glTexStorage3DMultisample, OES, "GL_OES_texture_storage_multisample_2d_array !VERSION_GLES_3_2"),
// ARB_ES2_compatibility
@@ -1653,23 +1997,23 @@ const GLFunc gl_function_array[] =
GLFUNC_SUFFIX(glObjectPtrLabel, KHR, "GL_KHR_debug VERSION_GLES_3"),
GLFUNC_SUFFIX(glPopDebugGroup, KHR, "GL_KHR_debug VERSION_GLES_3"),
GLFUNC_SUFFIX(glPushDebugGroup, KHR, "GL_KHR_debug VERSION_GLES_3"),
- GLFUNC_REQUIRES(glDebugMessageCallback, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glDebugMessageControl, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glDebugMessageInsert, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glGetDebugMessageLog, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glGetObjectLabel, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glGetObjectPtrLabel, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glObjectLabel, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glObjectPtrLabel, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glPopDebugGroup, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
- GLFUNC_REQUIRES(glPushDebugGroup, "GL_KHR_debug !VERSION_GLES_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glDebugMessageCallback, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glDebugMessageControl, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glDebugMessageInsert, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glGetDebugMessageLog, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glGetObjectLabel, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glGetObjectPtrLabel, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glObjectLabel, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glObjectPtrLabel, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glPopDebugGroup, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glPushDebugGroup, "GL_KHR_debug !VERSION_GLES_3 !VERSION_GL_4_3 |VERSION_GLES_3_2"),
// ARB_buffer_storage
- GLFUNC_REQUIRES(glBufferStorage, "GL_ARB_buffer_storage"),
- GLFUNC_REQUIRES(glNamedBufferStorageEXT, "GL_ARB_buffer_storage GL_EXT_direct_state_access"),
+ GLFUNC_REQUIRES(glBufferStorage, "GL_ARB_buffer_storage !VERSION_4_4"),
+ GLFUNC_REQUIRES(glNamedBufferStorage, "GL_ARB_buffer_storage GL_EXT_direct_state_access !VERSION_4_5"),
// EXT_buffer_storage
- GLFUNC_SUFFIX(glBufferStorage, EXT, "GL_EXT_buffer_storage !GL_ARB_buffer_storage"),
+ GLFUNC_SUFFIX(glBufferStorage, EXT, "GL_EXT_buffer_storage !GL_ARB_buffer_storage !VERSION_4_4"),
// EXT_geometry_shader
GLFUNC_SUFFIX(glFramebufferTexture, EXT, "GL_EXT_geometry_shader !VERSION_3_2"),
@@ -1684,10 +2028,10 @@ const GLFunc gl_function_array[] =
GLFUNC_REQUIRES(glGetOcclusionQueryuivNV, "GL_NV_occlusion_query_samples"),
// ARB_clip_control
- GLFUNC_REQUIRES(glClipControl, "GL_ARB_clip_control"),
+ GLFUNC_REQUIRES(glClipControl, "GL_ARB_clip_control !VERSION_4_5"),
// ARB_copy_image
- GLFUNC_REQUIRES(glCopyImageSubData, "GL_ARB_copy_image |VERSION_GLES_3_2"),
+ GLFUNC_REQUIRES(glCopyImageSubData, "GL_ARB_copy_image !VERSION_4_3 |VERSION_GLES_3_2"),
// NV_copy_image
GLFUNC_SUFFIX(glCopyImageSubData, NV, "GL_NV_copy_image !GL_ARB_copy_image !VERSION_GLES_3_2"),
@@ -1709,7 +2053,7 @@ const GLFunc gl_function_array[] =
GLFUNC_SUFFIX(glGetFragDataIndex, EXT, "GL_EXT_blend_func_extended"),
// ARB_shader_storage_buffer_object
- GLFUNC_REQUIRES(glShaderStorageBlockBinding, "ARB_shader_storage_buffer_object"),
+ GLFUNC_REQUIRES(glShaderStorageBlockBinding, "ARB_shader_storage_buffer_object !VERSION_4_3"),
};
namespace GLExtensions
diff --git a/Source/Core/Common/GL/GLExtensions/GLExtensions.h b/Source/Core/Common/GL/GLExtensions/GLExtensions.h
index 888ad8ed93..3cfa6863b4 100644
--- a/Source/Core/Common/GL/GLExtensions/GLExtensions.h
+++ b/Source/Core/Common/GL/GLExtensions/GLExtensions.h
@@ -40,6 +40,9 @@
#include "Common/GL/GLExtensions/gl_3_1.h"
#include "Common/GL/GLExtensions/gl_3_2.h"
#include "Common/GL/GLExtensions/gl_4_2.h"
+#include "Common/GL/GLExtensions/gl_4_3.h"
+#include "Common/GL/GLExtensions/gl_4_4.h"
+#include "Common/GL/GLExtensions/gl_4_5.h"
#include "Common/GL/GLExtensions/HP_occlusion_test.h"
#include "Common/GL/GLExtensions/KHR_debug.h"
#include "Common/GL/GLExtensions/NV_occlusion_query_samples.h"
diff --git a/Source/Core/Common/GL/GLExtensions/gl_4_2.h b/Source/Core/Common/GL/GLExtensions/gl_4_2.h
index 74c9edf155..d5ed625161 100644
--- a/Source/Core/Common/GL/GLExtensions/gl_4_2.h
+++ b/Source/Core/Common/GL/GLExtensions/gl_4_2.h
@@ -136,28 +136,41 @@
#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
#define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F
-typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
-typedef void (APIENTRYP PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
-typedef void (APIENTRYP PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
-typedef void (APIENTRYP PFNGLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
-typedef void (APIENTRYP PFNGLMEMORYBARRIERPROC) (GLbitfield barriers);
-typedef void (APIENTRYP PFNGLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
-typedef void (APIENTRYP PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
-typedef void (APIENTRYP PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
-typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
+typedef void (APIENTRYP PFNDOLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance);
+typedef void (APIENTRYP PFNDOLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance);
+typedef void (APIENTRYP PFNDOLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance);
+typedef void (APIENTRYP PFNDOLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNDOLGETACTIVEATOMICCOUNTERBUFFERIVPROC) (GLuint program, GLuint bufferIndex, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLBINDIMAGETEXTUREPROC) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
+typedef void (APIENTRYP PFNDOLMEMORYBARRIERPROC) (GLbitfield barriers);
+typedef void (APIENTRYP PFNDOLTEXSTORAGE1DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (APIENTRYP PFNDOLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNDOLDRAWTRANSFORMFEEDBACKINSTANCEDPROC) (GLenum mode, GLuint id, GLsizei instancecount);
+typedef void (APIENTRYP PFNDOLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC) (GLenum mode, GLuint id, GLuint stream, GLsizei instancecount);
-extern PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
-extern PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
-extern PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC glDrawElementsInstancedBaseVertexBaseInstance;
-extern PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
-extern PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
-extern PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
-extern PFNGLMEMORYBARRIERPROC glMemoryBarrier;
-extern PFNGLTEXSTORAGE1DPROC glTexStorage1D;
-extern PFNGLTEXSTORAGE2DPROC glTexStorage2D;
-extern PFNGLTEXSTORAGE3DPROC glTexStorage3D;
-extern PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC glDrawTransformFeedbackInstanced;
-extern PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC glDrawTransformFeedbackStreamInstanced;
+extern PFNDOLDRAWARRAYSINSTANCEDBASEINSTANCEPROC dolDrawArraysInstancedBaseInstance;
+extern PFNDOLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC dolDrawElementsInstancedBaseInstance;
+extern PFNDOLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC dolDrawElementsInstancedBaseVertexBaseInstance;
+extern PFNDOLGETINTERNALFORMATIVPROC dolGetInternalformativ;
+extern PFNDOLGETACTIVEATOMICCOUNTERBUFFERIVPROC dolGetActiveAtomicCounterBufferiv;
+extern PFNDOLBINDIMAGETEXTUREPROC dolBindImageTexture;
+extern PFNDOLMEMORYBARRIERPROC dolMemoryBarrier;
+extern PFNDOLTEXSTORAGE1DPROC dolTexStorage1D;
+extern PFNDOLTEXSTORAGE2DPROC dolTexStorage2D;
+extern PFNDOLTEXSTORAGE3DPROC dolTexStorage3D;
+extern PFNDOLDRAWTRANSFORMFEEDBACKINSTANCEDPROC dolDrawTransformFeedbackInstanced;
+extern PFNDOLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC dolDrawTransformFeedbackStreamInstanced;
+
+#define glDrawArraysInstancedBaseInstance dolDrawArraysInstancedBaseInstance
+#define glDrawElementsInstancedBaseInstance dolDrawElementsInstancedBaseInstance
+#define glDrawElementsInstancedBaseVertexBaseInstance dolDrawElementsInstancedBaseVertexBaseInstance
+#define glGetInternalformativ dolGetInternalformativ
+#define glGetActiveAtomicCounterBufferiv dolGetActiveAtomicCounterBufferiv
+#define glBindImageTexture dolBindImageTexture
+#define glMemoryBarrier dolMemoryBarrier
+#define glTexStorage1D dolTexStorage1D
+#define glTexStorage2D dolTexStorage2D
+#define glTexStorage3D dolTexStorage3D
+#define glDrawTransformFeedbackInstanced dolDrawTransformFeedbackInstanced
+#define glDrawTransformFeedbackStreamInstanced dolDrawTransformFeedbackStreamInstanced
diff --git a/Source/Core/Common/GL/GLExtensions/gl_4_3.h b/Source/Core/Common/GL/GLExtensions/gl_4_3.h
new file mode 100644
index 0000000000..2f38f65f32
--- /dev/null
+++ b/Source/Core/Common/GL/GLExtensions/gl_4_3.h
@@ -0,0 +1,373 @@
+/*
+** Copyright (c) 2013-2015 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#include "Common/GL/GLExtensions/gl_common.h"
+
+#define GL_NUM_SHADING_LANGUAGE_VERSIONS 0x82E9
+#define GL_VERTEX_ATTRIB_ARRAY_LONG 0x874E
+#define GL_COMPRESSED_RGB8_ETC2 0x9274
+#define GL_COMPRESSED_SRGB8_ETC2 0x9275
+#define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
+#define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
+#define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
+#define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
+#define GL_COMPRESSED_R11_EAC 0x9270
+#define GL_COMPRESSED_SIGNED_R11_EAC 0x9271
+#define GL_COMPRESSED_RG11_EAC 0x9272
+#define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273
+#define GL_PRIMITIVE_RESTART_FIXED_INDEX 0x8D69
+#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
+#define GL_MAX_ELEMENT_INDEX 0x8D6B
+#define GL_COMPUTE_SHADER 0x91B9
+#define GL_MAX_COMPUTE_UNIFORM_BLOCKS 0x91BB
+#define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
+#define GL_MAX_COMPUTE_IMAGE_UNIFORMS 0x91BD
+#define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
+#define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
+#define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
+#define GL_MAX_COMPUTE_ATOMIC_COUNTERS 0x8265
+#define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
+#define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
+#define GL_MAX_COMPUTE_WORK_GROUP_COUNT 0x91BE
+#define GL_MAX_COMPUTE_WORK_GROUP_SIZE 0x91BF
+#define GL_COMPUTE_WORK_GROUP_SIZE 0x8267
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER 0x90EC
+#define GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER 0x90ED
+#define GL_DISPATCH_INDIRECT_BUFFER 0x90EE
+#define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
+#define GL_COMPUTE_SHADER_BIT 0x00000020
+#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
+#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
+#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
+#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
+#define GL_DEBUG_SOURCE_API 0x8246
+#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
+#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
+#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
+#define GL_DEBUG_SOURCE_APPLICATION 0x824A
+#define GL_DEBUG_SOURCE_OTHER 0x824B
+#define GL_DEBUG_TYPE_ERROR 0x824C
+#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
+#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
+#define GL_DEBUG_TYPE_PORTABILITY 0x824F
+#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
+#define GL_DEBUG_TYPE_OTHER 0x8251
+#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
+#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
+#define GL_DEBUG_LOGGED_MESSAGES 0x9145
+#define GL_DEBUG_SEVERITY_HIGH 0x9146
+#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
+#define GL_DEBUG_SEVERITY_LOW 0x9148
+#define GL_DEBUG_TYPE_MARKER 0x8268
+#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
+#define GL_DEBUG_TYPE_POP_GROUP 0x826A
+#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
+#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
+#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
+#define GL_BUFFER 0x82E0
+#define GL_SHADER 0x82E1
+#define GL_PROGRAM 0x82E2
+#define GL_QUERY 0x82E3
+#define GL_PROGRAM_PIPELINE 0x82E4
+#define GL_SAMPLER 0x82E6
+#define GL_MAX_LABEL_LENGTH 0x82E8
+#define GL_DEBUG_OUTPUT 0x92E0
+#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
+#define GL_MAX_UNIFORM_LOCATIONS 0x826E
+#define GL_FRAMEBUFFER_DEFAULT_WIDTH 0x9310
+#define GL_FRAMEBUFFER_DEFAULT_HEIGHT 0x9311
+#define GL_FRAMEBUFFER_DEFAULT_LAYERS 0x9312
+#define GL_FRAMEBUFFER_DEFAULT_SAMPLES 0x9313
+#define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
+#define GL_MAX_FRAMEBUFFER_WIDTH 0x9315
+#define GL_MAX_FRAMEBUFFER_HEIGHT 0x9316
+#define GL_MAX_FRAMEBUFFER_LAYERS 0x9317
+#define GL_MAX_FRAMEBUFFER_SAMPLES 0x9318
+#define GL_INTERNALFORMAT_SUPPORTED 0x826F
+#define GL_INTERNALFORMAT_PREFERRED 0x8270
+#define GL_INTERNALFORMAT_RED_SIZE 0x8271
+#define GL_INTERNALFORMAT_GREEN_SIZE 0x8272
+#define GL_INTERNALFORMAT_BLUE_SIZE 0x8273
+#define GL_INTERNALFORMAT_ALPHA_SIZE 0x8274
+#define GL_INTERNALFORMAT_DEPTH_SIZE 0x8275
+#define GL_INTERNALFORMAT_STENCIL_SIZE 0x8276
+#define GL_INTERNALFORMAT_SHARED_SIZE 0x8277
+#define GL_INTERNALFORMAT_RED_TYPE 0x8278
+#define GL_INTERNALFORMAT_GREEN_TYPE 0x8279
+#define GL_INTERNALFORMAT_BLUE_TYPE 0x827A
+#define GL_INTERNALFORMAT_ALPHA_TYPE 0x827B
+#define GL_INTERNALFORMAT_DEPTH_TYPE 0x827C
+#define GL_INTERNALFORMAT_STENCIL_TYPE 0x827D
+#define GL_MAX_WIDTH 0x827E
+#define GL_MAX_HEIGHT 0x827F
+#define GL_MAX_DEPTH 0x8280
+#define GL_MAX_LAYERS 0x8281
+#define GL_MAX_COMBINED_DIMENSIONS 0x8282
+#define GL_COLOR_COMPONENTS 0x8283
+#define GL_DEPTH_COMPONENTS 0x8284
+#define GL_STENCIL_COMPONENTS 0x8285
+#define GL_COLOR_RENDERABLE 0x8286
+#define GL_DEPTH_RENDERABLE 0x8287
+#define GL_STENCIL_RENDERABLE 0x8288
+#define GL_FRAMEBUFFER_RENDERABLE 0x8289
+#define GL_FRAMEBUFFER_RENDERABLE_LAYERED 0x828A
+#define GL_FRAMEBUFFER_BLEND 0x828B
+#define GL_READ_PIXELS 0x828C
+#define GL_READ_PIXELS_FORMAT 0x828D
+#define GL_READ_PIXELS_TYPE 0x828E
+#define GL_TEXTURE_IMAGE_FORMAT 0x828F
+#define GL_TEXTURE_IMAGE_TYPE 0x8290
+#define GL_GET_TEXTURE_IMAGE_FORMAT 0x8291
+#define GL_GET_TEXTURE_IMAGE_TYPE 0x8292
+#define GL_MIPMAP 0x8293
+#define GL_MANUAL_GENERATE_MIPMAP 0x8294
+#define GL_AUTO_GENERATE_MIPMAP 0x8295
+#define GL_COLOR_ENCODING 0x8296
+#define GL_SRGB_READ 0x8297
+#define GL_SRGB_WRITE 0x8298
+#define GL_FILTER 0x829A
+#define GL_VERTEX_TEXTURE 0x829B
+#define GL_TESS_CONTROL_TEXTURE 0x829C
+#define GL_TESS_EVALUATION_TEXTURE 0x829D
+#define GL_GEOMETRY_TEXTURE 0x829E
+#define GL_FRAGMENT_TEXTURE 0x829F
+#define GL_COMPUTE_TEXTURE 0x82A0
+#define GL_TEXTURE_SHADOW 0x82A1
+#define GL_TEXTURE_GATHER 0x82A2
+#define GL_TEXTURE_GATHER_SHADOW 0x82A3
+#define GL_SHADER_IMAGE_LOAD 0x82A4
+#define GL_SHADER_IMAGE_STORE 0x82A5
+#define GL_SHADER_IMAGE_ATOMIC 0x82A6
+#define GL_IMAGE_TEXEL_SIZE 0x82A7
+#define GL_IMAGE_COMPATIBILITY_CLASS 0x82A8
+#define GL_IMAGE_PIXEL_FORMAT 0x82A9
+#define GL_IMAGE_PIXEL_TYPE 0x82AA
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST 0x82AC
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST 0x82AD
+#define GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE 0x82AE
+#define GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE 0x82AF
+#define GL_TEXTURE_COMPRESSED_BLOCK_WIDTH 0x82B1
+#define GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT 0x82B2
+#define GL_TEXTURE_COMPRESSED_BLOCK_SIZE 0x82B3
+#define GL_CLEAR_BUFFER 0x82B4
+#define GL_TEXTURE_VIEW 0x82B5
+#define GL_VIEW_COMPATIBILITY_CLASS 0x82B6
+#define GL_FULL_SUPPORT 0x82B7
+#define GL_CAVEAT_SUPPORT 0x82B8
+#define GL_IMAGE_CLASS_4_X_32 0x82B9
+#define GL_IMAGE_CLASS_2_X_32 0x82BA
+#define GL_IMAGE_CLASS_1_X_32 0x82BB
+#define GL_IMAGE_CLASS_4_X_16 0x82BC
+#define GL_IMAGE_CLASS_2_X_16 0x82BD
+#define GL_IMAGE_CLASS_1_X_16 0x82BE
+#define GL_IMAGE_CLASS_4_X_8 0x82BF
+#define GL_IMAGE_CLASS_2_X_8 0x82C0
+#define GL_IMAGE_CLASS_1_X_8 0x82C1
+#define GL_IMAGE_CLASS_11_11_10 0x82C2
+#define GL_IMAGE_CLASS_10_10_10_2 0x82C3
+#define GL_VIEW_CLASS_128_BITS 0x82C4
+#define GL_VIEW_CLASS_96_BITS 0x82C5
+#define GL_VIEW_CLASS_64_BITS 0x82C6
+#define GL_VIEW_CLASS_48_BITS 0x82C7
+#define GL_VIEW_CLASS_32_BITS 0x82C8
+#define GL_VIEW_CLASS_24_BITS 0x82C9
+#define GL_VIEW_CLASS_16_BITS 0x82CA
+#define GL_VIEW_CLASS_8_BITS 0x82CB
+#define GL_VIEW_CLASS_S3TC_DXT1_RGB 0x82CC
+#define GL_VIEW_CLASS_S3TC_DXT1_RGBA 0x82CD
+#define GL_VIEW_CLASS_S3TC_DXT3_RGBA 0x82CE
+#define GL_VIEW_CLASS_S3TC_DXT5_RGBA 0x82CF
+#define GL_VIEW_CLASS_RGTC1_RED 0x82D0
+#define GL_VIEW_CLASS_RGTC2_RG 0x82D1
+#define GL_VIEW_CLASS_BPTC_UNORM 0x82D2
+#define GL_VIEW_CLASS_BPTC_FLOAT 0x82D3
+#define GL_UNIFORM 0x92E1
+#define GL_UNIFORM_BLOCK 0x92E2
+#define GL_PROGRAM_INPUT 0x92E3
+#define GL_PROGRAM_OUTPUT 0x92E4
+#define GL_BUFFER_VARIABLE 0x92E5
+#define GL_SHADER_STORAGE_BLOCK 0x92E6
+#define GL_VERTEX_SUBROUTINE 0x92E8
+#define GL_TESS_CONTROL_SUBROUTINE 0x92E9
+#define GL_TESS_EVALUATION_SUBROUTINE 0x92EA
+#define GL_GEOMETRY_SUBROUTINE 0x92EB
+#define GL_FRAGMENT_SUBROUTINE 0x92EC
+#define GL_COMPUTE_SUBROUTINE 0x92ED
+#define GL_VERTEX_SUBROUTINE_UNIFORM 0x92EE
+#define GL_TESS_CONTROL_SUBROUTINE_UNIFORM 0x92EF
+#define GL_TESS_EVALUATION_SUBROUTINE_UNIFORM 0x92F0
+#define GL_GEOMETRY_SUBROUTINE_UNIFORM 0x92F1
+#define GL_FRAGMENT_SUBROUTINE_UNIFORM 0x92F2
+#define GL_COMPUTE_SUBROUTINE_UNIFORM 0x92F3
+#define GL_TRANSFORM_FEEDBACK_VARYING 0x92F4
+#define GL_ACTIVE_RESOURCES 0x92F5
+#define GL_MAX_NAME_LENGTH 0x92F6
+#define GL_MAX_NUM_ACTIVE_VARIABLES 0x92F7
+#define GL_MAX_NUM_COMPATIBLE_SUBROUTINES 0x92F8
+#define GL_NAME_LENGTH 0x92F9
+#define GL_TYPE 0x92FA
+#define GL_ARRAY_SIZE 0x92FB
+#define GL_OFFSET 0x92FC
+#define GL_BLOCK_INDEX 0x92FD
+#define GL_ARRAY_STRIDE 0x92FE
+#define GL_MATRIX_STRIDE 0x92FF
+#define GL_IS_ROW_MAJOR 0x9300
+#define GL_ATOMIC_COUNTER_BUFFER_INDEX 0x9301
+#define GL_BUFFER_BINDING 0x9302
+#define GL_BUFFER_DATA_SIZE 0x9303
+#define GL_NUM_ACTIVE_VARIABLES 0x9304
+#define GL_ACTIVE_VARIABLES 0x9305
+#define GL_REFERENCED_BY_VERTEX_SHADER 0x9306
+#define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
+#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
+#define GL_REFERENCED_BY_GEOMETRY_SHADER 0x9309
+#define GL_REFERENCED_BY_FRAGMENT_SHADER 0x930A
+#define GL_REFERENCED_BY_COMPUTE_SHADER 0x930B
+#define GL_TOP_LEVEL_ARRAY_SIZE 0x930C
+#define GL_TOP_LEVEL_ARRAY_STRIDE 0x930D
+#define GL_LOCATION 0x930E
+#define GL_LOCATION_INDEX 0x930F
+#define GL_IS_PER_PATCH 0x92E7
+#define GL_SHADER_STORAGE_BUFFER 0x90D2
+#define GL_SHADER_STORAGE_BUFFER_BINDING 0x90D3
+#define GL_SHADER_STORAGE_BUFFER_START 0x90D4
+#define GL_SHADER_STORAGE_BUFFER_SIZE 0x90D5
+#define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
+#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
+#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
+#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
+#define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
+#define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
+#define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
+#define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
+#define GL_MAX_SHADER_STORAGE_BLOCK_SIZE 0x90DE
+#define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
+#define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
+#define GL_DEPTH_STENCIL_TEXTURE_MODE 0x90EA
+#define GL_TEXTURE_BUFFER_OFFSET 0x919D
+#define GL_TEXTURE_BUFFER_SIZE 0x919E
+#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
+#define GL_TEXTURE_VIEW_MIN_LEVEL 0x82DB
+#define GL_TEXTURE_VIEW_NUM_LEVELS 0x82DC
+#define GL_TEXTURE_VIEW_MIN_LAYER 0x82DD
+#define GL_TEXTURE_VIEW_NUM_LAYERS 0x82DE
+#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF
+#define GL_VERTEX_ATTRIB_BINDING 0x82D4
+#define GL_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D5
+#define GL_VERTEX_BINDING_DIVISOR 0x82D6
+#define GL_VERTEX_BINDING_OFFSET 0x82D7
+#define GL_VERTEX_BINDING_STRIDE 0x82D8
+#define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
+#define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA
+#define GL_VERTEX_BINDING_BUFFER 0x8F4F
+#define GL_DISPLAY_LIST 0x82E7
+
+typedef void (APIENTRYP PFNDOLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNDOLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNDOLDISPATCHCOMPUTEPROC) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
+typedef void (APIENTRYP PFNDOLDISPATCHCOMPUTEINDIRECTPROC) (GLintptr indirect);
+typedef void (APIENTRYP PFNDOLFRAMEBUFFERPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNDOLGETFRAMEBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLGETINTERNALFORMATI64VPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint64 *params);
+typedef void (APIENTRYP PFNDOLINVALIDATETEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNDOLINVALIDATETEXIMAGEPROC) (GLuint texture, GLint level);
+typedef void (APIENTRYP PFNDOLINVALIDATEBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNDOLINVALIDATEBUFFERDATAPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNDOLINVALIDATEFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
+typedef void (APIENTRYP PFNDOLINVALIDATESUBFRAMEBUFFERPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLMULTIDRAWARRAYSINDIRECTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (APIENTRYP PFNDOLMULTIDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride);
+typedef void (APIENTRYP PFNDOLGETPROGRAMINTERFACEIVPROC) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
+typedef GLuint (APIENTRYP PFNDOLGETPROGRAMRESOURCEINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef void (APIENTRYP PFNDOLGETPROGRAMRESOURCENAMEPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNDOLGETPROGRAMRESOURCEIVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
+typedef GLint (APIENTRYP PFNDOLGETPROGRAMRESOURCELOCATIONPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef GLint (APIENTRYP PFNDOLGETPROGRAMRESOURCELOCATIONINDEXPROC) (GLuint program, GLenum programInterface, const GLchar *name);
+typedef void (APIENTRYP PFNDOLTEXBUFFERRANGEPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNDOLTEXTUREVIEWPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers);
+typedef void (APIENTRYP PFNDOLBINDVERTEXBUFFERPROC) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (APIENTRYP PFNDOLVERTEXATTRIBFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXATTRIBIFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXATTRIBLFORMATPROC) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXATTRIBBINDINGPROC) (GLuint attribindex, GLuint bindingindex);
+typedef void (APIENTRYP PFNDOLVERTEXBINDINGDIVISORPROC) (GLuint bindingindex, GLuint divisor);
+
+extern PFNDOLCLEARBUFFERDATAPROC dolClearBufferData;
+extern PFNDOLCLEARBUFFERSUBDATAPROC dolClearBufferSubData;
+extern PFNDOLDISPATCHCOMPUTEPROC dolDispatchCompute;
+extern PFNDOLDISPATCHCOMPUTEINDIRECTPROC dolDispatchComputeIndirect;
+extern PFNDOLFRAMEBUFFERPARAMETERIPROC dolFramebufferParameteri;
+extern PFNDOLGETFRAMEBUFFERPARAMETERIVPROC dolGetFramebufferParameteriv;
+extern PFNDOLGETINTERNALFORMATI64VPROC dolGetInternalformati64v;
+extern PFNDOLINVALIDATETEXSUBIMAGEPROC dolInvalidateTexSubImage;
+extern PFNDOLINVALIDATETEXIMAGEPROC dolInvalidateTexImage;
+extern PFNDOLINVALIDATEBUFFERSUBDATAPROC dolInvalidateBufferSubData;
+extern PFNDOLINVALIDATEBUFFERDATAPROC dolInvalidateBufferData;
+extern PFNDOLINVALIDATEFRAMEBUFFERPROC dolInvalidateFramebuffer;
+extern PFNDOLINVALIDATESUBFRAMEBUFFERPROC dolInvalidateSubFramebuffer;
+extern PFNDOLMULTIDRAWARRAYSINDIRECTPROC dolMultiDrawArraysIndirect;
+extern PFNDOLMULTIDRAWELEMENTSINDIRECTPROC dolMultiDrawElementsIndirect;
+extern PFNDOLGETPROGRAMINTERFACEIVPROC dolGetProgramInterfaceiv;
+extern PFNDOLGETPROGRAMRESOURCEINDEXPROC dolGetProgramResourceIndex;
+extern PFNDOLGETPROGRAMRESOURCENAMEPROC dolGetProgramResourceName;
+extern PFNDOLGETPROGRAMRESOURCEIVPROC dolGetProgramResourceiv;
+extern PFNDOLGETPROGRAMRESOURCELOCATIONPROC dolGetProgramResourceLocation;
+extern PFNDOLGETPROGRAMRESOURCELOCATIONINDEXPROC dolGetProgramResourceLocationIndex;
+extern PFNDOLTEXBUFFERRANGEPROC dolTexBufferRange;
+extern PFNDOLTEXTUREVIEWPROC dolTextureView;
+extern PFNDOLBINDVERTEXBUFFERPROC dolBindVertexBuffer;
+extern PFNDOLVERTEXATTRIBFORMATPROC dolVertexAttribFormat;
+extern PFNDOLVERTEXATTRIBIFORMATPROC dolVertexAttribIFormat;
+extern PFNDOLVERTEXATTRIBLFORMATPROC dolVertexAttribLFormat;
+extern PFNDOLVERTEXATTRIBBINDINGPROC dolVertexAttribBinding;
+extern PFNDOLVERTEXBINDINGDIVISORPROC dolVertexBindingDivisor;
+
+#define glClearBufferData dolClearBufferData
+#define glClearBufferSubData dolClearBufferSubData
+#define glDispatchCompute dolDispatchCompute
+#define glDispatchComputeIndirect dolDispatchComputeIndirect
+#define glFramebufferParameteri dolFramebufferParameteri
+#define glGetFramebufferParameteriv dolGetFramebufferParameteriv
+#define glGetInternalformati64v dolGetInternalformati64v
+#define glInvalidateTexSubImage dolInvalidateTexSubImage
+#define glInvalidateTexImage dolInvalidateTexImage
+#define glInvalidateBufferSubData dolInvalidateBufferSubData
+#define glInvalidateBufferData dolInvalidateBufferData
+#define glInvalidateFramebuffer dolInvalidateFramebuffer
+#define glInvalidateSubFramebuffer dolInvalidateSubFramebuffer
+#define glMultiDrawArraysIndirect dolMultiDrawArraysIndirect
+#define glMultiDrawElementsIndirect dolMultiDrawElementsIndirect
+#define glGetProgramInterfaceiv dolGetProgramInterfaceiv
+#define glGetProgramResourceIndex dolGetProgramResourceIndex
+#define glGetProgramResourceName dolGetProgramResourceName
+#define glGetProgramResourceiv dolGetProgramResourceiv
+#define glGetProgramResourceLocation dolGetProgramResourceLocation
+#define glGetProgramResourceLocationIndex dolGetProgramResourceLocationIndex
+#define glTexBufferRange dolTexBufferRange
+#define glTextureView dolTextureView
+#define glBindVertexBuffer dolBindVertexBuffer
+#define glVertexAttribFormat dolVertexAttribFormat
+#define glVertexAttribIFormat dolVertexAttribIFormat
+#define glVertexAttribLFormat dolVertexAttribLFormat
+#define glVertexAttribBinding dolVertexAttribBinding
+#define glVertexBindingDivisor dolVertexBindingDivisor
diff --git a/Source/Core/Common/GL/GLExtensions/gl_4_4.h b/Source/Core/Common/GL/GLExtensions/gl_4_4.h
new file mode 100644
index 0000000000..4f30731543
--- /dev/null
+++ b/Source/Core/Common/GL/GLExtensions/gl_4_4.h
@@ -0,0 +1,70 @@
+/*
+** Copyright (c) 2013-2015 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#include "Common/GL/GLExtensions/gl_common.h"
+
+#define GL_MAX_VERTEX_ATTRIB_STRIDE 0x82E5
+#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
+#define GL_TEXTURE_BUFFER_BINDING 0x8C2A
+#define GL_DYNAMIC_STORAGE_BIT 0x0100
+#define GL_CLIENT_STORAGE_BIT 0x0200
+#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT 0x00004000
+#define GL_BUFFER_IMMUTABLE_STORAGE 0x821F
+#define GL_BUFFER_STORAGE_FLAGS 0x8220
+#define GL_CLEAR_TEXTURE 0x9365
+#define GL_LOCATION_COMPONENT 0x934A
+#define GL_TRANSFORM_FEEDBACK_BUFFER_INDEX 0x934B
+#define GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE 0x934C
+#define GL_QUERY_BUFFER 0x9192
+#define GL_QUERY_BUFFER_BARRIER_BIT 0x00008000
+#define GL_QUERY_BUFFER_BINDING 0x9193
+#define GL_QUERY_RESULT_NO_WAIT 0x9194
+#define GL_MIRROR_CLAMP_TO_EDGE 0x8743
+
+typedef void (APIENTRYP PFNDOLBUFFERSTORAGEPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (APIENTRYP PFNDOLCLEARTEXIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNDOLCLEARTEXSUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNDOLBINDBUFFERSBASEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers);
+typedef void (APIENTRYP PFNDOLBINDBUFFERSRANGEPROC) (GLenum target, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizeiptr *sizes);
+typedef void (APIENTRYP PFNDOLBINDTEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
+typedef void (APIENTRYP PFNDOLBINDSAMPLERSPROC) (GLuint first, GLsizei count, const GLuint *samplers);
+typedef void (APIENTRYP PFNDOLBINDIMAGETEXTURESPROC) (GLuint first, GLsizei count, const GLuint *textures);
+typedef void (APIENTRYP PFNDOLBINDVERTEXBUFFERSPROC) (GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+
+extern PFNDOLCLEARTEXIMAGEPROC dolClearTexImage;
+extern PFNDOLCLEARTEXSUBIMAGEPROC dolClearTexSubImage;
+extern PFNDOLBINDBUFFERSBASEPROC dolBindBuffersBase;
+extern PFNDOLBINDBUFFERSRANGEPROC dolBindBuffersRange;
+extern PFNDOLBINDTEXTURESPROC dolBindTextures;
+extern PFNDOLBINDSAMPLERSPROC dolBindSamplers;
+extern PFNDOLBINDIMAGETEXTURESPROC dolBindImageTextures;
+extern PFNDOLBINDVERTEXBUFFERSPROC dolBindVertexBuffers;
+
+#define glClearTexImage dolClearTexImage
+#define glClearTexSubImage dolClearTexSubImage
+#define glBindBuffersBase dolBindBuffersBase
+#define glBindBuffersRange dolBindBuffersRange
+#define glBindTextures dolBindTextures
+#define glBindSamplers dolBindSamplers
+#define glBindImageTextures dolBindImageTextures
+#define glBindVertexBuffers dolBindVertexBuffers
diff --git a/Source/Core/Common/GL/GLExtensions/gl_4_5.h b/Source/Core/Common/GL/GLExtensions/gl_4_5.h
new file mode 100644
index 0000000000..3db03d98c0
--- /dev/null
+++ b/Source/Core/Common/GL/GLExtensions/gl_4_5.h
@@ -0,0 +1,416 @@
+/*
+** Copyright (c) 2013-2015 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+#include "Common/GL/GLExtensions/gl_common.h"
+
+#define GL_CONTEXT_LOST 0x0507
+#define GL_NEGATIVE_ONE_TO_ONE 0x935E
+#define GL_ZERO_TO_ONE 0x935F
+#define GL_CLIP_ORIGIN 0x935C
+#define GL_CLIP_DEPTH_MODE 0x935D
+#define GL_QUERY_WAIT_INVERTED 0x8E17
+#define GL_QUERY_NO_WAIT_INVERTED 0x8E18
+#define GL_QUERY_BY_REGION_WAIT_INVERTED 0x8E19
+#define GL_QUERY_BY_REGION_NO_WAIT_INVERTED 0x8E1A
+#define GL_MAX_CULL_DISTANCES 0x82F9
+#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES 0x82FA
+#define GL_TEXTURE_TARGET 0x1006
+#define GL_QUERY_TARGET 0x82EA
+#define GL_GUILTY_CONTEXT_RESET 0x8253
+#define GL_INNOCENT_CONTEXT_RESET 0x8254
+#define GL_UNKNOWN_CONTEXT_RESET 0x8255
+#define GL_RESET_NOTIFICATION_STRATEGY 0x8256
+#define GL_LOSE_CONTEXT_ON_RESET 0x8252
+#define GL_NO_RESET_NOTIFICATION 0x8261
+#define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
+#define GL_CONTEXT_RELEASE_BEHAVIOR 0x82FB
+#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH 0x82FC
+
+typedef void (APIENTRYP PFNDOLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
+typedef void (APIENTRYP PFNDOLCREATETRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNDOLTRANSFORMFEEDBACKBUFFERBASEPROC) (GLuint xfb, GLuint index, GLuint buffer);
+typedef void (APIENTRYP PFNDOLTRANSFORMFEEDBACKBUFFERRANGEPROC) (GLuint xfb, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNDOLGETTRANSFORMFEEDBACKIVPROC) (GLuint xfb, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNDOLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
+typedef void (APIENTRYP PFNDOLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
+typedef void (APIENTRYP PFNDOLCREATEBUFFERSPROC) (GLsizei n, GLuint *buffers);
+typedef void (APIENTRYP PFNDOLNAMEDBUFFERSTORAGEPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags);
+typedef void (APIENTRYP PFNDOLNAMEDBUFFERDATAPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage);
+typedef void (APIENTRYP PFNDOLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, const void *data);
+typedef void (APIENTRYP PFNDOLCOPYNAMEDBUFFERSUBDATAPROC) (GLuint readBuffer, GLuint writeBuffer, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDBUFFERDATAPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data);
+typedef void *(APIENTRYP PFNDOLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
+typedef void *(APIENTRYP PFNDOLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
+typedef GLboolean (APIENTRYP PFNDOLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNDOLFLUSHMAPPEDNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length);
+typedef void (APIENTRYP PFNDOLGETNAMEDBUFFERPARAMETERIVPROC) (GLuint buffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLGETNAMEDBUFFERPARAMETERI64VPROC) (GLuint buffer, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNDOLGETNAMEDBUFFERPOINTERVPROC) (GLuint buffer, GLenum pname, void **params);
+typedef void (APIENTRYP PFNDOLGETNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, void *data);
+typedef void (APIENTRYP PFNDOLCREATEFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERRENDERBUFFERPROC) (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERPARAMETERIPROC) (GLuint framebuffer, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERTEXTUREPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERTEXTURELAYERPROC) (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERPROC) (GLuint framebuffer, GLenum buf);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERSPROC) (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+typedef void (APIENTRYP PFNDOLNAMEDFRAMEBUFFERREADBUFFERPROC) (GLuint framebuffer, GLenum src);
+typedef void (APIENTRYP PFNDOLINVALIDATENAMEDFRAMEBUFFERDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments);
+typedef void (APIENTRYP PFNDOLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC) (GLuint framebuffer, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDFRAMEBUFFERIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLint *value);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDFRAMEBUFFERUIVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLuint *value);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDFRAMEBUFFERFVPROC) (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value);
+typedef void (APIENTRYP PFNDOLCLEARNAMEDFRAMEBUFFERFIPROC) (GLuint framebuffer, GLenum buffer, const GLfloat depth, GLint stencil);
+typedef void (APIENTRYP PFNDOLBLITNAMEDFRAMEBUFFERPROC) (GLuint readFramebuffer, GLuint drawFramebuffer, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+typedef GLenum (APIENTRYP PFNDOLCHECKNAMEDFRAMEBUFFERSTATUSPROC) (GLuint framebuffer, GLenum target);
+typedef void (APIENTRYP PFNDOLGETNAMEDFRAMEBUFFERPARAMETERIVPROC) (GLuint framebuffer, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNDOLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLCREATERENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
+typedef void (APIENTRYP PFNDOLNAMEDRENDERBUFFERSTORAGEPROC) (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLGETNAMEDRENDERBUFFERPARAMETERIVPROC) (GLuint renderbuffer, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLCREATETEXTURESPROC) (GLenum target, GLsizei n, GLuint *textures);
+typedef void (APIENTRYP PFNDOLTEXTUREBUFFERPROC) (GLuint texture, GLenum internalformat, GLuint buffer);
+typedef void (APIENTRYP PFNDOLTEXTUREBUFFERRANGEPROC) (GLuint texture, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
+typedef void (APIENTRYP PFNDOLTEXTURESTORAGE1DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width);
+typedef void (APIENTRYP PFNDOLTEXTURESTORAGE2DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLTEXTURESTORAGE3DPROC) (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
+typedef void (APIENTRYP PFNDOLTEXTURESTORAGE2DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNDOLTEXTURESTORAGE3DMULTISAMPLEPROC) (GLuint texture, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+typedef void (APIENTRYP PFNDOLTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNDOLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNDOLTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels);
+typedef void (APIENTRYP PFNDOLCOMPRESSEDTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNDOLCOMPRESSEDTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNDOLCOMPRESSEDTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data);
+typedef void (APIENTRYP PFNDOLCOPYTEXTURESUBIMAGE1DPROC) (GLuint texture, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+typedef void (APIENTRYP PFNDOLCOPYTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLCOPYTEXTURESUBIMAGE3DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERFPROC) (GLuint texture, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERIPROC) (GLuint texture, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, const GLint *params);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, const GLuint *params);
+typedef void (APIENTRYP PFNDOLTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNDOLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
+typedef void (APIENTRYP PFNDOLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
+typedef void (APIENTRYP PFNDOLGETTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNDOLGETCOMPRESSEDTEXTUREIMAGEPROC) (GLuint texture, GLint level, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNDOLGETTEXTURELEVELPARAMETERFVPROC) (GLuint texture, GLint level, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNDOLGETTEXTURELEVELPARAMETERIVPROC) (GLuint texture, GLint level, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLGETTEXTUREPARAMETERFVPROC) (GLuint texture, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNDOLGETTEXTUREPARAMETERIIVPROC) (GLuint texture, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLGETTEXTUREPARAMETERIUIVPROC) (GLuint texture, GLenum pname, GLuint *params);
+typedef void (APIENTRYP PFNDOLGETTEXTUREPARAMETERIVPROC) (GLuint texture, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNDOLCREATEVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
+typedef void (APIENTRYP PFNDOLDISABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNDOLENABLEVERTEXARRAYATTRIBPROC) (GLuint vaobj, GLuint index);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYELEMENTBUFFERPROC) (GLuint vaobj, GLuint buffer);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYVERTEXBUFFERPROC) (GLuint vaobj, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYVERTEXBUFFERSPROC) (GLuint vaobj, GLuint first, GLsizei count, const GLuint *buffers, const GLintptr *offsets, const GLsizei *strides);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYATTRIBBINDINGPROC) (GLuint vaobj, GLuint attribindex, GLuint bindingindex);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYATTRIBFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYATTRIBIFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYATTRIBLFORMATPROC) (GLuint vaobj, GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
+typedef void (APIENTRYP PFNDOLVERTEXARRAYBINDINGDIVISORPROC) (GLuint vaobj, GLuint bindingindex, GLuint divisor);
+typedef void (APIENTRYP PFNDOLGETVERTEXARRAYIVPROC) (GLuint vaobj, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNDOLGETVERTEXARRAYINDEXEDIVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
+typedef void (APIENTRYP PFNDOLGETVERTEXARRAYINDEXED64IVPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint64 *param);
+typedef void (APIENTRYP PFNDOLCREATESAMPLERSPROC) (GLsizei n, GLuint *samplers);
+typedef void (APIENTRYP PFNDOLCREATEPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
+typedef void (APIENTRYP PFNDOLCREATEQUERIESPROC) (GLenum target, GLsizei n, GLuint *ids);
+typedef void (APIENTRYP PFNDOLGETQUERYBUFFEROBJECTI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNDOLGETQUERYBUFFEROBJECTIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNDOLGETQUERYBUFFEROBJECTUI64VPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNDOLGETQUERYBUFFEROBJECTUIVPROC) (GLuint id, GLuint buffer, GLenum pname, GLintptr offset);
+typedef void (APIENTRYP PFNDOLMEMORYBARRIERBYREGIONPROC) (GLbitfield barriers);
+typedef void (APIENTRYP PFNDOLGETTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNDOLGETCOMPRESSEDTEXTURESUBIMAGEPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei bufSize, void *pixels);
+typedef GLenum (APIENTRYP PFNDOLGETGRAPHICSRESETSTATUSPROC) (void);
+typedef void (APIENTRYP PFNDOLGETNCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint lod, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNDOLGETNTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels);
+typedef void (APIENTRYP PFNDOLGETNUNIFORMDVPROC) (GLuint program, GLint location, GLsizei bufSize, GLdouble *params);
+typedef void (APIENTRYP PFNDOLGETNUNIFORMFVPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
+typedef void (APIENTRYP PFNDOLGETNUNIFORMIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
+typedef void (APIENTRYP PFNDOLGETNUNIFORMUIVPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
+typedef void (APIENTRYP PFNDOLREADNPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
+typedef void (APIENTRYP PFNDOLGETNMAPDVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
+typedef void (APIENTRYP PFNDOLGETNMAPFVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
+typedef void (APIENTRYP PFNDOLGETNMAPIVPROC) (GLenum target, GLenum query, GLsizei bufSize, GLint *v);
+typedef void (APIENTRYP PFNDOLGETNPIXELMAPFVPROC) (GLenum map, GLsizei bufSize, GLfloat *values);
+typedef void (APIENTRYP PFNDOLGETNPIXELMAPUIVPROC) (GLenum map, GLsizei bufSize, GLuint *values);
+typedef void (APIENTRYP PFNDOLGETNPIXELMAPUSVPROC) (GLenum map, GLsizei bufSize, GLushort *values);
+typedef void (APIENTRYP PFNDOLGETNPOLYGONSTIPPLEPROC) (GLsizei bufSize, GLubyte *pattern);
+typedef void (APIENTRYP PFNDOLGETNCOLORTABLEPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *table);
+typedef void (APIENTRYP PFNDOLGETNCONVOLUTIONFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei bufSize, void *image);
+typedef void (APIENTRYP PFNDOLGETNSEPARABLEFILTERPROC) (GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, void *row, GLsizei columnBufSize, void *column, void *span);
+typedef void (APIENTRYP PFNDOLGETNHISTOGRAMPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
+typedef void (APIENTRYP PFNDOLGETNMINMAXPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, void *values);
+typedef void (APIENTRYP PFNDOLTEXTUREBARRIERPROC) (void);
+
+extern PFNDOLCREATETRANSFORMFEEDBACKSPROC dolCreateTransformFeedbacks;
+extern PFNDOLTRANSFORMFEEDBACKBUFFERBASEPROC dolTransformFeedbackBufferBase;
+extern PFNDOLTRANSFORMFEEDBACKBUFFERRANGEPROC dolTransformFeedbackBufferRange;
+extern PFNDOLGETTRANSFORMFEEDBACKIVPROC dolGetTransformFeedbackiv;
+extern PFNDOLGETTRANSFORMFEEDBACKI_VPROC dolGetTransformFeedbacki_v;
+extern PFNDOLGETTRANSFORMFEEDBACKI64_VPROC dolGetTransformFeedbacki64_v;
+extern PFNDOLCREATEBUFFERSPROC dolCreateBuffers;
+extern PFNDOLNAMEDBUFFERSTORAGEPROC dolNamedBufferStorage;
+extern PFNDOLNAMEDBUFFERDATAPROC dolNamedBufferData;
+extern PFNDOLNAMEDBUFFERSUBDATAPROC dolNamedBufferSubData;
+extern PFNDOLCOPYNAMEDBUFFERSUBDATAPROC dolCopyNamedBufferSubData;
+extern PFNDOLCLEARNAMEDBUFFERDATAPROC dolClearNamedBufferData;
+extern PFNDOLCLEARNAMEDBUFFERSUBDATAPROC dolClearNamedBufferSubData;
+extern PFNDOLMAPNAMEDBUFFERPROC dolMapNamedBuffer;
+extern PFNDOLMAPNAMEDBUFFERRANGEPROC dolMapNamedBufferRange;
+extern PFNDOLUNMAPNAMEDBUFFERPROC dolUnmapNamedBuffer;
+extern PFNDOLFLUSHMAPPEDNAMEDBUFFERRANGEPROC dolFlushMappedNamedBufferRange;
+extern PFNDOLGETNAMEDBUFFERPARAMETERIVPROC dolGetNamedBufferParameteriv;
+extern PFNDOLGETNAMEDBUFFERPARAMETERI64VPROC dolGetNamedBufferParameteri64v;
+extern PFNDOLGETNAMEDBUFFERPOINTERVPROC dolGetNamedBufferPointerv;
+extern PFNDOLGETNAMEDBUFFERSUBDATAPROC dolGetNamedBufferSubData;
+extern PFNDOLCREATEFRAMEBUFFERSPROC dolCreateFramebuffers;
+extern PFNDOLNAMEDFRAMEBUFFERRENDERBUFFERPROC dolNamedFramebufferRenderbuffer;
+extern PFNDOLNAMEDFRAMEBUFFERPARAMETERIPROC dolNamedFramebufferParameteri;
+extern PFNDOLNAMEDFRAMEBUFFERTEXTUREPROC dolNamedFramebufferTexture;
+extern PFNDOLNAMEDFRAMEBUFFERTEXTURELAYERPROC dolNamedFramebufferTextureLayer;
+extern PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERPROC dolNamedFramebufferDrawBuffer;
+extern PFNDOLNAMEDFRAMEBUFFERDRAWBUFFERSPROC dolNamedFramebufferDrawBuffers;
+extern PFNDOLNAMEDFRAMEBUFFERREADBUFFERPROC dolNamedFramebufferReadBuffer;
+extern PFNDOLINVALIDATENAMEDFRAMEBUFFERDATAPROC dolInvalidateNamedFramebufferData;
+extern PFNDOLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC dolInvalidateNamedFramebufferSubData;
+extern PFNDOLCLEARNAMEDFRAMEBUFFERIVPROC dolClearNamedFramebufferiv;
+extern PFNDOLCLEARNAMEDFRAMEBUFFERUIVPROC dolClearNamedFramebufferuiv;
+extern PFNDOLCLEARNAMEDFRAMEBUFFERFVPROC dolClearNamedFramebufferfv;
+extern PFNDOLCLEARNAMEDFRAMEBUFFERFIPROC dolClearNamedFramebufferfi;
+extern PFNDOLBLITNAMEDFRAMEBUFFERPROC dolBlitNamedFramebuffer;
+extern PFNDOLCHECKNAMEDFRAMEBUFFERSTATUSPROC dolCheckNamedFramebufferStatus;
+extern PFNDOLGETNAMEDFRAMEBUFFERPARAMETERIVPROC dolGetNamedFramebufferParameteriv;
+extern PFNDOLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC dolGetNamedFramebufferAttachmentParameteriv;
+extern PFNDOLCREATERENDERBUFFERSPROC dolCreateRenderbuffers;
+extern PFNDOLNAMEDRENDERBUFFERSTORAGEPROC dolNamedRenderbufferStorage;
+extern PFNDOLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC dolNamedRenderbufferStorageMultisample;
+extern PFNDOLGETNAMEDRENDERBUFFERPARAMETERIVPROC dolGetNamedRenderbufferParameteriv;
+extern PFNDOLCREATETEXTURESPROC dolCreateTextures;
+extern PFNDOLTEXTUREBUFFERPROC dolTextureBuffer;
+extern PFNDOLTEXTUREBUFFERRANGEPROC dolTextureBufferRange;
+extern PFNDOLTEXTURESTORAGE1DPROC dolTextureStorage1D;
+extern PFNDOLTEXTURESTORAGE2DPROC dolTextureStorage2D;
+extern PFNDOLTEXTURESTORAGE3DPROC dolTextureStorage3D;
+extern PFNDOLTEXTURESTORAGE2DMULTISAMPLEPROC dolTextureStorage2DMultisample;
+extern PFNDOLTEXTURESTORAGE3DMULTISAMPLEPROC dolTextureStorage3DMultisample;
+extern PFNDOLTEXTURESUBIMAGE1DPROC dolTextureSubImage1D;
+extern PFNDOLTEXTURESUBIMAGE2DPROC dolTextureSubImage2D;
+extern PFNDOLTEXTURESUBIMAGE3DPROC dolTextureSubImage3D;
+extern PFNDOLCOMPRESSEDTEXTURESUBIMAGE1DPROC dolCompressedTextureSubImage1D;
+extern PFNDOLCOMPRESSEDTEXTURESUBIMAGE2DPROC dolCompressedTextureSubImage2D;
+extern PFNDOLCOMPRESSEDTEXTURESUBIMAGE3DPROC dolCompressedTextureSubImage3D;
+extern PFNDOLCOPYTEXTURESUBIMAGE1DPROC dolCopyTextureSubImage1D;
+extern PFNDOLCOPYTEXTURESUBIMAGE2DPROC dolCopyTextureSubImage2D;
+extern PFNDOLCOPYTEXTURESUBIMAGE3DPROC dolCopyTextureSubImage3D;
+extern PFNDOLTEXTUREPARAMETERFPROC dolTextureParameterf;
+extern PFNDOLTEXTUREPARAMETERFVPROC dolTextureParameterfv;
+extern PFNDOLTEXTUREPARAMETERIPROC dolTextureParameteri;
+extern PFNDOLTEXTUREPARAMETERIIVPROC dolTextureParameterIiv;
+extern PFNDOLTEXTUREPARAMETERIUIVPROC dolTextureParameterIuiv;
+extern PFNDOLTEXTUREPARAMETERIVPROC dolTextureParameteriv;
+extern PFNDOLGENERATETEXTUREMIPMAPPROC dolGenerateTextureMipmap;
+extern PFNDOLBINDTEXTUREUNITPROC dolBindTextureUnit;
+extern PFNDOLGETTEXTUREIMAGEPROC dolGetTextureImage;
+extern PFNDOLGETCOMPRESSEDTEXTUREIMAGEPROC dolGetCompressedTextureImage;
+extern PFNDOLGETTEXTURELEVELPARAMETERFVPROC dolGetTextureLevelParameterfv;
+extern PFNDOLGETTEXTURELEVELPARAMETERIVPROC dolGetTextureLevelParameteriv;
+extern PFNDOLGETTEXTUREPARAMETERFVPROC dolGetTextureParameterfv;
+extern PFNDOLGETTEXTUREPARAMETERIIVPROC dolGetTextureParameterIiv;
+extern PFNDOLGETTEXTUREPARAMETERIUIVPROC dolGetTextureParameterIuiv;
+extern PFNDOLGETTEXTUREPARAMETERIVPROC dolGetTextureParameteriv;
+extern PFNDOLCREATEVERTEXARRAYSPROC dolCreateVertexArrays;
+extern PFNDOLDISABLEVERTEXARRAYATTRIBPROC dolDisableVertexArrayAttrib;
+extern PFNDOLENABLEVERTEXARRAYATTRIBPROC dolEnableVertexArrayAttrib;
+extern PFNDOLVERTEXARRAYELEMENTBUFFERPROC dolVertexArrayElementBuffer;
+extern PFNDOLVERTEXARRAYVERTEXBUFFERPROC dolVertexArrayVertexBuffer;
+extern PFNDOLVERTEXARRAYVERTEXBUFFERSPROC dolVertexArrayVertexBuffers;
+extern PFNDOLVERTEXARRAYATTRIBBINDINGPROC dolVertexArrayAttribBinding;
+extern PFNDOLVERTEXARRAYATTRIBFORMATPROC dolVertexArrayAttribFormat;
+extern PFNDOLVERTEXARRAYATTRIBIFORMATPROC dolVertexArrayAttribIFormat;
+extern PFNDOLVERTEXARRAYATTRIBLFORMATPROC dolVertexArrayAttribLFormat;
+extern PFNDOLVERTEXARRAYBINDINGDIVISORPROC dolVertexArrayBindingDivisor;
+extern PFNDOLGETVERTEXARRAYIVPROC dolGetVertexArrayiv;
+extern PFNDOLGETVERTEXARRAYINDEXEDIVPROC dolGetVertexArrayIndexediv;
+extern PFNDOLGETVERTEXARRAYINDEXED64IVPROC dolGetVertexArrayIndexed64iv;
+extern PFNDOLCREATESAMPLERSPROC dolCreateSamplers;
+extern PFNDOLCREATEPROGRAMPIPELINESPROC dolCreateProgramPipelines;
+extern PFNDOLCREATEQUERIESPROC dolCreateQueries;
+extern PFNDOLGETQUERYBUFFEROBJECTI64VPROC dolGetQueryBufferObjecti64v;
+extern PFNDOLGETQUERYBUFFEROBJECTIVPROC dolGetQueryBufferObjectiv;
+extern PFNDOLGETQUERYBUFFEROBJECTUI64VPROC dolGetQueryBufferObjectui64v;
+extern PFNDOLGETQUERYBUFFEROBJECTUIVPROC dolGetQueryBufferObjectuiv;
+extern PFNDOLMEMORYBARRIERBYREGIONPROC dolMemoryBarrierByRegion;
+extern PFNDOLGETTEXTURESUBIMAGEPROC dolGetTextureSubImage;
+extern PFNDOLGETCOMPRESSEDTEXTURESUBIMAGEPROC dolGetCompressedTextureSubImage;
+extern PFNDOLGETGRAPHICSRESETSTATUSPROC dolGetGraphicsResetStatus;
+extern PFNDOLGETNCOMPRESSEDTEXIMAGEPROC dolGetnCompressedTexImage;
+extern PFNDOLGETNTEXIMAGEPROC dolGetnTexImage;
+extern PFNDOLGETNUNIFORMDVPROC dolGetnUniformdv;
+extern PFNDOLGETNUNIFORMFVPROC dolGetnUniformfv;
+extern PFNDOLGETNUNIFORMIVPROC dolGetnUniformiv;
+extern PFNDOLGETNUNIFORMUIVPROC dolGetnUniformuiv;
+extern PFNDOLREADNPIXELSPROC dolReadnPixels;
+extern PFNDOLGETNMAPDVPROC dolGetnMapdv;
+extern PFNDOLGETNMAPFVPROC dolGetnMapfv;
+extern PFNDOLGETNMAPIVPROC dolGetnMapiv;
+extern PFNDOLGETNPIXELMAPFVPROC dolGetnPixelMapfv;
+extern PFNDOLGETNPIXELMAPUIVPROC dolGetnPixelMapuiv;
+extern PFNDOLGETNPIXELMAPUSVPROC dolGetnPixelMapusv;
+extern PFNDOLGETNPOLYGONSTIPPLEPROC dolGetnPolygonStipple;
+extern PFNDOLGETNCOLORTABLEPROC dolGetnColorTable;
+extern PFNDOLGETNCONVOLUTIONFILTERPROC dolGetnConvolutionFilter;
+extern PFNDOLGETNSEPARABLEFILTERPROC dolGetnSeparableFilter;
+extern PFNDOLGETNHISTOGRAMPROC dolGetnHistogram;
+extern PFNDOLGETNMINMAXPROC dolGetnMinmax;
+extern PFNDOLTEXTUREBARRIERPROC dolTextureBarrier;
+
+#define glCreateTransformFeedbacks dolCreateTransformFeedbacks
+#define glTransformFeedbackBufferBase dolTransformFeedbackBufferBase
+#define glTransformFeedbackBufferRange dolTransformFeedbackBufferRange
+#define glGetTransformFeedbackiv dolGetTransformFeedbackiv
+#define glGetTransformFeedbacki_v dolGetTransformFeedbacki_v
+#define glGetTransformFeedbacki64_v dolGetTransformFeedbacki64_v
+#define glCreateBuffers dolCreateBuffers
+#define glNamedBufferStorage dolNamedBufferStorage
+#define glNamedBufferData dolNamedBufferData
+#define glNamedBufferSubData dolNamedBufferSubData
+#define glCopyNamedBufferSubData dolCopyNamedBufferSubData
+#define glClearNamedBufferData dolClearNamedBufferData
+#define glClearNamedBufferSubData dolClearNamedBufferSubData
+#define glMapNamedBuffer dolMapNamedBuffer
+#define glMapNamedBufferRange dolMapNamedBufferRange
+#define glUnmapNamedBuffer dolUnmapNamedBuffer
+#define glFlushMappedNamedBufferRange dolFlushMappedNamedBufferRange
+#define glGetNamedBufferParameteriv dolGetNamedBufferParameteriv
+#define glGetNamedBufferParameteri64v dolGetNamedBufferParameteri64v
+#define glGetNamedBufferPointerv dolGetNamedBufferPointerv
+#define glGetNamedBufferSubData dolGetNamedBufferSubData
+#define glCreateFramebuffers dolCreateFramebuffers
+#define glNamedFramebufferRenderbuffer dolNamedFramebufferRenderbuffer
+#define glNamedFramebufferParameteri dolNamedFramebufferParameteri
+#define glNamedFramebufferTexture dolNamedFramebufferTexture
+#define glNamedFramebufferTextureLayer dolNamedFramebufferTextureLayer
+#define glNamedFramebufferDrawBuffer dolNamedFramebufferDrawBuffer
+#define glNamedFramebufferDrawBuffers dolNamedFramebufferDrawBuffers
+#define glNamedFramebufferReadBuffer dolNamedFramebufferReadBuffer
+#define glInvalidateNamedFramebufferData dolInvalidateNamedFramebufferData
+#define glInvalidateNamedFramebufferSubData dolInvalidateNamedFramebufferSubData
+#define glClearNamedFramebufferiv dolClearNamedFramebufferiv
+#define glClearNamedFramebufferuiv dolClearNamedFramebufferuiv
+#define glClearNamedFramebufferfv dolClearNamedFramebufferfv
+#define glClearNamedFramebufferfi dolClearNamedFramebufferfi
+#define glBlitNamedFramebuffer dolBlitNamedFramebuffer
+#define glCheckNamedFramebufferStatus dolCheckNamedFramebufferStatus
+#define glGetNamedFramebufferParameteriv dolGetNamedFramebufferParameteriv
+#define glGetNamedFramebufferAttachmentParameteriv dolGetNamedFramebufferAttachmentParameteriv
+#define glCreateRenderbuffers dolCreateRenderbuffers
+#define glNamedRenderbufferStorage dolNamedRenderbufferStorage
+#define glNamedRenderbufferStorageMultisample dolNamedRenderbufferStorageMultisample
+#define glGetNamedRenderbufferParameteriv dolGetNamedRenderbufferParameteriv
+#define glCreateTextures dolCreateTextures
+#define glTextureBuffer dolTextureBuffer
+#define glTextureBufferRange dolTextureBufferRange
+#define glTextureStorage1D dolTextureStorage1D
+#define glTextureStorage2D dolTextureStorage2D
+#define glTextureStorage3D dolTextureStorage3D
+#define glTextureStorage2DMultisample dolTextureStorage2DMultisample
+#define glTextureStorage3DMultisample dolTextureStorage3DMultisample
+#define glTextureSubImage1D dolTextureSubImage1D
+#define glTextureSubImage2D dolTextureSubImage2D
+#define glTextureSubImage3D dolTextureSubImage3D
+#define glCompressedTextureSubImage1D dolCompressedTextureSubImage1D
+#define glCompressedTextureSubImage2D dolCompressedTextureSubImage2D
+#define glCompressedTextureSubImage3D dolCompressedTextureSubImage3D
+#define glCopyTextureSubImage1D dolCopyTextureSubImage1D
+#define glCopyTextureSubImage2D dolCopyTextureSubImage2D
+#define glCopyTextureSubImage3D dolCopyTextureSubImage3D
+#define glTextureParameterf dolTextureParameterf
+#define glTextureParameterfv dolTextureParameterfv
+#define glTextureParameteri dolTextureParameteri
+#define glTextureParameterIiv dolTextureParameterIiv
+#define glTextureParameterIuiv dolTextureParameterIuiv
+#define glTextureParameteriv dolTextureParameteriv
+#define glGenerateTextureMipmap dolGenerateTextureMipmap
+#define glBindTextureUnit dolBindTextureUnit
+#define glGetTextureImage dolGetTextureImage
+#define glGetCompressedTextureImage dolGetCompressedTextureImage
+#define glGetTextureLevelParameterfv dolGetTextureLevelParameterfv
+#define glGetTextureLevelParameteriv dolGetTextureLevelParameteriv
+#define glGetTextureParameterfv dolGetTextureParameterfv
+#define glGetTextureParameterIiv dolGetTextureParameterIiv
+#define glGetTextureParameterIuiv dolGetTextureParameterIuiv
+#define glGetTextureParameteriv dolGetTextureParameteriv
+#define glCreateVertexArrays dolCreateVertexArrays
+#define glDisableVertexArrayAttrib dolDisableVertexArrayAttrib
+#define glEnableVertexArrayAttrib dolEnableVertexArrayAttrib
+#define glVertexArrayElementBuffer dolVertexArrayElementBuffer
+#define glVertexArrayVertexBuffer dolVertexArrayVertexBuffer
+#define glVertexArrayVertexBuffers dolVertexArrayVertexBuffers
+#define glVertexArrayAttribBinding dolVertexArrayAttribBinding
+#define glVertexArrayAttribFormat dolVertexArrayAttribFormat
+#define glVertexArrayAttribIFormat dolVertexArrayAttribIFormat
+#define glVertexArrayAttribLFormat dolVertexArrayAttribLFormat
+#define glVertexArrayBindingDivisor dolVertexArrayBindingDivisor
+#define glGetVertexArrayiv dolGetVertexArrayiv
+#define glGetVertexArrayIndexediv dolGetVertexArrayIndexediv
+#define glGetVertexArrayIndexed64iv dolGetVertexArrayIndexed64iv
+#define glCreateSamplers dolCreateSamplers
+#define glCreateProgramPipelines dolCreateProgramPipelines
+#define glCreateQueries dolCreateQueries
+#define glGetQueryBufferObjecti64v dolGetQueryBufferObjecti64v
+#define glGetQueryBufferObjectiv dolGetQueryBufferObjectiv
+#define glGetQueryBufferObjectui64v dolGetQueryBufferObjectui64v
+#define glGetQueryBufferObjectuiv dolGetQueryBufferObjectuiv
+#define glMemoryBarrierByRegion dolMemoryBarrierByRegion
+#define glGetTextureSubImage dolGetTextureSubImage
+#define glGetCompressedTextureSubImage dolGetCompressedTextureSubImage
+#define glGetGraphicsResetStatus dolGetGraphicsResetStatus
+#define glGetnCompressedTexImage dolGetnCompressedTexImage
+#define glGetnTexImage dolGetnTexImage
+#define glGetnUniformdv dolGetnUniformdv
+#define glGetnUniformfv dolGetnUniformfv
+#define glGetnUniformiv dolGetnUniformiv
+#define glGetnUniformuiv dolGetnUniformuiv
+#define glReadnPixels dolReadnPixels
+#define glGetnMapdv dolGetnMapdv
+#define glGetnMapfv dolGetnMapfv
+#define glGetnMapiv dolGetnMapiv
+#define glGetnPixelMapfv dolGetnPixelMapfv
+#define glGetnPixelMapuiv dolGetnPixelMapuiv
+#define glGetnPixelMapusv dolGetnPixelMapusv
+#define glGetnPolygonStipple dolGetnPolygonStipple
+#define glGetnColorTable dolGetnColorTable
+#define glGetnConvolutionFilter dolGetnConvolutionFilter
+#define glGetnSeparableFilter dolGetnSeparableFilter
+#define glGetnHistogram dolGetnHistogram
+#define glGetnMinmax dolGetnMinmax
+#define glTextureBarrier dolTextureBarrier
+
+