111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright 2013 The Android Open Source Project
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Licensed under the Apache License, Version 2.0 (the "License");
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * you may not use this file except in compliance with the License.
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * You may obtain a copy of the License at
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *      http://www.apache.org/licenses/LICENSE-2.0
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Unless required by applicable law or agreed to in writing, software
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distributed under the License is distributed on an "AS IS" BASIS,
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the License for the specific language governing permissions and
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * limitations under the License.
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <EGL/egl.h>
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "gl3stub.h"
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGLboolean gl3stubInit()
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define FIND_PROC(s) s = (void*)eglGetProcAddress(#s);
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glReadBuffer );
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDrawRangeElements );
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glTexImage3D );
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glTexSubImage3D );
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glCopyTexSubImage3D );
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glCompressedTexImage3D );
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glCompressedTexSubImage3D );
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGenQueries );
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDeleteQueries );
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glIsQuery );
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBeginQuery );
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glEndQuery );
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetQueryiv );
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetQueryObjectuiv );
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUnmapBuffer );
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetBufferPointerv );
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDrawBuffers );
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix2x3fv );
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix3x2fv );
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix2x4fv );
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix4x2fv );
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix3x4fv );
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformMatrix4x3fv );
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBlitFramebuffer );
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glRenderbufferStorageMultisample );
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glFramebufferTextureLayer );
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glMapBufferRange );
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glFlushMappedBufferRange );
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBindVertexArray );
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDeleteVertexArrays );
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGenVertexArrays );
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glIsVertexArray );
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetIntegeri_v );
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBeginTransformFeedback );
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glEndTransformFeedback );
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBindBufferRange );
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBindBufferBase );
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glTransformFeedbackVaryings );
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetTransformFeedbackVarying );
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribIPointer );
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetVertexAttribIiv );
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetVertexAttribIuiv );
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribI4i );
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribI4ui );
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribI4iv );
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribI4uiv );
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetUniformuiv );
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetFragDataLocation );
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform1ui );
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform2ui );
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform3ui );
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform4ui );
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform1uiv );
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform2uiv );
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform3uiv );
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniform4uiv );
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glClearBufferiv );
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glClearBufferuiv );
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glClearBufferfv );
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glClearBufferfi );
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetStringi );
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glCopyBufferSubData );
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetUniformIndices );
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetActiveUniformsiv );
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetUniformBlockIndex );
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetActiveUniformBlockiv );
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetActiveUniformBlockName );
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glUniformBlockBinding );
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDrawArraysInstanced );
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDrawElementsInstanced );
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glFenceSync );
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glIsSync );
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDeleteSync );
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glClientWaitSync );
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glWaitSync );
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetInteger64v );
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetSynciv );
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetInteger64i_v );
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetBufferParameteri64v );
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGenSamplers );
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDeleteSamplers );
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glIsSampler );
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBindSampler );
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glSamplerParameteri );
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glSamplerParameteriv );
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glSamplerParameterf );
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glSamplerParameterfv );
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetSamplerParameteriv );
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetSamplerParameterfv );
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glVertexAttribDivisor );
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glBindTransformFeedback );
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glDeleteTransformFeedbacks );
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGenTransformFeedbacks );
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glIsTransformFeedback );
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glPauseTransformFeedback );
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glResumeTransformFeedback );
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetProgramBinary );
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glProgramBinary );
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glProgramParameteri );
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glInvalidateFramebuffer );
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glInvalidateSubFramebuffer );
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glTexStorage2D );
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glTexStorage3D );
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    FIND_PROC( glGetInternalformativ );
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#undef FIND_PROC
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    if( !glReadBuffer || !glDrawRangeElements || !glTexImage3D || !glTexSubImage3D
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glCopyTexSubImage3D || !glCompressedTexImage3D
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glIsQuery || !glBeginQuery || !glEndQuery || !glGetQueryiv
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glUniformMatrix2x4fv || !glUniformMatrix4x2fv || !glUniformMatrix3x4fv
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glUniformMatrix4x3fv || !glBlitFramebuffer
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glRenderbufferStorageMultisample || !glFramebufferTextureLayer
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glMapBufferRange || !glFlushMappedBufferRange || !glBindVertexArray
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glDeleteVertexArrays || !glGenVertexArrays || !glIsVertexArray
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetIntegeri_v || !glBeginTransformFeedback || !glEndTransformFeedback
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glBindBufferRange || !glBindBufferBase || !glTransformFeedbackVaryings
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetTransformFeedbackVarying || !glVertexAttribIPointer
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetVertexAttribIiv || !glGetVertexAttribIuiv || !glVertexAttribI4i
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glVertexAttribI4ui || !glVertexAttribI4iv || !glVertexAttribI4uiv
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetUniformuiv || !glGetFragDataLocation || !glUniform1ui
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glUniform2ui || !glUniform3ui || !glUniform4ui || !glUniform1uiv
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glUniform2uiv || !glUniform3uiv || !glUniform4uiv || !glClearBufferiv
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glClearBufferuiv || !glClearBufferfv || !glClearBufferfi || !glGetStringi
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glCopyBufferSubData || !glGetUniformIndices || !glGetActiveUniformsiv
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetUniformBlockIndex || !glGetActiveUniformBlockiv
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetActiveUniformBlockName || !glUniformBlockBinding
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glDrawArraysInstanced || !glDrawElementsInstanced || !glFenceSync
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glIsSync || !glDeleteSync || !glClientWaitSync || !glWaitSync
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetInteger64v || !glGetSynciv || !glGetInteger64i_v
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetBufferParameteri64v || !glGenSamplers || !glDeleteSamplers
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glIsSampler || !glBindSampler || !glSamplerParameteri
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glSamplerParameteriv || !glSamplerParameterf || !glSamplerParameterfv
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetSamplerParameteriv || !glGetSamplerParameterfv
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glVertexAttribDivisor || !glBindTransformFeedback
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glDeleteTransformFeedbacks || !glGenTransformFeedbacks
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glIsTransformFeedback || !glPauseTransformFeedback
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glResumeTransformFeedback || !glGetProgramBinary || !glProgramBinary
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glProgramParameteri || !glInvalidateFramebuffer
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glInvalidateSubFramebuffer || !glTexStorage2D || !glTexStorage3D
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert            || !glGetInternalformativ )
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    {
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        return GL_FALSE;
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    }
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return GL_TRUE;
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert}
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Function pointer definitions */GL_APICALL void (* GL_APIENTRY glReadBuffer)( GLenum mode );
17411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDrawRangeElements)( GLenum mode,
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint start,
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint end,
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum type,
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* indices );
18011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glTexImage3D)( GLenum target,
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint internalformat,
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height,
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei depth,
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint border,
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum format,
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum type,
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* pixels );
19011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glTexSubImage3D)( GLenum target,
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint xoffset,
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint yoffset,
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint zoffset,
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height,
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei depth,
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum format,
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum type,
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* pixels );
20111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D)( GLenum target,
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint xoffset,
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint yoffset,
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint zoffset,
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint x,
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint y,
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height );
21011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glCompressedTexImage3D)( GLenum target,
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum internalformat,
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height,
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei depth,
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint border,
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei imageSize,
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* data );
21911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D)( GLenum target,
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint xoffset,
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint yoffset,
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint zoffset,
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height,
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei depth,
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum format,
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei imageSize,
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* data );
23011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGenQueries)( GLsizei n, GLuint* ids );
23111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDeleteQueries)( GLsizei n, const GLuint* ids );
23211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glIsQuery)( GLuint id );
23311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBeginQuery)( GLenum target, GLuint id );
23411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glEndQuery)( GLenum target );
23511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetQueryiv)( GLenum target, GLenum pname, GLint* params );
23611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv)( GLuint id,
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint* params );
23911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer)( GLenum target );
24011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetBufferPointerv)( GLenum target,
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLvoid** params );
24311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDrawBuffers)( GLsizei n, const GLenum* bufs );
24411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv)( GLint location,
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
24811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv)( GLint location,
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
25211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv)( GLint location,
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
25611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv)( GLint location,
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
26011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv)( GLint location,
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
26411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv)( GLint location,
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLboolean transpose,
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
26811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBlitFramebuffer)( GLint srcX0,
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint srcY0,
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint srcX1,
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint srcY1,
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint dstX0,
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint dstY0,
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint dstX1,
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint dstY1,
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLbitfield mask,
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum filter );
27811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample)( GLenum target,
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei samples,
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum internalformat,
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height );
28311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer)( GLenum target,
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum attachment,
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint texture,
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint level,
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint layer );
28811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange)( GLenum target,
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLintptr offset,
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizeiptr length,
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLbitfield access );
29211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange)( GLenum target,
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLintptr offset,
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizeiptr length );
29511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBindVertexArray)( GLuint array );
29611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDeleteVertexArrays)( GLsizei n, const GLuint* arrays );
29711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGenVertexArrays)( GLsizei n, GLuint* arrays );
29811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray)( GLuint array );
29911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetIntegeri_v)( GLenum target,
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint index,
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* data );
30211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBeginTransformFeedback)( GLenum primitiveMode );
30311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glEndTransformFeedback)( void );
30411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBindBufferRange)( GLenum target,
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint index,
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint buffer,
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLintptr offset,
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizeiptr size );
30911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBindBufferBase)( GLenum target,
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint index,
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint buffer );
31211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings)( GLuint program,
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLchar* const * varyings,
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum bufferMode );
31611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying)( GLuint program,
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint index,
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei bufSize,
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei* length,
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei* size,
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum* type,
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLchar* name );
32311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribIPointer)( GLuint index,
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint size,
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum type,
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei stride,
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* pointer );
32811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv)( GLuint index,
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* params );
33111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv)( GLuint index,
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint* params );
33411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribI4i)( GLuint index,
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint x,
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint y,
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint z,
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint w );
33911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribI4ui)( GLuint index,
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint x,
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint y,
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint z,
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint w );
34411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribI4iv)( GLuint index, const GLint* v );
34511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv)( GLuint index, const GLuint* v );
34611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetUniformuiv)( GLuint program,
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint location,
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint* params );
34911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation)( GLuint program,
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLchar *name );
35111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform1ui)( GLint location, GLuint v0 );
35211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform2ui)( GLint location, GLuint v0, GLuint v1 );
35311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform3ui)( GLint location,
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v0,
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v1,
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v2 );
35711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform4ui)( GLint location,
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v0,
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v1,
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v2,
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint v3 );
36211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform1uiv)( GLint location,
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* value );
36511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform2uiv)( GLint location,
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* value );
36811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform3uiv)( GLint location,
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* value );
37111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniform4uiv)( GLint location,
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* value );
37411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glClearBufferiv)( GLenum buffer,
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint drawbuffer,
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLint* value );
37711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glClearBufferuiv)( GLenum buffer,
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint drawbuffer,
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* value );
38011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glClearBufferfv)( GLenum buffer,
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint drawbuffer,
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* value );
38311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glClearBufferfi)( GLenum buffer,
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint drawbuffer,
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLfloat depth,
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint stencil );
38711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi)( GLenum name, GLuint index );
38811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glCopyBufferSubData)( GLenum readTarget,
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum writeTarget,
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLintptr readOffset,
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLintptr writeOffset,
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizeiptr size );
39311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetUniformIndices)( GLuint program,
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei uniformCount,
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLchar* const * uniformNames,
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint* uniformIndices );
39711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv)( GLuint program,
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei uniformCount,
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLuint* uniformIndices,
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* params );
40211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex)( GLuint program,
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLchar* uniformBlockName );
40411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv)( GLuint program,
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint uniformBlockIndex,
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* params );
40811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName)( GLuint program,
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint uniformBlockIndex,
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei bufSize,
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei* length,
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLchar* uniformBlockName );
41311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glUniformBlockBinding)( GLuint program,
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint uniformBlockIndex,
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint uniformBlockBinding );
41611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDrawArraysInstanced)( GLenum mode,
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint first,
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei instanceCount );
42011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDrawElementsInstanced)( GLenum mode,
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei count,
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum type,
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* indices,
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei instanceCount );
42511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLsync (* GL_APIENTRY glFenceSync)( GLenum condition, GLbitfield flags );
42611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glIsSync)( GLsync sync );
42711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDeleteSync)( GLsync sync );
42811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLenum (* GL_APIENTRY glClientWaitSync)( GLsync sync,
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLbitfield flags,
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint64 timeout );
43111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glWaitSync)( GLsync sync,
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLbitfield flags,
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint64 timeout );
43411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetInteger64v)( GLenum pname, GLint64* params );
43511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetSynciv)( GLsync sync,
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei bufSize,
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei* length,
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* values );
44011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetInteger64i_v)( GLenum target,
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLuint index,
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint64* data );
44311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v)( GLenum target,
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint64* params );
44611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGenSamplers)( GLsizei count, GLuint* samplers );
44711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDeleteSamplers)( GLsizei count, const GLuint* samplers );
44811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glIsSampler)( GLuint sampler );
44911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBindSampler)( GLuint unit, GLuint sampler );
45011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glSamplerParameteri)( GLuint sampler,
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint param );
45311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glSamplerParameteriv)( GLuint sampler,
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLint* param );
45611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glSamplerParameterf)( GLuint sampler,
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLfloat param );
45911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glSamplerParameterfv)( GLuint sampler,
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLfloat* param );
46211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv)( GLuint sampler,
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* params );
46511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv)( GLuint sampler,
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLfloat* params );
46811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glVertexAttribDivisor)( GLuint index, GLuint divisor );
46911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glBindTransformFeedback)( GLenum target, GLuint id );
47011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks)( GLsizei n, const GLuint* ids );
47111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks)( GLsizei n, GLuint* ids );
47211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback)( GLuint id );
47311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glPauseTransformFeedback)( void );
47411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glResumeTransformFeedback)( void );
47511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetProgramBinary)( GLuint program,
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei bufSize,
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei* length,
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum* binaryFormat,
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLvoid* binary );
48011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glProgramBinary)( GLuint program,
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum binaryFormat,
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLvoid* binary,
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei length );
48411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glProgramParameteri)( GLuint program,
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint value );
48711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer)( GLenum target,
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei numAttachments,
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLenum* attachments );
49011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer)( GLenum target,
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei numAttachments,
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const GLenum* attachments,
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint x,
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint y,
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height );
49711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glTexStorage2D)( GLenum target,
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei levels,
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum internalformat,
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height );
50211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glTexStorage3D)( GLenum target,
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei levels,
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum internalformat,
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei width,
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei height,
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei depth );
50811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertGL_APICALL void (* GL_APIENTRY glGetInternalformativ)( GLenum target,
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum internalformat,
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLenum pname,
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLsizei bufSize,
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        GLint* params );
513