1 /* 2 * Copyright 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <EGL/egl.h> 18 #include "gl3stub.h" 19 20 GLboolean gl3stubInit() { 21 #define FIND_PROC(s) s = (void*)eglGetProcAddress(#s) 22 FIND_PROC(glReadBuffer); 23 FIND_PROC(glDrawRangeElements); 24 FIND_PROC(glTexImage3D); 25 FIND_PROC(glTexSubImage3D); 26 FIND_PROC(glCopyTexSubImage3D); 27 FIND_PROC(glCompressedTexImage3D); 28 FIND_PROC(glCompressedTexSubImage3D); 29 FIND_PROC(glGenQueries); 30 FIND_PROC(glDeleteQueries); 31 FIND_PROC(glIsQuery); 32 FIND_PROC(glBeginQuery); 33 FIND_PROC(glEndQuery); 34 FIND_PROC(glGetQueryiv); 35 FIND_PROC(glGetQueryObjectuiv); 36 FIND_PROC(glUnmapBuffer); 37 FIND_PROC(glGetBufferPointerv); 38 FIND_PROC(glDrawBuffers); 39 FIND_PROC(glUniformMatrix2x3fv); 40 FIND_PROC(glUniformMatrix3x2fv); 41 FIND_PROC(glUniformMatrix2x4fv); 42 FIND_PROC(glUniformMatrix4x2fv); 43 FIND_PROC(glUniformMatrix3x4fv); 44 FIND_PROC(glUniformMatrix4x3fv); 45 FIND_PROC(glBlitFramebuffer); 46 FIND_PROC(glRenderbufferStorageMultisample); 47 FIND_PROC(glFramebufferTextureLayer); 48 FIND_PROC(glMapBufferRange); 49 FIND_PROC(glFlushMappedBufferRange); 50 FIND_PROC(glBindVertexArray); 51 FIND_PROC(glDeleteVertexArrays); 52 FIND_PROC(glGenVertexArrays); 53 FIND_PROC(glIsVertexArray); 54 FIND_PROC(glGetIntegeri_v); 55 FIND_PROC(glBeginTransformFeedback); 56 FIND_PROC(glEndTransformFeedback); 57 FIND_PROC(glBindBufferRange); 58 FIND_PROC(glBindBufferBase); 59 FIND_PROC(glTransformFeedbackVaryings); 60 FIND_PROC(glGetTransformFeedbackVarying); 61 FIND_PROC(glVertexAttribIPointer); 62 FIND_PROC(glGetVertexAttribIiv); 63 FIND_PROC(glGetVertexAttribIuiv); 64 FIND_PROC(glVertexAttribI4i); 65 FIND_PROC(glVertexAttribI4ui); 66 FIND_PROC(glVertexAttribI4iv); 67 FIND_PROC(glVertexAttribI4uiv); 68 FIND_PROC(glGetUniformuiv); 69 FIND_PROC(glGetFragDataLocation); 70 FIND_PROC(glUniform1ui); 71 FIND_PROC(glUniform2ui); 72 FIND_PROC(glUniform3ui); 73 FIND_PROC(glUniform4ui); 74 FIND_PROC(glUniform1uiv); 75 FIND_PROC(glUniform2uiv); 76 FIND_PROC(glUniform3uiv); 77 FIND_PROC(glUniform4uiv); 78 FIND_PROC(glClearBufferiv); 79 FIND_PROC(glClearBufferuiv); 80 FIND_PROC(glClearBufferfv); 81 FIND_PROC(glClearBufferfi); 82 FIND_PROC(glGetStringi); 83 FIND_PROC(glCopyBufferSubData); 84 FIND_PROC(glGetUniformIndices); 85 FIND_PROC(glGetActiveUniformsiv); 86 FIND_PROC(glGetUniformBlockIndex); 87 FIND_PROC(glGetActiveUniformBlockiv); 88 FIND_PROC(glGetActiveUniformBlockName); 89 FIND_PROC(glUniformBlockBinding); 90 FIND_PROC(glDrawArraysInstanced); 91 FIND_PROC(glDrawElementsInstanced); 92 FIND_PROC(glFenceSync); 93 FIND_PROC(glIsSync); 94 FIND_PROC(glDeleteSync); 95 FIND_PROC(glClientWaitSync); 96 FIND_PROC(glWaitSync); 97 FIND_PROC(glGetInteger64v); 98 FIND_PROC(glGetSynciv); 99 FIND_PROC(glGetInteger64i_v); 100 FIND_PROC(glGetBufferParameteri64v); 101 FIND_PROC(glGenSamplers); 102 FIND_PROC(glDeleteSamplers); 103 FIND_PROC(glIsSampler); 104 FIND_PROC(glBindSampler); 105 FIND_PROC(glSamplerParameteri); 106 FIND_PROC(glSamplerParameteriv); 107 FIND_PROC(glSamplerParameterf); 108 FIND_PROC(glSamplerParameterfv); 109 FIND_PROC(glGetSamplerParameteriv); 110 FIND_PROC(glGetSamplerParameterfv); 111 FIND_PROC(glVertexAttribDivisor); 112 FIND_PROC(glBindTransformFeedback); 113 FIND_PROC(glDeleteTransformFeedbacks); 114 FIND_PROC(glGenTransformFeedbacks); 115 FIND_PROC(glIsTransformFeedback); 116 FIND_PROC(glPauseTransformFeedback); 117 FIND_PROC(glResumeTransformFeedback); 118 FIND_PROC(glGetProgramBinary); 119 FIND_PROC(glProgramBinary); 120 FIND_PROC(glProgramParameteri); 121 FIND_PROC(glInvalidateFramebuffer); 122 FIND_PROC(glInvalidateSubFramebuffer); 123 FIND_PROC(glTexStorage2D); 124 FIND_PROC(glTexStorage3D); 125 FIND_PROC(glGetInternalformativ); 126 #undef FIND_PROC 127 128 if (!glReadBuffer || 129 !glDrawRangeElements || 130 !glTexImage3D || 131 !glTexSubImage3D || 132 !glCopyTexSubImage3D || 133 !glCompressedTexImage3D || 134 !glCompressedTexSubImage3D || 135 !glGenQueries || 136 !glDeleteQueries || 137 !glIsQuery || 138 !glBeginQuery || 139 !glEndQuery || 140 !glGetQueryiv || 141 !glGetQueryObjectuiv || 142 !glUnmapBuffer || 143 !glGetBufferPointerv || 144 !glDrawBuffers || 145 !glUniformMatrix2x3fv || 146 !glUniformMatrix3x2fv || 147 !glUniformMatrix2x4fv || 148 !glUniformMatrix4x2fv || 149 !glUniformMatrix3x4fv || 150 !glUniformMatrix4x3fv || 151 !glBlitFramebuffer || 152 !glRenderbufferStorageMultisample || 153 !glFramebufferTextureLayer || 154 !glMapBufferRange || 155 !glFlushMappedBufferRange || 156 !glBindVertexArray || 157 !glDeleteVertexArrays || 158 !glGenVertexArrays || 159 !glIsVertexArray || 160 !glGetIntegeri_v || 161 !glBeginTransformFeedback || 162 !glEndTransformFeedback || 163 !glBindBufferRange || 164 !glBindBufferBase || 165 !glTransformFeedbackVaryings || 166 !glGetTransformFeedbackVarying || 167 !glVertexAttribIPointer || 168 !glGetVertexAttribIiv || 169 !glGetVertexAttribIuiv || 170 !glVertexAttribI4i || 171 !glVertexAttribI4ui || 172 !glVertexAttribI4iv || 173 !glVertexAttribI4uiv || 174 !glGetUniformuiv || 175 !glGetFragDataLocation || 176 !glUniform1ui || 177 !glUniform2ui || 178 !glUniform3ui || 179 !glUniform4ui || 180 !glUniform1uiv || 181 !glUniform2uiv || 182 !glUniform3uiv || 183 !glUniform4uiv || 184 !glClearBufferiv || 185 !glClearBufferuiv || 186 !glClearBufferfv || 187 !glClearBufferfi || 188 !glGetStringi || 189 !glCopyBufferSubData || 190 !glGetUniformIndices || 191 !glGetActiveUniformsiv || 192 !glGetUniformBlockIndex || 193 !glGetActiveUniformBlockiv || 194 !glGetActiveUniformBlockName || 195 !glUniformBlockBinding || 196 !glDrawArraysInstanced || 197 !glDrawElementsInstanced || 198 !glFenceSync || 199 !glIsSync || 200 !glDeleteSync || 201 !glClientWaitSync || 202 !glWaitSync || 203 !glGetInteger64v || 204 !glGetSynciv || 205 !glGetInteger64i_v || 206 !glGetBufferParameteri64v || 207 !glGenSamplers || 208 !glDeleteSamplers || 209 !glIsSampler || 210 !glBindSampler || 211 !glSamplerParameteri || 212 !glSamplerParameteriv || 213 !glSamplerParameterf || 214 !glSamplerParameterfv || 215 !glGetSamplerParameteriv || 216 !glGetSamplerParameterfv || 217 !glVertexAttribDivisor || 218 !glBindTransformFeedback || 219 !glDeleteTransformFeedbacks || 220 !glGenTransformFeedbacks || 221 !glIsTransformFeedback || 222 !glPauseTransformFeedback || 223 !glResumeTransformFeedback || 224 !glGetProgramBinary || 225 !glProgramBinary || 226 !glProgramParameteri || 227 !glInvalidateFramebuffer || 228 !glInvalidateSubFramebuffer || 229 !glTexStorage2D || 230 !glTexStorage3D || 231 !glGetInternalformativ) 232 { 233 return GL_FALSE; 234 } 235 236 return GL_TRUE; 237 } 238 239 /* Function pointer definitions */ 240 GL_APICALL void (* GL_APIENTRY glReadBuffer) (GLenum mode); 241 GL_APICALL void (* GL_APIENTRY glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices); 242 GL_APICALL void (* GL_APIENTRY glTexImage3D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); 243 GL_APICALL void (* GL_APIENTRY glTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); 244 GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); 245 GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); 246 GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); 247 GL_APICALL void (* GL_APIENTRY glGenQueries) (GLsizei n, GLuint* ids); 248 GL_APICALL void (* GL_APIENTRY glDeleteQueries) (GLsizei n, const GLuint* ids); 249 GL_APICALL GLboolean (* GL_APIENTRY glIsQuery) (GLuint id); 250 GL_APICALL void (* GL_APIENTRY glBeginQuery) (GLenum target, GLuint id); 251 GL_APICALL void (* GL_APIENTRY glEndQuery) (GLenum target); 252 GL_APICALL void (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params); 253 GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params); 254 GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer) (GLenum target); 255 GL_APICALL void (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params); 256 GL_APICALL void (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs); 257 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 258 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 259 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 260 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 261 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 262 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); 263 GL_APICALL void (* GL_APIENTRY glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); 264 GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); 265 GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); 266 GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); 267 GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length); 268 GL_APICALL void (* GL_APIENTRY glBindVertexArray) (GLuint array); 269 GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays) (GLsizei n, const GLuint* arrays); 270 GL_APICALL void (* GL_APIENTRY glGenVertexArrays) (GLsizei n, GLuint* arrays); 271 GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray) (GLuint array); 272 GL_APICALL void (* GL_APIENTRY glGetIntegeri_v) (GLenum target, GLuint index, GLint* data); 273 GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback) (GLenum primitiveMode); 274 GL_APICALL void (* GL_APIENTRY glEndTransformFeedback) (void); 275 GL_APICALL void (* GL_APIENTRY glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); 276 GL_APICALL void (* GL_APIENTRY glBindBufferBase) (GLenum target, GLuint index, GLuint buffer); 277 GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode); 278 GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name); 279 GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer); 280 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv) (GLuint index, GLenum pname, GLint* params); 281 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv) (GLuint index, GLenum pname, GLuint* params); 282 GL_APICALL void (* GL_APIENTRY glVertexAttribI4i) (GLuint index, GLint x, GLint y, GLint z, GLint w); 283 GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); 284 GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv) (GLuint index, const GLint* v); 285 GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv) (GLuint index, const GLuint* v); 286 GL_APICALL void (* GL_APIENTRY glGetUniformuiv) (GLuint program, GLint location, GLuint* params); 287 GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation) (GLuint program, const GLchar *name); 288 GL_APICALL void (* GL_APIENTRY glUniform1ui) (GLint location, GLuint v0); 289 GL_APICALL void (* GL_APIENTRY glUniform2ui) (GLint location, GLuint v0, GLuint v1); 290 GL_APICALL void (* GL_APIENTRY glUniform3ui) (GLint location, GLuint v0, GLuint v1, GLuint v2); 291 GL_APICALL void (* GL_APIENTRY glUniform4ui) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); 292 GL_APICALL void (* GL_APIENTRY glUniform1uiv) (GLint location, GLsizei count, const GLuint* value); 293 GL_APICALL void (* GL_APIENTRY glUniform2uiv) (GLint location, GLsizei count, const GLuint* value); 294 GL_APICALL void (* GL_APIENTRY glUniform3uiv) (GLint location, GLsizei count, const GLuint* value); 295 GL_APICALL void (* GL_APIENTRY glUniform4uiv) (GLint location, GLsizei count, const GLuint* value); 296 GL_APICALL void (* GL_APIENTRY glClearBufferiv) (GLenum buffer, GLint drawbuffer, const GLint* value); 297 GL_APICALL void (* GL_APIENTRY glClearBufferuiv) (GLenum buffer, GLint drawbuffer, const GLuint* value); 298 GL_APICALL void (* GL_APIENTRY glClearBufferfv) (GLenum buffer, GLint drawbuffer, const GLfloat* value); 299 GL_APICALL void (* GL_APIENTRY glClearBufferfi) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); 300 GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi) (GLenum name, GLuint index); 301 GL_APICALL void (* GL_APIENTRY glCopyBufferSubData) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); 302 GL_APICALL void (* GL_APIENTRY glGetUniformIndices) (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices); 303 GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params); 304 GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex) (GLuint program, const GLchar* uniformBlockName); 305 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params); 306 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName); 307 GL_APICALL void (* GL_APIENTRY glUniformBlockBinding) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding); 308 GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced) (GLenum mode, GLint first, GLsizei count, GLsizei instanceCount); 309 GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount); 310 GL_APICALL GLsync (* GL_APIENTRY glFenceSync) (GLenum condition, GLbitfield flags); 311 GL_APICALL GLboolean (* GL_APIENTRY glIsSync) (GLsync sync); 312 GL_APICALL void (* GL_APIENTRY glDeleteSync) (GLsync sync); 313 GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); 314 GL_APICALL void (* GL_APIENTRY glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout); 315 GL_APICALL void (* GL_APIENTRY glGetInteger64v) (GLenum pname, GLint64* params); 316 GL_APICALL void (* GL_APIENTRY glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values); 317 GL_APICALL void (* GL_APIENTRY glGetInteger64i_v) (GLenum target, GLuint index, GLint64* data); 318 GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v) (GLenum target, GLenum pname, GLint64* params); 319 GL_APICALL void (* GL_APIENTRY glGenSamplers) (GLsizei count, GLuint* samplers); 320 GL_APICALL void (* GL_APIENTRY glDeleteSamplers) (GLsizei count, const GLuint* samplers); 321 GL_APICALL GLboolean (* GL_APIENTRY glIsSampler) (GLuint sampler); 322 GL_APICALL void (* GL_APIENTRY glBindSampler) (GLuint unit, GLuint sampler); 323 GL_APICALL void (* GL_APIENTRY glSamplerParameteri) (GLuint sampler, GLenum pname, GLint param); 324 GL_APICALL void (* GL_APIENTRY glSamplerParameteriv) (GLuint sampler, GLenum pname, const GLint* param); 325 GL_APICALL void (* GL_APIENTRY glSamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param); 326 GL_APICALL void (* GL_APIENTRY glSamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat* param); 327 GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint* params); 328 GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat* params); 329 GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor) (GLuint index, GLuint divisor); 330 GL_APICALL void (* GL_APIENTRY glBindTransformFeedback) (GLenum target, GLuint id); 331 GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks) (GLsizei n, const GLuint* ids); 332 GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks) (GLsizei n, GLuint* ids); 333 GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback) (GLuint id); 334 GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback) (void); 335 GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback) (void); 336 GL_APICALL void (* GL_APIENTRY glGetProgramBinary) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary); 337 GL_APICALL void (* GL_APIENTRY glProgramBinary) (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length); 338 GL_APICALL void (* GL_APIENTRY glProgramParameteri) (GLuint program, GLenum pname, GLint value); 339 GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments); 340 GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height); 341 GL_APICALL void (* GL_APIENTRY glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); 342 GL_APICALL void (* GL_APIENTRY glTexStorage3D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); 343 GL_APICALL void (* GL_APIENTRY glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params); 344