1/* 2 * Copyright © 2012 Intel Corporation 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice (including the next 12 * paragraph) shall be included in all copies or substantial portions of the 13 * Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21 * DEALINGS IN THE SOFTWARE. 22 */ 23 24/** 25 * \name dispatch_sanity.cpp 26 * 27 * Verify that only set of functions that should be available in a particular 28 * API are available in that API. 29 * 30 * The list of expected functions originally came from the functions set by 31 * api_exec_es2.c. This file no longer exists in Mesa (but api_exec_es1.c was 32 * still generated at the time this test was written). It was the generated 33 * file that configured the dispatch table for ES2 contexts. This test 34 * verifies that all of the functions set by the old api_exec_es2.c (with the 35 * recent addition of VAO functions) are set in the dispatch table and 36 * everything else is a NOP. 37 * 38 * When adding extensions that add new functions, this test will need to be 39 * modified to expect dispatch functions for the new extension functions. 40 */ 41 42#include <gtest/gtest.h> 43 44#include "GL/gl.h" 45#include "GL/glext.h" 46#include "util/compiler.h" 47#include "main/api_exec.h" 48#include "main/context.h" 49#include "main/remap.h" 50#include "main/vtxfmt.h" 51#include "glapi/glapi.h" 52#include "drivers/common/driverfuncs.h" 53 54#include "swrast/swrast.h" 55#include "vbo/vbo.h" 56#include "tnl/tnl.h" 57#include "swrast_setup/swrast_setup.h" 58 59#ifndef GLAPIENTRYP 60#define GLAPIENTRYP GL_APIENTRYP 61#endif 62 63#include "main/dispatch.h" 64 65struct function { 66 const char *name; 67 unsigned int Version; 68 int offset; 69}; 70 71extern const struct function common_desktop_functions_possible[]; 72extern const struct function gl_compatibility_functions_possible[]; 73extern const struct function gl_core_functions_possible[]; 74extern const struct function gles11_functions_possible[]; 75extern const struct function gles2_functions_possible[]; 76extern const struct function gles3_functions_possible[]; 77extern const struct function gles31_functions_possible[]; 78 79class DispatchSanity_test : public ::testing::Test { 80public: 81 virtual void SetUp(); 82 virtual void TearDown(); 83 void SetUpCtx(gl_api api, unsigned int version); 84 void TearDownCtx(); 85 86 struct gl_config visual; 87 struct dd_function_table driver_functions; 88 struct gl_context share_list; 89 struct gl_context ctx; 90 _glapi_proc *nop_table; 91}; 92 93void 94DispatchSanity_test::SetUp() 95{ 96 memset(&visual, 0, sizeof(visual)); 97 memset(&driver_functions, 0, sizeof(driver_functions)); 98 memset(&share_list, 0, sizeof(share_list)); 99 memset(&ctx, 0, sizeof(ctx)); 100 101 _mesa_init_driver_functions(&driver_functions); 102 103 const unsigned size = _glapi_get_dispatch_table_size(); 104 nop_table = (_glapi_proc *) _mesa_new_nop_table(size); 105} 106 107void 108DispatchSanity_test::TearDown() 109{ 110 free(nop_table); 111} 112 113void 114DispatchSanity_test::SetUpCtx(gl_api api, unsigned int version) 115{ 116 _mesa_initialize_context(&ctx, 117 api, 118 &visual, 119 NULL, // share_list 120 &driver_functions); 121 _vbo_CreateContext(&ctx, false); 122 123 _mesa_override_extensions(&ctx); 124 ctx.Version = version; 125 126 _mesa_initialize_dispatch_tables(&ctx); 127 _mesa_initialize_vbo_vtxfmt(&ctx); 128} 129 130void 131DispatchSanity_test::TearDownCtx() 132{ 133 _vbo_DestroyContext(&ctx); 134 _mesa_free_context_data(&ctx, false); 135} 136 137static const char * 138offset_to_proc_name_safe(unsigned offset) 139{ 140 const char *name = _glapi_get_proc_name(offset); 141 return name ? name : "???"; 142} 143 144/* Scan through the dispatch table and check that all the functions in 145 * _glapi_proc *table exist. 146 */ 147static void 148validate_functions(struct gl_context *ctx, const struct function *function_table, 149 const _glapi_proc *nop_table) 150{ 151 _glapi_proc *table = (_glapi_proc *) ctx->Exec; 152 153 for (unsigned i = 0; function_table[i].name != NULL; i++) { 154 /* The context version is >= the GL version where the function was 155 * introduced. Therefore, the function cannot be set to the nop 156 * function. 157 */ 158 const bool cant_be_nop = ctx->Version >= function_table[i].Version; 159 160 const int offset = (function_table[i].offset != -1) 161 ? function_table[i].offset 162 : _glapi_get_proc_offset(function_table[i].name); 163 164 ASSERT_NE(-1, offset) 165 << "Function: " << function_table[i].name; 166 ASSERT_EQ(offset, 167 _glapi_get_proc_offset(function_table[i].name)) 168 << "Function: " << function_table[i].name; 169 if (cant_be_nop) { 170 EXPECT_NE(nop_table[offset], table[offset]) 171 << "Function: " << function_table[i].name 172 << " at offset " << offset; 173 } 174 175 table[offset] = nop_table[offset]; 176 } 177} 178 179/* Scan through the table and ensure that there is nothing except 180 * nop functions (as set by validate_functions(). 181 */ 182static void 183validate_nops(struct gl_context *ctx, const _glapi_proc *nop_table) 184{ 185 _glapi_proc *table = (_glapi_proc *) ctx->Exec; 186 187 const unsigned size = _glapi_get_dispatch_table_size(); 188 for (unsigned i = 0; i < size; i++) { 189 EXPECT_EQ(nop_table[i], table[i]) 190 << "i = " << i << " (" << offset_to_proc_name_safe(i) << ")"; 191 } 192} 193 194TEST_F(DispatchSanity_test, GL31_CORE) 195{ 196 SetUpCtx(API_OPENGL_CORE, 31); 197 validate_functions(&ctx, common_desktop_functions_possible, nop_table); 198 validate_functions(&ctx, gl_core_functions_possible, nop_table); 199 validate_nops(&ctx, nop_table); 200 TearDownCtx(); 201} 202 203TEST_F(DispatchSanity_test, GL30) 204{ 205 SetUpCtx(API_OPENGL_COMPAT, 30); 206 validate_functions(&ctx, common_desktop_functions_possible, nop_table); 207 validate_functions(&ctx, gl_compatibility_functions_possible, nop_table); 208 validate_nops(&ctx, nop_table); 209 TearDownCtx(); 210} 211 212TEST_F(DispatchSanity_test, GLES11) 213{ 214 SetUpCtx(API_OPENGLES, 11); 215 validate_functions(&ctx, gles11_functions_possible, nop_table); 216 validate_nops(&ctx, nop_table); 217 TearDownCtx(); 218} 219 220TEST_F(DispatchSanity_test, GLES2) 221{ 222 SetUpCtx(API_OPENGLES2, 20); 223 validate_functions(&ctx, gles2_functions_possible, nop_table); 224 validate_nops(&ctx, nop_table); 225 TearDownCtx(); 226} 227 228TEST_F(DispatchSanity_test, GLES3) 229{ 230 SetUpCtx(API_OPENGLES2, 30); 231 validate_functions(&ctx, gles2_functions_possible, nop_table); 232 validate_functions(&ctx, gles3_functions_possible, nop_table); 233 validate_nops(&ctx, nop_table); 234 TearDownCtx(); 235} 236 237TEST_F(DispatchSanity_test, GLES31) 238{ 239 SetUpCtx(API_OPENGLES2, 31); 240 validate_functions(&ctx, gles2_functions_possible, nop_table); 241 validate_functions(&ctx, gles3_functions_possible, nop_table); 242 validate_functions(&ctx, gles31_functions_possible, nop_table); 243 validate_nops(&ctx, nop_table); 244 TearDownCtx(); 245} 246 247const struct function common_desktop_functions_possible[] = { 248 { "glBindRenderbufferEXT", 10, -1 }, 249 { "glBindFramebufferEXT", 10, -1 }, 250 { "glCullFace", 10, -1 }, 251 { "glFrontFace", 10, -1 }, 252 { "glHint", 10, -1 }, 253 { "glLineWidth", 10, -1 }, 254 { "glPointSize", 10, -1 }, 255 { "glPolygonMode", 10, -1 }, 256 { "glScissor", 10, -1 }, 257 { "glTexParameterf", 10, -1 }, 258 { "glTexParameterfv", 10, -1 }, 259 { "glTexParameteri", 10, -1 }, 260 { "glTexParameteriv", 10, -1 }, 261 { "glTexImage1D", 10, _gloffset_TexImage1D }, 262 { "glTexImage2D", 10, _gloffset_TexImage2D }, 263 { "glDrawBuffer", 10, -1 }, 264 { "glClear", 10, -1 }, 265 { "glClearColor", 10, -1 }, 266 { "glClearStencil", 10, -1 }, 267 { "glClearDepth", 10, -1 }, 268 { "glStencilMask", 10, -1 }, 269 { "glColorMask", 10, -1 }, 270 { "glDepthMask", 10, -1 }, 271 { "glDisable", 10, -1 }, 272 { "glEnable", 10, -1 }, 273 { "glFinish", 10, -1 }, 274 { "glFlush", 10, -1 }, 275 { "glBlendFunc", 10, -1 }, 276 { "glLogicOp", 10, -1 }, 277 { "glStencilFunc", 10, -1 }, 278 { "glStencilOp", 10, -1 }, 279 { "glDepthFunc", 10, -1 }, 280 { "glPixelStoref", 10, -1 }, 281 { "glPixelStorei", 10, -1 }, 282 { "glReadBuffer", 10, -1 }, 283 { "glReadPixels", 10, -1 }, 284 { "glGetBooleanv", 10, -1 }, 285 { "glGetDoublev", 10, -1 }, 286 { "glGetError", 10, -1 }, 287 { "glGetFloatv", 10, -1 }, 288 { "glGetIntegerv", 10, -1 }, 289 { "glGetString", 10, -1 }, 290 { "glGetTexImage", 10, -1 }, 291 { "glGetTexParameterfv", 10, -1 }, 292 { "glGetTexParameteriv", 10, -1 }, 293 { "glGetTexLevelParameterfv", 10, -1 }, 294 { "glGetTexLevelParameteriv", 10, -1 }, 295 { "glIsEnabled", 10, -1 }, 296 { "glDepthRange", 10, -1 }, 297 { "glViewport", 10, -1 }, 298 299 /* GL 1.1 */ 300 { "glDrawArrays", 11, -1 }, 301 { "glDrawElements", 11, -1 }, 302 { "glGetPointerv", 11, -1 }, 303 { "glPolygonOffset", 11, -1 }, 304 { "glCopyTexImage1D", 11, -1 }, 305 { "glCopyTexImage2D", 11, -1 }, 306 { "glCopyTexSubImage1D", 11, -1 }, 307 { "glCopyTexSubImage2D", 11, -1 }, 308 { "glTexSubImage1D", 11, -1 }, 309 { "glTexSubImage2D", 11, -1 }, 310 { "glBindTexture", 11, -1 }, 311 { "glDeleteTextures", 11, -1 }, 312 { "glGenTextures", 11, -1 }, 313 { "glIsTexture", 11, -1 }, 314 315 /* GL 1.2 */ 316 { "glBlendColor", 12, -1 }, 317 { "glBlendEquation", 12, -1 }, 318 { "glDrawRangeElements", 12, -1 }, 319 { "glTexImage3D", 12, -1 }, 320 { "glTexSubImage3D", 12, -1 }, 321 { "glCopyTexSubImage3D", 12, -1 }, 322 323 /* GL 1.3 */ 324 { "glActiveTexture", 13, -1 }, 325 { "glSampleCoverage", 13, -1 }, 326 { "glCompressedTexImage3D", 13, -1 }, 327 { "glCompressedTexImage2D", 13, -1 }, 328 { "glCompressedTexImage1D", 13, -1 }, 329 { "glCompressedTexSubImage3D", 13, -1 }, 330 { "glCompressedTexSubImage2D", 13, -1 }, 331 { "glCompressedTexSubImage1D", 13, -1 }, 332 { "glGetCompressedTexImage", 13, -1 }, 333 334 /* GL 1.4 */ 335 { "glBlendFuncSeparate", 14, -1 }, 336 { "glMultiDrawArrays", 14, -1 }, 337 { "glMultiDrawElements", 14, -1 }, 338 { "glPointParameterf", 14, -1 }, 339 { "glPointParameterfv", 14, -1 }, 340 { "glPointParameteri", 14, -1 }, 341 { "glPointParameteriv", 14, -1 }, 342 343 /* GL 1.5 */ 344 { "glGenQueries", 15, -1 }, 345 { "glDeleteQueries", 15, -1 }, 346 { "glIsQuery", 15, -1 }, 347 { "glBeginQuery", 15, -1 }, 348 { "glEndQuery", 15, -1 }, 349 { "glGetQueryiv", 15, -1 }, 350 { "glGetQueryObjectiv", 15, -1 }, 351 { "glGetQueryObjectuiv", 15, -1 }, 352 { "glBindBuffer", 15, -1 }, 353 { "glDeleteBuffers", 15, -1 }, 354 { "glGenBuffers", 15, -1 }, 355 { "glIsBuffer", 15, -1 }, 356 { "glBufferData", 15, -1 }, 357 { "glBufferSubData", 15, -1 }, 358 { "glGetBufferSubData", 15, -1 }, 359 { "glMapBuffer", 15, -1 }, 360 { "glUnmapBuffer", 15, -1 }, 361 { "glGetBufferParameteriv", 15, -1 }, 362 { "glGetBufferPointerv", 15, -1 }, 363 364 /* GL 2.0 */ 365 { "glBlendEquationSeparate", 20, -1 }, 366 { "glDrawBuffers", 20, -1 }, 367 { "glStencilOpSeparate", 20, -1 }, 368 { "glStencilFuncSeparate", 20, -1 }, 369 { "glStencilMaskSeparate", 20, -1 }, 370 { "glAttachShader", 20, -1 }, 371 { "glBindAttribLocation", 20, -1 }, 372 { "glCompileShader", 20, -1 }, 373 { "glCreateProgram", 20, -1 }, 374 { "glCreateShader", 20, -1 }, 375 { "glDeleteProgram", 20, -1 }, 376 { "glDeleteShader", 20, -1 }, 377 { "glDetachShader", 20, -1 }, 378 { "glDisableVertexAttribArray", 20, -1 }, 379 { "glEnableVertexAttribArray", 20, -1 }, 380 { "glGetActiveAttrib", 20, -1 }, 381 { "glGetActiveUniform", 20, -1 }, 382 { "glGetAttachedShaders", 20, -1 }, 383 { "glGetAttribLocation", 20, -1 }, 384 { "glGetProgramiv", 20, -1 }, 385 { "glGetProgramInfoLog", 20, -1 }, 386 { "glGetShaderiv", 20, -1 }, 387 { "glGetShaderInfoLog", 20, -1 }, 388 { "glGetShaderSource", 20, -1 }, 389 { "glGetUniformLocation", 20, -1 }, 390 { "glGetUniformfv", 20, -1 }, 391 { "glGetUniformiv", 20, -1 }, 392 { "glGetVertexAttribdv", 20, -1 }, 393 { "glGetVertexAttribfv", 20, -1 }, 394 { "glGetVertexAttribiv", 20, -1 }, 395 { "glGetVertexAttribPointerv", 20, -1 }, 396 { "glIsProgram", 20, -1 }, 397 { "glIsShader", 20, -1 }, 398 { "glLinkProgram", 20, -1 }, 399 { "glShaderSource", 20, -1 }, 400 { "glUseProgram", 20, -1 }, 401 { "glUniform1f", 20, -1 }, 402 { "glUniform2f", 20, -1 }, 403 { "glUniform3f", 20, -1 }, 404 { "glUniform4f", 20, -1 }, 405 { "glUniform1i", 20, -1 }, 406 { "glUniform2i", 20, -1 }, 407 { "glUniform3i", 20, -1 }, 408 { "glUniform4i", 20, -1 }, 409 { "glUniform1fv", 20, -1 }, 410 { "glUniform2fv", 20, -1 }, 411 { "glUniform3fv", 20, -1 }, 412 { "glUniform4fv", 20, -1 }, 413 { "glUniform1iv", 20, -1 }, 414 { "glUniform2iv", 20, -1 }, 415 { "glUniform3iv", 20, -1 }, 416 { "glUniform4iv", 20, -1 }, 417 { "glUniformMatrix2fv", 20, -1 }, 418 { "glUniformMatrix3fv", 20, -1 }, 419 { "glUniformMatrix4fv", 20, -1 }, 420 { "glValidateProgram", 20, -1 }, 421 { "glVertexAttrib1d", 20, -1 }, 422 { "glVertexAttrib1dv", 20, -1 }, 423 { "glVertexAttrib1f", 20, -1 }, 424 { "glVertexAttrib1fv", 20, -1 }, 425 { "glVertexAttrib1s", 20, -1 }, 426 { "glVertexAttrib1sv", 20, -1 }, 427 { "glVertexAttrib2d", 20, -1 }, 428 { "glVertexAttrib2dv", 20, -1 }, 429 { "glVertexAttrib2f", 20, -1 }, 430 { "glVertexAttrib2fv", 20, -1 }, 431 { "glVertexAttrib2s", 20, -1 }, 432 { "glVertexAttrib2sv", 20, -1 }, 433 { "glVertexAttrib3d", 20, -1 }, 434 { "glVertexAttrib3dv", 20, -1 }, 435 { "glVertexAttrib3f", 20, -1 }, 436 { "glVertexAttrib3fv", 20, -1 }, 437 { "glVertexAttrib3s", 20, -1 }, 438 { "glVertexAttrib3sv", 20, -1 }, 439 { "glVertexAttrib4Nbv", 20, -1 }, 440 { "glVertexAttrib4Niv", 20, -1 }, 441 { "glVertexAttrib4Nsv", 20, -1 }, 442 { "glVertexAttrib4Nub", 20, -1 }, 443 { "glVertexAttrib4Nubv", 20, -1 }, 444 { "glVertexAttrib4Nuiv", 20, -1 }, 445 { "glVertexAttrib4Nusv", 20, -1 }, 446 { "glVertexAttrib4bv", 20, -1 }, 447 { "glVertexAttrib4d", 20, -1 }, 448 { "glVertexAttrib4dv", 20, -1 }, 449 { "glVertexAttrib4f", 20, -1 }, 450 { "glVertexAttrib4fv", 20, -1 }, 451 { "glVertexAttrib4iv", 20, -1 }, 452 { "glVertexAttrib4s", 20, -1 }, 453 { "glVertexAttrib4sv", 20, -1 }, 454 { "glVertexAttrib4ubv", 20, -1 }, 455 { "glVertexAttrib4uiv", 20, -1 }, 456 { "glVertexAttrib4usv", 20, -1 }, 457 { "glVertexAttribPointer", 20, -1 }, 458 459 /* GL 2.1 */ 460 { "glUniformMatrix2x3fv", 21, -1 }, 461 { "glUniformMatrix3x2fv", 21, -1 }, 462 { "glUniformMatrix2x4fv", 21, -1 }, 463 { "glUniformMatrix4x2fv", 21, -1 }, 464 { "glUniformMatrix3x4fv", 21, -1 }, 465 { "glUniformMatrix4x3fv", 21, -1 }, 466 467 /* GL 3.0 */ 468 { "glColorMaski", 30, -1 }, 469 { "glGetBooleani_v", 30, -1 }, 470 { "glGetIntegeri_v", 30, -1 }, 471 { "glEnablei", 30, -1 }, 472 { "glDisablei", 30, -1 }, 473 { "glIsEnabledi", 30, -1 }, 474 { "glBeginTransformFeedback", 30, -1 }, 475 { "glEndTransformFeedback", 30, -1 }, 476 { "glBindBufferRange", 30, -1 }, 477 { "glBindBufferBase", 30, -1 }, 478 { "glTransformFeedbackVaryings", 30, -1 }, 479 { "glGetTransformFeedbackVarying", 30, -1 }, 480 { "glClampColor", 30, -1 }, 481 { "glBeginConditionalRender", 30, -1 }, 482 { "glEndConditionalRender", 30, -1 }, 483 { "glVertexAttribIPointer", 30, -1 }, 484 { "glGetVertexAttribIiv", 30, -1 }, 485 { "glGetVertexAttribIuiv", 30, -1 }, 486 { "glVertexAttribI1i", 30, -1 }, 487 { "glVertexAttribI2i", 30, -1 }, 488 { "glVertexAttribI3i", 30, -1 }, 489 { "glVertexAttribI4i", 30, -1 }, 490 { "glVertexAttribI1ui", 30, -1 }, 491 { "glVertexAttribI2ui", 30, -1 }, 492 { "glVertexAttribI3ui", 30, -1 }, 493 { "glVertexAttribI4ui", 30, -1 }, 494 { "glVertexAttribI1iv", 30, -1 }, 495 { "glVertexAttribI2iv", 30, -1 }, 496 { "glVertexAttribI3iv", 30, -1 }, 497 { "glVertexAttribI4iv", 30, -1 }, 498 { "glVertexAttribI1uiv", 30, -1 }, 499 { "glVertexAttribI2uiv", 30, -1 }, 500 { "glVertexAttribI3uiv", 30, -1 }, 501 { "glVertexAttribI4uiv", 30, -1 }, 502 { "glVertexAttribI4bv", 30, -1 }, 503 { "glVertexAttribI4sv", 30, -1 }, 504 { "glVertexAttribI4ubv", 30, -1 }, 505 { "glVertexAttribI4usv", 30, -1 }, 506 { "glGetUniformuiv", 30, -1 }, 507 { "glBindFragDataLocation", 30, -1 }, 508 { "glGetFragDataLocation", 30, -1 }, 509 { "glUniform1ui", 30, -1 }, 510 { "glUniform2ui", 30, -1 }, 511 { "glUniform3ui", 30, -1 }, 512 { "glUniform4ui", 30, -1 }, 513 { "glUniform1uiv", 30, -1 }, 514 { "glUniform2uiv", 30, -1 }, 515 { "glUniform3uiv", 30, -1 }, 516 { "glUniform4uiv", 30, -1 }, 517 { "glTexParameterIiv", 30, -1 }, 518 { "glTexParameterIuiv", 30, -1 }, 519 { "glGetTexParameterIiv", 30, -1 }, 520 { "glGetTexParameterIuiv", 30, -1 }, 521 { "glClearBufferiv", 30, -1 }, 522 { "glClearBufferuiv", 30, -1 }, 523 { "glClearBufferfv", 30, -1 }, 524 { "glClearBufferfi", 30, -1 }, 525 { "glGetStringi", 30, -1 }, 526 527 /* GL 3.1 */ 528 { "glDrawArraysInstanced", 31, -1 }, 529 { "glDrawElementsInstanced", 31, -1 }, 530 { "glPrimitiveRestartIndex", 31, -1 }, 531 { "glTexBuffer", 31, -1 }, 532 533 /* GL_ARB_texture_buffer_range */ 534 { "glTexBufferRange", 43, -1 }, 535 536 /* GL_ARB_shader_objects */ 537 { "glDeleteObjectARB", 31, -1 }, 538 { "glGetHandleARB", 31, -1 }, 539 { "glDetachObjectARB", 31, -1 }, 540 { "glCreateShaderObjectARB", 31, -1 }, 541 { "glCreateProgramObjectARB", 31, -1 }, 542 { "glAttachObjectARB", 31, -1 }, 543 { "glGetObjectParameterfvARB", 31, -1 }, 544 { "glGetObjectParameterivARB", 31, -1 }, 545 { "glGetInfoLogARB", 31, -1 }, 546 { "glGetAttachedObjectsARB", 31, -1 }, 547 548 /* GL_ARB_get_program_binary */ 549 { "glGetProgramBinary", 30, -1 }, 550 { "glProgramBinary", 30, -1 }, 551 { "glProgramParameteri", 30, -1 }, 552 553 /* GL_EXT_transform_feedback */ 554 { "glBindBufferOffsetEXT", 31, -1 }, 555 556 /* GL_IBM_multimode_draw_arrays */ 557 { "glMultiModeDrawArraysIBM", 31, -1 }, 558 { "glMultiModeDrawElementsIBM", 31, -1 }, 559 560 /* GL_EXT_depth_bounds_test */ 561 { "glDepthBoundsEXT", 31, -1 }, 562 563 /* GL_apple_object_purgeable */ 564 { "glObjectPurgeableAPPLE", 31, -1 }, 565 { "glObjectUnpurgeableAPPLE", 31, -1 }, 566 { "glGetObjectParameterivAPPLE", 31, -1 }, 567 568 /* GL_ARB_instanced_arrays */ 569 { "glVertexAttribDivisorARB", 31, -1 }, 570 { "glVertexArrayVertexAttribDivisorEXT", 31, -1 }, 571 572 /* GL_NV_texture_barrier */ 573 { "glTextureBarrierNV", 31, -1 }, 574 575 /* GL_EXT_texture_integer */ 576 { "glClearColorIiEXT", 31, -1 }, 577 { "glClearColorIuiEXT", 31, -1 }, 578 579 /* GL_OES_EGL_image */ 580 { "glEGLImageTargetRenderbufferStorageOES", 31, -1 }, 581 { "glEGLImageTargetTexture2DOES", 31, -1 }, 582 583 /* EXT_EGL_image_storage */ 584 { "glEGLImageTargetTexStorageEXT", 31, -1 }, 585 { "glEGLImageTargetTextureStorageEXT", 31, -1 }, 586 587 /* GL_NV_copy_image */ 588 { "glCopyImageSubDataNV", 31, -1 }, 589 590 /* GL 3.2 */ 591 { "glGetInteger64i_v", 32, -1 }, 592 { "glGetBufferParameteri64v", 32, -1 }, 593 { "glFramebufferTexture", 32, -1 }, 594 { "glProgramParameteri", 32, -1 }, 595 { "glFramebufferTextureLayer", 32, -1 }, 596 597 /* GL 3.3 */ 598 { "glVertexAttribDivisor", 33, -1 }, 599 600 /* GL 4.0 */ 601 { "glMinSampleShading", 40, -1 }, 602 { "glPatchParameteri", 40, -1 }, 603 { "glPatchParameterfv", 40, -1 }, 604 { "glBlendEquationi", 40, -1 }, 605 { "glBlendEquationSeparatei", 40, -1 }, 606 { "glBlendFunci", 40, -1 }, 607 { "glBlendFuncSeparatei", 40, -1 }, 608 609 { "glGetSubroutineUniformLocation", 40, -1 }, 610 { "glGetSubroutineIndex", 40, -1 }, 611 { "glGetActiveSubroutineUniformiv", 40, -1 }, 612 { "glGetActiveSubroutineUniformName", 40, -1 }, 613 { "glGetActiveSubroutineName", 40, -1 }, 614 { "glUniformSubroutinesuiv", 40, -1 }, 615 { "glGetUniformSubroutineuiv", 40, -1 }, 616 { "glGetProgramStageiv", 40, -1 }, 617 618 { "glUniform1d", 40, -1 }, 619 { "glUniform2d", 40, -1 }, 620 { "glUniform3d", 40, -1 }, 621 { "glUniform4d", 40, -1 }, 622 { "glUniform1dv", 40, -1 }, 623 { "glUniform2dv", 40, -1 }, 624 { "glUniform3dv", 40, -1 }, 625 { "glUniform4dv", 40, -1 }, 626 { "glUniformMatrix2dv", 40, -1 }, 627 { "glUniformMatrix3dv", 40, -1 }, 628 { "glUniformMatrix4dv", 40, -1 }, 629 { "glUniformMatrix2x3dv", 40, -1 }, 630 { "glUniformMatrix2x4dv", 40, -1 }, 631 { "glUniformMatrix3x2dv", 40, -1 }, 632 { "glUniformMatrix3x4dv", 40, -1 }, 633 { "glUniformMatrix4x2dv", 40, -1 }, 634 { "glUniformMatrix4x3dv", 40, -1 }, 635 { "glGetUniformdv", 43, -1 }, 636 637 /* GL 4.1 */ 638 { "glVertexAttribL1d", 41, -1 }, 639 { "glVertexAttribL2d", 41, -1 }, 640 { "glVertexAttribL3d", 41, -1 }, 641 { "glVertexAttribL4d", 41, -1 }, 642 { "glVertexAttribL1dv", 41, -1 }, 643 { "glVertexAttribL2dv", 41, -1 }, 644 { "glVertexAttribL3dv", 41, -1 }, 645 { "glVertexAttribL4dv", 41, -1 }, 646 { "glVertexAttribLPointer", 41, -1 }, 647 { "glGetVertexAttribLdv", 41, -1 }, 648 { "glVertexArrayVertexAttribLOffsetEXT", 41, -1 }, 649 650 /* GL 4.3 */ 651 { "glIsRenderbuffer", 43, -1 }, 652 { "glBindRenderbuffer", 43, -1 }, 653 { "glDeleteRenderbuffers", 43, -1 }, 654 { "glGenRenderbuffers", 43, -1 }, 655 { "glRenderbufferStorage", 43, -1 }, 656 { "glGetRenderbufferParameteriv", 43, -1 }, 657 { "glIsFramebuffer", 43, -1 }, 658 { "glBindFramebuffer", 43, -1 }, 659 { "glDeleteFramebuffers", 43, -1 }, 660 { "glGenFramebuffers", 43, -1 }, 661 { "glCheckFramebufferStatus", 43, -1 }, 662 { "glFramebufferTexture1D", 43, -1 }, 663 { "glFramebufferTexture2D", 43, -1 }, 664 { "glFramebufferTexture3D", 43, -1 }, 665 { "glFramebufferRenderbuffer", 43, -1 }, 666 { "glGetFramebufferAttachmentParameteriv", 43, -1 }, 667 { "glGenerateMipmap", 43, -1 }, 668 { "glBlitFramebuffer", 43, -1 }, 669 { "glRenderbufferStorageMultisample", 43, -1 }, 670 { "glFramebufferTextureLayer", 43, -1 }, 671 { "glMapBufferRange", 43, -1 }, 672 { "glFlushMappedBufferRange", 43, -1 }, 673 { "glBindVertexArray", 43, -1 }, 674 { "glDeleteVertexArrays", 43, -1 }, 675 { "glGenVertexArrays", 43, -1 }, 676 { "glIsVertexArray", 43, -1 }, 677 { "glGetUniformIndices", 43, -1 }, 678 { "glGetActiveUniformsiv", 43, -1 }, 679 { "glGetActiveUniformName", 43, -1 }, 680 { "glGetUniformBlockIndex", 43, -1 }, 681 { "glGetActiveUniformBlockiv", 43, -1 }, 682 { "glGetActiveUniformBlockName", 43, -1 }, 683 { "glUniformBlockBinding", 43, -1 }, 684 { "glCopyBufferSubData", 43, -1 }, 685 { "glDrawElementsBaseVertex", 43, -1 }, 686 { "glDrawRangeElementsBaseVertex", 43, -1 }, 687 { "glDrawElementsInstancedBaseVertex", 43, -1 }, 688 { "glMultiDrawElementsBaseVertex", 43, -1 }, 689 { "glProvokingVertex", 43, -1 }, 690 { "glFenceSync", 43, -1 }, 691 { "glIsSync", 43, -1 }, 692 { "glDeleteSync", 43, -1 }, 693 { "glClientWaitSync", 43, -1 }, 694 { "glWaitSync", 43, -1 }, 695 { "glGetInteger64v", 43, -1 }, 696 { "glGetSynciv", 43, -1 }, 697 { "glTexImage2DMultisample", 43, -1 }, 698 { "glTexImage3DMultisample", 43, -1 }, 699 { "glGetMultisamplefv", 43, -1 }, 700 { "glSampleMaski", 43, -1 }, 701 { "glBlendEquationiARB", 43, -1 }, 702 { "glBlendEquationSeparateiARB", 43, -1 }, 703 { "glBlendFunciARB", 43, -1 }, 704 { "glBlendFuncSeparateiARB", 43, -1 }, 705 { "glMinSampleShadingARB", 43, -1 }, // XXX: Add to xml 706 { "glBindFragDataLocationIndexed", 43, -1 }, 707 { "glGetFragDataIndex", 43, -1 }, 708 { "glGenSamplers", 43, -1 }, 709 { "glDeleteSamplers", 43, -1 }, 710 { "glIsSampler", 43, -1 }, 711 { "glBindSampler", 43, -1 }, 712 { "glSamplerParameteri", 43, -1 }, 713 { "glSamplerParameteriv", 43, -1 }, 714 { "glSamplerParameterf", 43, -1 }, 715 { "glSamplerParameterfv", 43, -1 }, 716 { "glSamplerParameterIiv", 43, -1 }, 717 { "glSamplerParameterIuiv", 43, -1 }, 718 { "glGetSamplerParameteriv", 43, -1 }, 719 { "glGetSamplerParameterIiv", 43, -1 }, 720 { "glGetSamplerParameterfv", 43, -1 }, 721 { "glGetSamplerParameterIuiv", 43, -1 }, 722 { "glQueryCounter", 43, -1 }, 723 { "glGetQueryObjecti64v", 43, -1 }, 724 { "glGetQueryObjectui64v", 43, -1 }, 725 { "glVertexP2ui", 43, -1 }, 726 { "glVertexP2uiv", 43, -1 }, 727 { "glVertexP3ui", 43, -1 }, 728 { "glVertexP3uiv", 43, -1 }, 729 { "glVertexP4ui", 43, -1 }, 730 { "glVertexP4uiv", 43, -1 }, 731 { "glTexCoordP1ui", 43, -1 }, 732 { "glTexCoordP1uiv", 43, -1 }, 733 { "glTexCoordP2ui", 43, -1 }, 734 { "glTexCoordP2uiv", 43, -1 }, 735 { "glTexCoordP3ui", 43, -1 }, 736 { "glTexCoordP3uiv", 43, -1 }, 737 { "glTexCoordP4ui", 43, -1 }, 738 { "glTexCoordP4uiv", 43, -1 }, 739 { "glMultiTexCoordP1ui", 43, -1 }, 740 { "glMultiTexCoordP1uiv", 43, -1 }, 741 { "glMultiTexCoordP2ui", 43, -1 }, 742 { "glMultiTexCoordP2uiv", 43, -1 }, 743 { "glMultiTexCoordP3ui", 43, -1 }, 744 { "glMultiTexCoordP3uiv", 43, -1 }, 745 { "glMultiTexCoordP4ui", 43, -1 }, 746 { "glMultiTexCoordP4uiv", 43, -1 }, 747 { "glNormalP3ui", 43, -1 }, 748 { "glNormalP3uiv", 43, -1 }, 749 { "glColorP3ui", 43, -1 }, 750 { "glColorP3uiv", 43, -1 }, 751 { "glColorP4ui", 43, -1 }, 752 { "glColorP4uiv", 43, -1 }, 753 { "glSecondaryColorP3ui", 43, -1 }, 754 { "glSecondaryColorP3uiv", 43, -1 }, 755 { "glVertexAttribP1ui", 43, -1 }, 756 { "glVertexAttribP1uiv", 43, -1 }, 757 { "glVertexAttribP2ui", 43, -1 }, 758 { "glVertexAttribP2uiv", 43, -1 }, 759 { "glVertexAttribP3ui", 43, -1 }, 760 { "glVertexAttribP3uiv", 43, -1 }, 761 { "glVertexAttribP4ui", 43, -1 }, 762 { "glVertexAttribP4uiv", 43, -1 }, 763 { "glDrawArraysIndirect", 43, -1 }, 764 { "glDrawElementsIndirect", 43, -1 }, 765 { "glBindTransformFeedback", 43, -1 }, 766 { "glDeleteTransformFeedbacks", 43, -1 }, 767 { "glGenTransformFeedbacks", 43, -1 }, 768 { "glIsTransformFeedback", 43, -1 }, 769 { "glPauseTransformFeedback", 43, -1 }, 770 { "glResumeTransformFeedback", 43, -1 }, 771 { "glDrawTransformFeedback", 43, -1 }, 772 { "glDrawTransformFeedbackStream", 43, -1 }, 773 { "glBeginQueryIndexed", 43, -1 }, 774 { "glEndQueryIndexed", 43, -1 }, 775 { "glGetQueryIndexediv", 43, -1 }, 776 { "glReleaseShaderCompiler", 43, -1 }, 777 { "glShaderBinary", 43, -1 }, 778 { "glGetShaderPrecisionFormat", 43, -1 }, 779 { "glDepthRangef", 43, -1 }, 780 { "glClearDepthf", 43, -1 }, 781 { "glGetProgramBinary", 43, -1 }, 782 { "glProgramBinary", 43, -1 }, 783 { "glProgramParameteri", 43, -1 }, 784 { "glUseProgramStages", 43, -1 }, 785 { "glActiveShaderProgram", 43, -1 }, 786 { "glCreateShaderProgramv", 43, -1 }, 787 { "glBindProgramPipeline", 43, -1 }, 788 { "glDeleteProgramPipelines", 43, -1 }, 789 { "glGenProgramPipelines", 43, -1 }, 790 { "glIsProgramPipeline", 43, -1 }, 791 { "glGetProgramPipelineiv", 43, -1 }, 792 { "glProgramUniform1d", 43, -1 }, 793 { "glProgramUniform1dv", 43, -1 }, 794 { "glProgramUniform1i", 43, -1 }, 795 { "glProgramUniform1iv", 43, -1 }, 796 { "glProgramUniform1f", 43, -1 }, 797 { "glProgramUniform1fv", 43, -1 }, 798 { "glProgramUniform1ui", 43, -1 }, 799 { "glProgramUniform1uiv", 43, -1 }, 800 { "glProgramUniform2i", 43, -1 }, 801 { "glProgramUniform2iv", 43, -1 }, 802 { "glProgramUniform2f", 43, -1 }, 803 { "glProgramUniform2fv", 43, -1 }, 804 { "glProgramUniform2d", 40, -1 }, 805 { "glProgramUniform2dv", 40, -1 }, 806 { "glProgramUniform2ui", 43, -1 }, 807 { "glProgramUniform2uiv", 43, -1 }, 808 { "glProgramUniform3i", 43, -1 }, 809 { "glProgramUniform3iv", 43, -1 }, 810 { "glProgramUniform3f", 43, -1 }, 811 { "glProgramUniform3fv", 43, -1 }, 812 { "glProgramUniform3d", 40, -1 }, 813 { "glProgramUniform3dv", 40, -1 }, 814 { "glProgramUniform3ui", 43, -1 }, 815 { "glProgramUniform3uiv", 43, -1 }, 816 { "glProgramUniform4i", 43, -1 }, 817 { "glProgramUniform4iv", 43, -1 }, 818 { "glProgramUniform4d", 43, -1 }, 819 { "glProgramUniform4dv", 43, -1 }, 820 { "glProgramUniform4f", 43, -1 }, 821 { "glProgramUniform4fv", 43, -1 }, 822 { "glProgramUniform4ui", 43, -1 }, 823 { "glProgramUniform4uiv", 43, -1 }, 824 { "glProgramUniformMatrix2dv", 43, -1 }, 825 { "glProgramUniformMatrix2fv", 43, -1 }, 826 { "glProgramUniformMatrix3dv", 43, -1 }, 827 { "glProgramUniformMatrix3fv", 43, -1 }, 828 { "glProgramUniformMatrix4dv", 43, -1 }, 829 { "glProgramUniformMatrix4fv", 43, -1 }, 830 { "glProgramUniformMatrix2x3dv", 43, -1 }, 831 { "glProgramUniformMatrix2x3fv", 43, -1 }, 832 { "glProgramUniformMatrix3x2dv", 43, -1 }, 833 { "glProgramUniformMatrix3x2fv", 43, -1 }, 834 { "glProgramUniformMatrix2x4dv", 43, -1 }, 835 { "glProgramUniformMatrix2x4fv", 43, -1 }, 836 { "glProgramUniformMatrix4x2dv", 43, -1 }, 837 { "glProgramUniformMatrix4x2fv", 43, -1 }, 838 { "glProgramUniformMatrix3x4dv", 43, -1 }, 839 { "glProgramUniformMatrix3x4fv", 43, -1 }, 840 { "glProgramUniformMatrix4x3dv", 43, -1 }, 841 { "glProgramUniformMatrix4x3fv", 43, -1 }, 842 { "glValidateProgramPipeline", 43, -1 }, 843 { "glGetProgramPipelineInfoLog", 43, -1 }, 844 { "glGetFloati_v", 43, -1 }, 845 { "glGetDoublei_v", 43, -1 }, 846// { "glCreateSyncFromCLeventARB", 43, -1 }, // XXX: Add to xml 847 { "glGetGraphicsResetStatusARB", 43, -1 }, 848 { "glGetnMapdvARB", 43, -1 }, 849 { "glGetnMapfvARB", 43, -1 }, 850 { "glGetnMapivARB", 43, -1 }, 851 { "glGetnPixelMapfvARB", 43, -1 }, 852 { "glGetnPixelMapuivARB", 43, -1 }, 853 { "glGetnPixelMapusvARB", 43, -1 }, 854 { "glGetnPolygonStippleARB", 43, -1 }, 855 { "glGetnColorTableARB", 43, -1 }, 856 { "glGetnConvolutionFilterARB", 43, -1 }, 857 { "glGetnSeparableFilterARB", 43, -1 }, 858 { "glGetnHistogramARB", 43, -1 }, 859 { "glGetnMinmaxARB", 43, -1 }, 860 { "glGetnTexImageARB", 43, -1 }, 861 { "glReadnPixelsARB", 43, -1 }, 862 { "glGetnCompressedTexImageARB", 43, -1 }, 863 { "glGetnUniformfvARB", 43, -1 }, 864 { "glGetnUniformivARB", 43, -1 }, 865 { "glGetnUniformuivARB", 43, -1 }, 866 { "glGetnUniformdvARB", 43, -1 }, 867 { "glDrawArraysInstancedBaseInstance", 43, -1 }, 868 { "glDrawElementsInstancedBaseInstance", 43, -1 }, 869 { "glDrawElementsInstancedBaseVertexBaseInstance", 43, -1 }, 870 { "glDrawTransformFeedbackInstanced", 43, -1 }, 871 { "glDrawTransformFeedbackStreamInstanced", 43, -1 }, 872// { "glGetInternalformativ", 43, -1 }, // XXX: Add to xml 873 { "glGetActiveAtomicCounterBufferiv", 43, -1 }, 874 { "glBindImageTexture", 43, -1 }, 875 { "glMemoryBarrier", 43, -1 }, 876 { "glTexStorage1D", 43, -1 }, 877 { "glTexStorage2D", 43, -1 }, 878 { "glTexStorage3D", 43, -1 }, 879 { "glTextureStorage1DEXT", 43, -1 }, 880 { "glTextureStorage2DEXT", 43, -1 }, 881 { "glTextureStorage3DEXT", 43, -1 }, 882 { "glClearBufferData", 43, -1 }, 883 { "glClearBufferSubData", 43, -1 }, 884 { "glClearNamedBufferDataEXT", 43, -1 }, 885 { "glClearNamedBufferSubDataEXT", 43, -1 }, 886 { "glCopyImageSubData", 43, -1 }, 887 { "glTextureView", 43, -1 }, 888 { "glBindVertexBuffer", 43, -1 }, 889 { "glVertexAttribFormat", 43, -1 }, 890 { "glVertexAttribIFormat", 43, -1 }, 891 { "glVertexAttribLFormat", 43, -1 }, 892 { "glVertexAttribBinding", 43, -1 }, 893 { "glVertexBindingDivisor", 43, -1 }, 894 { "glVertexArrayBindVertexBufferEXT", 43, -1 }, 895 { "glVertexArrayVertexAttribFormatEXT", 43, -1 }, 896 { "glVertexArrayVertexAttribIFormatEXT", 43, -1 }, 897 { "glVertexArrayVertexAttribLFormatEXT", 43, -1 }, 898 { "glVertexArrayVertexAttribBindingEXT", 43, -1 }, 899 { "glVertexArrayVertexBindingDivisorEXT", 43, -1 }, 900 { "glFramebufferParameteri", 43, -1 }, 901 { "glGetFramebufferParameteriv", 43, -1 }, 902 { "glNamedFramebufferParameteriEXT", 43, -1 }, 903 { "glGetNamedFramebufferParameterivEXT", 43, -1 }, 904// { "glGetInternalformati64v", 43, -1 }, // XXX: Add to xml 905 { "glInvalidateTexSubImage", 43, -1 }, 906 { "glInvalidateTexImage", 43, -1 }, 907 { "glInvalidateBufferSubData", 43, -1 }, 908 { "glInvalidateBufferData", 43, -1 }, 909 { "glInvalidateFramebuffer", 43, -1 }, 910 { "glInvalidateSubFramebuffer", 43, -1 }, 911 { "glMultiDrawArraysIndirect", 43, -1 }, 912 { "glMultiDrawElementsIndirect", 43, -1 }, 913 { "glGetProgramInterfaceiv", 43, -1 }, 914 { "glGetProgramResourceIndex", 43, -1 }, 915 { "glGetProgramResourceName", 43, -1 }, 916 { "glGetProgramResourceiv", 43, -1 }, 917 { "glGetProgramResourceLocation", 43, -1 }, 918 { "glGetProgramResourceLocationIndex", 43, -1 }, 919 { "glShaderStorageBlockBinding", 43, -1 }, 920 { "glTextureBufferRangeEXT", 43, -1 }, 921 { "glTexStorage2DMultisample", 43, -1 }, 922 { "glTexStorage3DMultisample", 43, -1 }, 923 { "glTextureStorage2DMultisampleEXT", 43, -1 }, 924 { "glTextureStorage3DMultisampleEXT", 43, -1 }, 925 926 { "glViewportArrayv", 43, -1 }, 927 { "glViewportIndexedf", 43, -1 }, 928 { "glViewportIndexedfv", 43, -1 }, 929 { "glScissorArrayv", 43, -1 }, 930 { "glScissorIndexed", 43, -1 }, 931 { "glScissorIndexedv", 43, -1 }, 932 { "glDepthRangeArrayv", 43, -1 }, 933 { "glDepthRangeIndexed", 43, -1 }, 934 935/* GL 4.4 */ 936 /* GL_NV_alpha_to_coverage_dither_control */ 937 { "glAlphaToCoverageDitherControlNV", 44, -1 }, 938 939/* GL 4.5 */ 940 /* aliased versions checked above */ 941 //{ "glGetGraphicsResetStatus", 45, -1 }, 942 //{ "glReadnPixels", 45, -1 }, 943 //{ "glGetnUniformfv", 45, -1 }, 944 //{ "glGetnUniformiv", 45, -1 }, 945 //{ "glGetnUniformuiv", 45, -1 }, 946 { "glMemoryBarrierByRegion", 45, -1 }, 947 948 /* GL_ARB_direct_state_access */ 949 { "glCreateTransformFeedbacks", 45, -1 }, 950 { "glTransformFeedbackBufferBase", 45, -1 }, 951 { "glTransformFeedbackBufferRange", 45, -1 }, 952 { "glGetTransformFeedbackiv", 45, -1 }, 953 { "glGetTransformFeedbacki_v", 45, -1 }, 954 { "glGetTransformFeedbacki64_v", 45, -1 }, 955 { "glCreateBuffers", 45, -1 }, 956 { "glNamedBufferStorage", 45, -1 }, 957 { "glNamedBufferData", 45, -1 }, 958 { "glNamedBufferSubData", 45, -1 }, 959 { "glCopyNamedBufferSubData", 45, -1 }, 960 { "glClearNamedBufferData", 45, -1 }, 961 { "glClearNamedBufferSubData", 45, -1 }, 962 { "glMapNamedBuffer", 45, -1 }, 963 { "glMapNamedBufferRange", 45, -1 }, 964 { "glFlushMappedNamedBufferRange", 45, -1 }, 965 { "glGetNamedBufferParameteriv", 45, -1 }, 966 { "glGetNamedBufferParameteri64v", 45, -1 }, 967 { "glGetNamedBufferPointerv", 45, -1 }, 968 { "glGetNamedBufferSubData", 45, -1 }, 969 { "glCreateFramebuffers", 45, -1 }, 970 { "glNamedFramebufferRenderbuffer", 45, -1 }, 971 { "glNamedFramebufferParameteri", 45, -1 }, 972 { "glNamedFramebufferTexture", 45, -1 }, 973 { "glNamedFramebufferTextureLayer", 45, -1 }, 974 { "glNamedFramebufferDrawBuffer", 45, -1 }, 975 { "glNamedFramebufferDrawBuffers", 45, -1 }, 976 { "glNamedFramebufferReadBuffer", 45, -1 }, 977 { "glInvalidateNamedFramebufferSubData", 45, -1 }, 978 { "glInvalidateNamedFramebufferData", 45, -1 }, 979 { "glClearNamedFramebufferiv", 45, -1 }, 980 { "glClearNamedFramebufferuiv", 45, -1 }, 981 { "glClearNamedFramebufferfv", 45, -1 }, 982 { "glClearNamedFramebufferfi", 45, -1 }, 983 { "glBlitNamedFramebuffer", 45, -1 }, 984 { "glCheckNamedFramebufferStatus", 45, -1 }, 985 { "glGetNamedFramebufferParameteriv", 45, -1 }, 986 { "glGetNamedFramebufferAttachmentParameteriv", 45, -1 }, 987 { "glCreateRenderbuffers", 45, -1 }, 988 { "glNamedRenderbufferStorage", 45, -1 }, 989 { "glNamedRenderbufferStorageMultisample", 45, -1 }, 990 { "glGetNamedRenderbufferParameteriv", 45, -1 }, 991 { "glCreateTextures", 45, -1 }, 992 { "glTextureStorage1D", 45, -1 }, 993 { "glTextureStorage2D", 45, -1 }, 994 { "glTextureStorage3D", 45, -1 }, 995 { "glTextureSubImage1D", 45, -1 }, 996 { "glTextureSubImage2D", 45, -1 }, 997 { "glTextureSubImage3D", 45, -1 }, 998 { "glBindTextureUnit", 45, -1 }, 999 { "glTextureParameterf", 45, -1 }, 1000 { "glTextureParameterfv", 45, -1 }, 1001 { "glTextureParameteri", 45, -1 }, 1002 { "glTextureParameterIiv", 45, -1 }, 1003 { "glTextureParameterIuiv", 45, -1 }, 1004 { "glTextureParameteriv", 45, -1 }, 1005 { "glGetTextureLevelParameterfv", 45, -1 }, 1006 { "glGetTextureLevelParameteriv", 45, -1 }, 1007 { "glGetTextureParameterfv", 45, -1 }, 1008 { "glGetTextureParameterIiv", 45, -1 }, 1009 { "glGetTextureParameterIuiv", 45, -1 }, 1010 { "glGetTextureParameteriv", 45, -1 }, 1011 { "glCopyTextureSubImage1D", 45, -1 }, 1012 { "glCopyTextureSubImage2D", 45, -1 }, 1013 { "glCopyTextureSubImage3D", 45, -1 }, 1014 { "glGetTextureImage", 45, -1 }, 1015 { "glGetCompressedTextureImage", 45, -1 }, 1016 { "glCompressedTextureSubImage1D", 45, -1 }, 1017 { "glCompressedTextureSubImage2D", 45, -1 }, 1018 { "glCompressedTextureSubImage3D", 45, -1 }, 1019 { "glGenerateTextureMipmap", 45, -1 }, 1020 { "glTextureStorage2DMultisample", 45, -1 }, 1021 { "glTextureStorage3DMultisample", 45, -1 }, 1022 { "glTextureBuffer", 45, -1 }, 1023 { "glTextureBufferRange", 45, -1 }, 1024 { "glCreateVertexArrays", 45, -1 }, 1025 { "glDisableVertexArrayAttrib", 45, -1 }, 1026 { "glEnableVertexArrayAttrib", 45, -1 }, 1027 { "glVertexArrayElementBuffer", 45, -1 }, 1028 { "glVertexArrayVertexBuffer", 45, -1 }, 1029 { "glVertexArrayVertexBuffers", 45, -1 }, 1030 { "glVertexArrayAttribFormat", 45, -1 }, 1031 { "glVertexArrayAttribIFormat", 45, -1 }, 1032 { "glVertexArrayAttribLFormat", 45, -1 }, 1033 { "glVertexArrayAttribBinding", 45, -1 }, 1034 { "glVertexArrayBindingDivisor", 45, -1 }, 1035 { "glGetVertexArrayiv", 45, -1 }, 1036 { "glGetVertexArrayIndexediv", 45, -1 }, 1037 { "glGetVertexArrayIndexed64iv", 45, -1 }, 1038 { "glCreateSamplers", 45, -1 }, 1039 { "glCreateProgramPipelines", 45, -1 }, 1040 { "glCreateQueries", 45, -1 }, 1041 { "glGetQueryBufferObjectiv", 45, -1 }, 1042 { "glGetQueryBufferObjectuiv", 45, -1 }, 1043 { "glGetQueryBufferObjecti64v", 45, -1 }, 1044 { "glGetQueryBufferObjectui64v", 45, -1 }, 1045 1046 /* GL_EXT_direct_state_access - GL 1.0 */ 1047 { "glMatrixLoadfEXT", 10, -1 }, 1048 { "glMatrixLoaddEXT", 10, -1 }, 1049 { "glMatrixMultfEXT", 10, -1 }, 1050 { "glMatrixMultdEXT", 10, -1 }, 1051 { "glMatrixLoadIdentityEXT", 10, -1 }, 1052 { "glMatrixRotatefEXT", 10, -1 }, 1053 { "glMatrixRotatedEXT", 10, -1 }, 1054 { "glMatrixScalefEXT", 10, -1 }, 1055 { "glMatrixScaledEXT", 10, -1 }, 1056 { "glMatrixTranslatefEXT", 10, -1 }, 1057 { "glMatrixTranslatedEXT", 10, -1 }, 1058 { "glMatrixOrthoEXT", 10, -1 }, 1059 { "glMatrixFrustumEXT", 10, -1 }, 1060 { "glMatrixPushEXT", 10, -1 }, 1061 { "glMatrixPopEXT", 10, -1 }, 1062 /* GL_EXT_direct_state_access - GL 1.1 */ 1063 { "glClientAttribDefaultEXT", 11, -1 }, 1064 { "glPushClientAttribDefaultEXT", 11, -1 }, 1065 { "glTextureParameteriEXT", 11, -1 }, 1066 { "glTextureParameterivEXT", 11, -1 }, 1067 { "glTextureParameterfEXT", 11, -1 }, 1068 { "glTextureParameterfvEXT", 11, -1 }, 1069 { "glTextureImage1DEXT", 11, -1 }, 1070 { "glTextureImage2DEXT", 11, -1 }, 1071 { "glTextureSubImage1DEXT", 11, -1 }, 1072 { "glTextureSubImage2DEXT", 11, -1 }, 1073 { "glCopyTextureImage1DEXT", 11, -1 }, 1074 { "glCopyTextureImage2DEXT", 11, -1 }, 1075 { "glCopyTextureSubImage1DEXT", 11, -1 }, 1076 { "glCopyTextureSubImage2DEXT", 11, -1 }, 1077 { "glGetTextureImageEXT", 11, -1 }, 1078 { "glGetTextureParameterfvEXT", 11, -1 }, 1079 { "glGetTextureParameterivEXT", 11, -1 }, 1080 { "glGetTextureLevelParameterfvEXT", 11, -1 }, 1081 { "glGetTextureLevelParameterivEXT", 11, -1 }, 1082 /* GL_EXT_direct_state_access - GL 1.2 */ 1083 { "glTextureImage3DEXT", 12, -1 }, 1084 { "glTextureSubImage3DEXT", 12, -1 }, 1085 { "glCopyTextureSubImage3DEXT", 12, -1 }, 1086 /* GL_EXT_direct_state_access - GL 1.2.1 */ 1087 { "glBindMultiTextureEXT", 12, -1 }, 1088 { "glMultiTexCoordPointerEXT", 12, -1 }, 1089 { "glMultiTexEnvfEXT", 12, -1 }, 1090 { "glMultiTexEnvfvEXT", 12, -1 }, 1091 { "glMultiTexEnviEXT", 12, -1 }, 1092 { "glMultiTexEnvivEXT", 12, -1 }, 1093 { "glMultiTexGendEXT", 12, -1 }, 1094 { "glMultiTexGendvEXT", 12, -1 }, 1095 { "glMultiTexGenfEXT", 12, -1 }, 1096 { "glMultiTexGenfvEXT", 12, -1 }, 1097 { "glMultiTexGeniEXT", 12, -1 }, 1098 { "glMultiTexGenivEXT", 12, -1 }, 1099 { "glGetMultiTexEnvfvEXT", 12, -1 }, 1100 { "glGetMultiTexEnvivEXT", 12, -1 }, 1101 { "glGetMultiTexGendvEXT", 12, -1 }, 1102 { "glGetMultiTexGenfvEXT", 12, -1 }, 1103 { "glGetMultiTexGenivEXT", 12, -1 }, 1104 { "glMultiTexParameterfEXT", 12, -1 }, 1105 { "glMultiTexParameterfvEXT", 12, -1 }, 1106 { "glMultiTexParameteriEXT", 12, -1 }, 1107 { "glMultiTexParameterivEXT", 12, -1 }, 1108 { "glMultiTexImage1DEXT", 12, -1 }, 1109 { "glMultiTexImage2DEXT", 12, -1 }, 1110 { "glMultiTexSubImage1DEXT", 12, -1 }, 1111 { "glMultiTexSubImage2DEXT", 12, -1 }, 1112 { "glCopyMultiTexImage1DEXT", 12, -1 }, 1113 { "glCopyMultiTexImage2DEXT", 12, -1 }, 1114 { "glCopyMultiTexSubImage1DEXT", 12, -1 }, 1115 { "glCopyMultiTexSubImage2DEXT", 12, -1 }, 1116 { "glGetMultiTexImageEXT", 12, -1 }, 1117 { "glGetMultiTexParameterfvEXT", 12, -1 }, 1118 { "glGetMultiTexParameterivEXT", 12, -1 }, 1119 { "glGetMultiTexLevelParameterfvEXT", 12, -1 }, 1120 { "glGetMultiTexLevelParameterivEXT", 12, -1 }, 1121 { "glMultiTexImage3DEXT", 12, -1 }, 1122 { "glMultiTexSubImage3DEXT", 12, -1 }, 1123 { "glCopyMultiTexSubImage3DEXT", 12, -1 }, 1124 { "glEnableClientStateIndexedEXT", 12, -1 }, 1125 { "glDisableClientStateIndexedEXT", 12, -1 }, 1126 { "glGetPointerIndexedvEXT", 12, -1 }, 1127 /* GL_EXT_direct_state_access - ARB_vertex_program */ 1128 { "glNamedProgramStringEXT", 10, -1 }, 1129 { "glNamedProgramLocalParameter4dEXT", 10, -1 }, 1130 { "glNamedProgramLocalParameter4dvEXT", 10, -1 }, 1131 { "glNamedProgramLocalParameter4fEXT", 10, -1 }, 1132 { "glNamedProgramLocalParameter4fvEXT", 10, -1 }, 1133 { "glGetNamedProgramLocalParameterdvEXT", 10, -1 }, 1134 { "glGetNamedProgramLocalParameterfvEXT", 10, -1 }, 1135 { "glGetNamedProgramivEXT", 10, -1 }, 1136 { "glGetNamedProgramStringEXT", 10, -1 }, 1137 /* GL_EXT_direct_state_access - GL 1.3 */ 1138 { "glCompressedTextureImage1DEXT", 13, -1 }, 1139 { "glCompressedTextureImage2DEXT", 13, -1 }, 1140 { "glCompressedTextureImage3DEXT", 13, -1 }, 1141 { "glCompressedTextureSubImage1DEXT", 13, -1 }, 1142 { "glCompressedTextureSubImage2DEXT", 13, -1 }, 1143 { "glCompressedTextureSubImage3DEXT", 13, -1 }, 1144 { "glGetCompressedTextureImageEXT", 13, -1 }, 1145 { "glCompressedMultiTexImage1DEXT", 13, -1 }, 1146 { "glCompressedMultiTexImage2DEXT", 13, -1 }, 1147 { "glCompressedMultiTexImage3DEXT", 13, -1 }, 1148 { "glCompressedMultiTexSubImage1DEXT", 13, -1 }, 1149 { "glCompressedMultiTexSubImage2DEXT", 13, -1 }, 1150 { "glCompressedMultiTexSubImage3DEXT", 13, -1 }, 1151 { "glGetCompressedMultiTexImageEXT", 13, -1 }, 1152 { "glMatrixLoadTransposefEXT", 13, -1 }, 1153 { "glMatrixLoadTransposedEXT", 13, -1 }, 1154 { "glMatrixMultTransposefEXT", 13, -1 }, 1155 { "glMatrixMultTransposedEXT", 13, -1 }, 1156 /* GL_EXT_direct_state_access - GL 1.5 */ 1157 { "glNamedBufferDataEXT", 15, -1 }, 1158 { "glNamedBufferSubDataEXT", 15, -1 }, 1159 { "glMapNamedBufferEXT", 15, -1 }, 1160 { "glUnmapNamedBufferEXT", 15, -1 }, 1161 { "glGetNamedBufferParameterivEXT", 15, -1 }, 1162 { "glGetNamedBufferPointervEXT", 15, -1 }, 1163 { "glGetNamedBufferSubDataEXT", 15, -1 }, 1164 /* GL_EXT_direct_state_access - GL 2.0 */ 1165 /* Added glProgramUniform*EXT functions are aliases */ 1166 /* GL_EXT_direct_state_access - GL 2.1 */ 1167 /* Added glProgramUniformMAtrix*EXT functions are aliases */ 1168 /* GL_EXT_direct_state_access - EXT_texture_buffer_object */ 1169 { "glTextureBufferEXT", 10, -1 }, 1170 { "glMultiTexBufferEXT", 10, -1 }, 1171 /* GL_EXT_direct_state_access - EXT_texture_integer */ 1172 { "glTextureParameterIivEXT", 10, -1 }, 1173 { "glTextureParameterIuivEXT", 10, -1 }, 1174 { "glGetTextureParameterIivEXT", 10, -1 }, 1175 { "glGetTextureParameterIuivEXT", 10, -1 }, 1176 { "glMultiTexParameterIivEXT", 10, -1 }, 1177 { "glMultiTexParameterIuivEXT", 10, -1 }, 1178 { "glGetMultiTexParameterIivEXT", 10, -1 }, 1179 { "glGetMultiTexParameterIuivEXT", 10, -1 }, 1180 /* GL_EXT_direct_state_access - EXT_gpu_shader4 */ 1181 /* Added glProgramUniform*u*EXT functions are aliases */ 1182 /* GL_EXT_direct_state_access - EXT_gpu_program_parameters */ 1183 { "glNamedProgramLocalParameters4fvEXT", 10, -1 }, 1184 /* GL_EXT_direct_state_access - GL 3.0 */ 1185 { "glNamedRenderbufferStorageEXT", 30, -1 }, 1186 { "glGetNamedRenderbufferParameterivEXT", 30, -1 }, 1187 { "glNamedRenderbufferStorageMultisampleEXT", 30, -1 }, 1188 { "glCheckNamedFramebufferStatusEXT", 30, -1 }, 1189 { "glNamedFramebufferTexture1DEXT", 30, -1 }, 1190 { "glNamedFramebufferTexture2DEXT", 30, -1 }, 1191 { "glNamedFramebufferTexture3DEXT", 30, -1 }, 1192 { "glNamedFramebufferRenderbufferEXT", 30, -1 }, 1193 { "glGetNamedFramebufferAttachmentParameterivEXT", 30, -1 }, 1194 { "glGenerateTextureMipmapEXT", 30, -1 }, 1195 { "glGenerateMultiTexMipmapEXT", 30, -1 }, 1196 { "glFramebufferDrawBufferEXT", 30, -1 }, 1197 { "glFramebufferDrawBuffersEXT", 30, -1 }, 1198 { "glFramebufferReadBufferEXT", 30, -1 }, 1199 { "glGetFramebufferParameterivEXT", 30, -1 }, 1200 { "glNamedCopyBufferSubDataEXT", 30, -1 }, 1201 { "glVertexArrayVertexOffsetEXT", 30, -1 }, 1202 { "glVertexArrayColorOffsetEXT", 30, -1 }, 1203 { "glVertexArrayEdgeFlagOffsetEXT", 30, -1 }, 1204 { "glVertexArrayIndexOffsetEXT", 30, -1 }, 1205 { "glVertexArrayNormalOffsetEXT", 30, -1 }, 1206 { "glVertexArrayTexCoordOffsetEXT", 30, -1 }, 1207 { "glVertexArrayMultiTexCoordOffsetEXT", 30, -1 }, 1208 { "glVertexArrayFogCoordOffsetEXT", 30, -1 }, 1209 { "glVertexArraySecondaryColorOffsetEXT", 30, -1 }, 1210 { "glVertexArrayVertexAttribOffsetEXT", 30, -1 }, 1211 { "glVertexArrayVertexAttribIOffsetEXT", 30, -1 }, 1212 { "glEnableVertexArrayEXT", 30, -1 }, 1213 { "glDisableVertexArrayEXT", 30, -1 }, 1214 { "glEnableVertexArrayAttribEXT", 30, -1 }, 1215 { "glDisableVertexArrayAttribEXT", 30, -1 }, 1216 { "glGetVertexArrayIntegervEXT", 30, -1 }, 1217 { "glGetVertexArrayPointervEXT", 30, -1 }, 1218 { "glGetVertexArrayIntegeri_vEXT", 30, -1 }, 1219 { "glGetVertexArrayPointeri_vEXT", 30, -1 }, 1220 { "glMapNamedBufferRangeEXT", 30, -1 }, 1221 { "glFlushMappedNamedBufferRangeEXT", 30, -1 }, 1222 1223 /* GL_ARB_internalformat_query */ 1224 { "glGetInternalformativ", 30, -1 }, 1225 1226 /* GL_ARB_internalformat_query */ 1227 { "glGetInternalformati64v", 30, -1 }, 1228 1229 /* GL_ARB_multi_bind */ 1230 { "glBindBuffersBase", 44, -1 }, 1231 { "glBindBuffersRange", 44, -1 }, 1232 { "glBindTextures", 44, -1 }, 1233 { "glBindSamplers", 44, -1 }, 1234 { "glBindImageTextures", 44, -1 }, 1235 { "glBindVertexBuffers", 44, -1 }, 1236 1237 /* GL_ARB_shading_language_include */ 1238 { "glNamedStringARB", 20, -1 }, 1239 { "glDeleteNamedStringARB", 20, -1 }, 1240 { "glCompileShaderIncludeARB", 20, -1 }, 1241 { "glIsNamedStringARB", 20, -1 }, 1242 { "glGetNamedStringARB", 20, -1 }, 1243 { "glGetNamedStringivARB", 20, -1 }, 1244 1245 /* GL_KHR_debug/GL_ARB_debug_output */ 1246 { "glPushDebugGroup", 11, -1 }, 1247 { "glPopDebugGroup", 11, -1 }, 1248 { "glDebugMessageCallback", 11, -1 }, 1249 { "glDebugMessageControl", 11, -1 }, 1250 { "glDebugMessageInsert", 11, -1 }, 1251 { "glGetDebugMessageLog", 11, -1 }, 1252 { "glGetObjectLabel", 11, -1 }, 1253 { "glGetObjectPtrLabel", 11, -1 }, 1254 { "glObjectLabel", 11, -1 }, 1255 { "glObjectPtrLabel", 11, -1 }, 1256 /* aliased versions checked above */ 1257 //{ "glDebugMessageControlARB", 11, -1 }, 1258 //{ "glDebugMessageInsertARB", 11, -1 }, 1259 //{ "glDebugMessageCallbackARB", 11, -1 }, 1260 //{ "glGetDebugMessageLogARB", 11, -1 }, 1261 1262 /* GL_AMD_performance_monitor */ 1263 { "glGetPerfMonitorGroupsAMD", 11, -1 }, 1264 { "glGetPerfMonitorCountersAMD", 11, -1 }, 1265 { "glGetPerfMonitorGroupStringAMD", 11, -1 }, 1266 { "glGetPerfMonitorCounterStringAMD", 11, -1 }, 1267 { "glGetPerfMonitorCounterInfoAMD", 11, -1 }, 1268 { "glGenPerfMonitorsAMD", 11, -1 }, 1269 { "glDeletePerfMonitorsAMD", 11, -1 }, 1270 { "glSelectPerfMonitorCountersAMD", 11, -1 }, 1271 { "glBeginPerfMonitorAMD", 11, -1 }, 1272 { "glEndPerfMonitorAMD", 11, -1 }, 1273 { "glGetPerfMonitorCounterDataAMD", 11, -1 }, 1274 1275 /* GL_INTEL_performance_query */ 1276 { "glGetFirstPerfQueryIdINTEL", 30, -1 }, 1277 { "glGetNextPerfQueryIdINTEL", 30, -1 }, 1278 { "glGetPerfQueryIdByNameINTEL", 30, -1 }, 1279 { "glGetPerfQueryInfoINTEL", 30, -1 }, 1280 { "glGetPerfCounterInfoINTEL", 30, -1 }, 1281 { "glCreatePerfQueryINTEL", 30, -1 }, 1282 { "glDeletePerfQueryINTEL", 30, -1 }, 1283 { "glBeginPerfQueryINTEL", 30, -1 }, 1284 { "glEndPerfQueryINTEL", 30, -1 }, 1285 { "glGetPerfQueryDataINTEL", 30, -1 }, 1286 1287 /* GL_NV_vdpau_interop */ 1288 { "glVDPAUInitNV", 11, -1 }, 1289 { "glVDPAUFiniNV", 11, -1 }, 1290 { "glVDPAURegisterVideoSurfaceNV", 11, -1 }, 1291 { "glVDPAURegisterOutputSurfaceNV", 11, -1 }, 1292 { "glVDPAUIsSurfaceNV", 11, -1 }, 1293 { "glVDPAUUnregisterSurfaceNV", 11, -1 }, 1294 { "glVDPAUGetSurfaceivNV", 11, -1 }, 1295 { "glVDPAUSurfaceAccessNV", 11, -1 }, 1296 { "glVDPAUMapSurfacesNV", 11, -1 }, 1297 { "glVDPAUUnmapSurfacesNV", 11, -1 }, 1298 1299 /* GL_ARB_buffer_storage */ 1300 { "glBufferStorage", 43, -1 }, 1301 { "glNamedBufferStorageEXT", 43, -1 }, 1302 1303 /* GL_ARB_clear_texture */ 1304 { "glClearTexImage", 13, -1 }, 1305 { "glClearTexSubImage", 13, -1 }, 1306 1307 /* GL_ARB_clip_control */ 1308 { "glClipControl", 45, -1 }, 1309 1310 /* GL_ARB_compute_shader */ 1311 { "glDispatchCompute", 43, -1 }, 1312 { "glDispatchComputeIndirect", 43, -1 }, 1313 1314 /* GL_ARB_compute_variable_group_size */ 1315 { "glDispatchComputeGroupSizeARB", 43, -1 }, 1316 1317 /* GL_EXT_polygon_offset_clamp */ 1318 { "glPolygonOffsetClampEXT", 11, -1 }, 1319 1320 /* GL_ARB_get_texture_sub_image */ 1321 { "glGetTextureSubImage", 20, -1 }, 1322 { "glGetCompressedTextureSubImage", 20, -1 }, 1323 1324 /* GL_GREMEDY_string_marker */ 1325 { "glStringMarkerGREMEDY", 15, -1 }, 1326 1327 /* GL_EXT_window_rectangles */ 1328 { "glWindowRectanglesEXT", 30, -1 }, 1329 1330 /* GL_KHR_blend_equation_advanced */ 1331 { "glBlendBarrierKHR", 20, -1 }, 1332 1333 /* GL_ARB_sparse_buffer */ 1334 { "glBufferPageCommitmentARB", 43, -1 }, 1335 { "glNamedBufferPageCommitmentARB", 43, -1 }, 1336 { "glNamedBufferPageCommitmentEXT", 43, -1 }, 1337 1338 /* GL_ARB_bindless_texture */ 1339 { "glGetTextureHandleARB", 40, -1 }, 1340 { "glGetTextureSamplerHandleARB", 40, -1 }, 1341 { "glMakeTextureHandleResidentARB", 40, -1 }, 1342 { "glMakeTextureHandleNonResidentARB", 40, -1 }, 1343 { "glIsTextureHandleResidentARB", 40, -1 }, 1344 { "glGetImageHandleARB", 40, -1 }, 1345 { "glMakeImageHandleResidentARB", 40, -1 }, 1346 { "glMakeImageHandleNonResidentARB", 40, -1 }, 1347 { "glIsImageHandleResidentARB", 40, -1 }, 1348 { "glUniformHandleui64ARB", 40, -1 }, 1349 { "glUniformHandleui64vARB", 40, -1 }, 1350 { "glProgramUniformHandleui64ARB", 40, -1 }, 1351 { "glProgramUniformHandleui64vARB", 40, -1 }, 1352 { "glVertexAttribL1ui64ARB", 40, -1 }, 1353 { "glVertexAttribL1ui64vARB", 40, -1 }, 1354 { "glGetVertexAttribLui64vARB", 40, -1 }, 1355 1356 /* GL_EXT_external_objects */ 1357 { "glGetUnsignedBytevEXT", 45, -1 }, 1358 { "glGetUnsignedBytei_vEXT", 45, -1 }, 1359 { "glDeleteMemoryObjectsEXT", 45, -1 }, 1360 { "glIsMemoryObjectEXT", 45, -1 }, 1361 { "glCreateMemoryObjectsEXT", 45, -1 }, 1362 { "glMemoryObjectParameterivEXT", 45, -1 }, 1363 { "glGetMemoryObjectParameterivEXT", 45, -1 }, 1364 { "glTexStorageMem2DEXT", 45, -1 }, 1365 { "glTexStorageMem2DMultisampleEXT", 45, -1 }, 1366 { "glTexStorageMem3DEXT", 45, -1 }, 1367 { "glTexStorageMem3DMultisampleEXT", 45, -1 }, 1368 { "glBufferStorageMemEXT", 45, -1 }, 1369 { "glTextureStorageMem2DEXT", 45, -1 }, 1370 { "glTextureStorageMem2DMultisampleEXT", 45, -1 }, 1371 { "glTextureStorageMem3DEXT", 45, -1 }, 1372 { "glTextureStorageMem3DMultisampleEXT", 45, -1 }, 1373 { "glNamedBufferStorageMemEXT", 45, -1 }, 1374 { "glTexStorageMem1DEXT", 45, -1 }, 1375 { "glTextureStorageMem1DEXT", 45, -1 }, 1376 { "glGenSemaphoresEXT", 45, -1 }, 1377 { "glDeleteSemaphoresEXT", 45, -1 }, 1378 { "glIsSemaphoreEXT", 45, -1 }, 1379 { "glSemaphoreParameterui64vEXT", 45, -1 }, 1380 { "glGetSemaphoreParameterui64vEXT", 45, -1 }, 1381 { "glWaitSemaphoreEXT", 45, -1 }, 1382 { "glSignalSemaphoreEXT", 45, -1 }, 1383 1384 /* GL_EXT_external_objects_fd */ 1385 { "glImportMemoryFdEXT", 45, -1 }, 1386 { "glImportSemaphoreFdEXT", 45, -1 }, 1387 1388 /* GL_ARB_gl_spirv */ 1389 { "glSpecializeShaderARB", 45, -1 }, 1390 1391 /* GL_EXT_shader_framebuffer_fetch_non_coherent */ 1392 { "glFramebufferFetchBarrierEXT", 20, -1 }, 1393 1394 /* GL_NV_conservative_raster */ 1395 { "glSubpixelPrecisionBiasNV", 10, -1 }, 1396 1397 /* GL_NV_conservative_raster_dilate */ 1398 { "glConservativeRasterParameterfNV", 10, -1 }, 1399 1400 /* GL_NV_conservative_raster_pre_snap_triangles */ 1401 { "glConservativeRasterParameteriNV", 10, -1 }, 1402 1403 /* GL_ARB_sample_locations */ 1404 { "glFramebufferSampleLocationsfvARB", 30, -1 }, 1405 { "glNamedFramebufferSampleLocationsfvARB", 30, -1 }, 1406 { "glEvaluateDepthValuesARB", 30, -1 }, 1407 1408 /* GL_ARB_indirect_parameters */ 1409 { "glMultiDrawArraysIndirectCountARB", 11, -1 }, 1410 { "glMultiDrawElementsIndirectCountARB", 11, -1 }, 1411 1412 /* GL_AMD_framebuffer_multisample_advanced */ 1413 { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, 1414 { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, 1415 1416 { "glMaxShaderCompilerThreadsKHR", 11, -1 }, 1417 1418 /* GL_EXT_shader_image_load_store */ 1419 { "glBindImageTextureEXT", 30, -1 }, 1420 1421 /* GL_MESA_framebuffer_flip_y */ 1422 { "glFramebufferParameteriMESA", 43, -1 }, 1423 { "glGetFramebufferParameterivMESA", 43, -1 }, 1424 1425 /* GL_ARB_gpu_shader_int64 */ 1426 { "glUniform1i64ARB", 40, -1 }, 1427 { "glUniform2i64ARB", 40, -1 }, 1428 { "glUniform3i64ARB", 40, -1 }, 1429 { "glUniform4i64ARB", 40, -1 }, 1430 { "glUniform1ui64ARB", 40, -1 }, 1431 { "glUniform2ui64ARB", 40, -1 }, 1432 { "glUniform3ui64ARB", 40, -1 }, 1433 { "glUniform4ui64ARB", 40, -1 }, 1434 { "glUniform1i64vARB", 40, -1 }, 1435 { "glUniform2i64vARB", 40, -1 }, 1436 { "glUniform3i64vARB", 40, -1 }, 1437 { "glUniform4i64vARB", 40, -1 }, 1438 { "glUniform1ui64vARB", 40, -1 }, 1439 { "glUniform2ui64vARB", 40, -1 }, 1440 { "glUniform3ui64vARB", 40, -1 }, 1441 { "glUniform4ui64vARB", 40, -1 }, 1442 { "glGetUniformi64vARB", 40, -1 }, 1443 { "glGetUniformui64vARB", 40, -1 }, 1444 { "glGetnUniformi64vARB", 40, -1 }, 1445 { "glGetnUniformui64vARB", 40, -1 }, 1446 { "glProgramUniform1i64ARB", 40, -1 }, 1447 { "glProgramUniform2i64ARB", 40, -1 }, 1448 { "glProgramUniform3i64ARB", 40, -1 }, 1449 { "glProgramUniform4i64ARB", 40, -1 }, 1450 { "glProgramUniform1ui64ARB", 40, -1 }, 1451 { "glProgramUniform2ui64ARB", 40, -1 }, 1452 { "glProgramUniform3ui64ARB", 40, -1 }, 1453 { "glProgramUniform4ui64ARB", 40, -1 }, 1454 { "glProgramUniform1i64vARB", 40, -1 }, 1455 { "glProgramUniform2i64vARB", 40, -1 }, 1456 { "glProgramUniform3i64vARB", 40, -1 }, 1457 { "glProgramUniform4i64vARB", 40, -1 }, 1458 { "glProgramUniform1ui64vARB", 40, -1 }, 1459 { "glProgramUniform2ui64vARB", 40, -1 }, 1460 { "glProgramUniform3ui64vARB", 40, -1 }, 1461 { "glProgramUniform4ui64vARB", 40, -1 }, 1462 1463 /* GL_NV_viewport_swizzle */ 1464 { "glViewportSwizzleNV", 11, -1 }, 1465 1466 /* ARB_ES3_2_compatibility */ 1467 { "glPrimitiveBoundingBoxARB", 45, -1 }, 1468 1469 { "glInternalBufferSubDataCopyMESA", 11, -1 }, 1470 { "glInternalSetError", 20, -1 }, 1471 1472 { NULL, 0, -1 } 1473}; 1474 1475const struct function gl_compatibility_functions_possible[] = { 1476 { "glNewList", 10, _gloffset_NewList }, 1477 { "glEndList", 10, _gloffset_EndList }, 1478 { "glCallList", 10, _gloffset_CallList }, 1479 { "glCallLists", 10, _gloffset_CallLists }, 1480 { "glDeleteLists", 10, _gloffset_DeleteLists }, 1481 { "glGenLists", 10, _gloffset_GenLists }, 1482 { "glListBase", 10, _gloffset_ListBase }, 1483 { "glBegin", 10, _gloffset_Begin }, 1484 { "glBitmap", 10, _gloffset_Bitmap }, 1485 { "glColor3b", 10, _gloffset_Color3b }, 1486 { "glColor3bv", 10, _gloffset_Color3bv }, 1487 { "glColor3d", 10, _gloffset_Color3d }, 1488 { "glColor3dv", 10, _gloffset_Color3dv }, 1489 { "glColor3f", 10, _gloffset_Color3f }, 1490 { "glColor3fv", 10, _gloffset_Color3fv }, 1491 { "glColor3i", 10, _gloffset_Color3i }, 1492 { "glColor3iv", 10, _gloffset_Color3iv }, 1493 { "glColor3s", 10, _gloffset_Color3s }, 1494 { "glColor3sv", 10, _gloffset_Color3sv }, 1495 { "glColor3ub", 10, _gloffset_Color3ub }, 1496 { "glColor3ubv", 10, _gloffset_Color3ubv }, 1497 { "glColor3ui", 10, _gloffset_Color3ui }, 1498 { "glColor3uiv", 10, _gloffset_Color3uiv }, 1499 { "glColor3us", 10, _gloffset_Color3us }, 1500 { "glColor3usv", 10, _gloffset_Color3usv }, 1501 { "glColor4b", 10, _gloffset_Color4b }, 1502 { "glColor4bv", 10, _gloffset_Color4bv }, 1503 { "glColor4d", 10, _gloffset_Color4d }, 1504 { "glColor4dv", 10, _gloffset_Color4dv }, 1505 { "glColor4f", 10, _gloffset_Color4f }, 1506 { "glColor4fv", 10, _gloffset_Color4fv }, 1507 { "glColor4i", 10, _gloffset_Color4i }, 1508 { "glColor4iv", 10, _gloffset_Color4iv }, 1509 { "glColor4s", 10, _gloffset_Color4s }, 1510 { "glColor4sv", 10, _gloffset_Color4sv }, 1511 { "glColor4ub", 10, _gloffset_Color4ub }, 1512 { "glColor4ubv", 10, _gloffset_Color4ubv }, 1513 { "glColor4ui", 10, _gloffset_Color4ui }, 1514 { "glColor4uiv", 10, _gloffset_Color4uiv }, 1515 { "glColor4us", 10, _gloffset_Color4us }, 1516 { "glColor4usv", 10, _gloffset_Color4usv }, 1517 { "glEdgeFlag", 10, _gloffset_EdgeFlag }, 1518 { "glEdgeFlagv", 10, _gloffset_EdgeFlagv }, 1519 { "glEnd", 10, _gloffset_End }, 1520 { "glIndexd", 10, _gloffset_Indexd }, 1521 { "glIndexdv", 10, _gloffset_Indexdv }, 1522 { "glIndexf", 10, _gloffset_Indexf }, 1523 { "glIndexfv", 10, _gloffset_Indexfv }, 1524 { "glIndexi", 10, _gloffset_Indexi }, 1525 { "glIndexiv", 10, _gloffset_Indexiv }, 1526 { "glIndexs", 10, _gloffset_Indexs }, 1527 { "glIndexsv", 10, _gloffset_Indexsv }, 1528 { "glNormal3b", 10, _gloffset_Normal3b }, 1529 { "glNormal3bv", 10, _gloffset_Normal3bv }, 1530 { "glNormal3d", 10, _gloffset_Normal3d }, 1531 { "glNormal3dv", 10, _gloffset_Normal3dv }, 1532 { "glNormal3f", 10, _gloffset_Normal3f }, 1533 { "glNormal3fv", 10, _gloffset_Normal3fv }, 1534 { "glNormal3i", 10, _gloffset_Normal3i }, 1535 { "glNormal3iv", 10, _gloffset_Normal3iv }, 1536 { "glNormal3s", 10, _gloffset_Normal3s }, 1537 { "glNormal3sv", 10, _gloffset_Normal3sv }, 1538 { "glRasterPos2d", 10, _gloffset_RasterPos2d }, 1539 { "glRasterPos2dv", 10, _gloffset_RasterPos2dv }, 1540 { "glRasterPos2f", 10, _gloffset_RasterPos2f }, 1541 { "glRasterPos2fv", 10, _gloffset_RasterPos2fv }, 1542 { "glRasterPos2i", 10, _gloffset_RasterPos2i }, 1543 { "glRasterPos2iv", 10, _gloffset_RasterPos2iv }, 1544 { "glRasterPos2s", 10, _gloffset_RasterPos2s }, 1545 { "glRasterPos2sv", 10, _gloffset_RasterPos2sv }, 1546 { "glRasterPos3d", 10, _gloffset_RasterPos3d }, 1547 { "glRasterPos3dv", 10, _gloffset_RasterPos3dv }, 1548 { "glRasterPos3f", 10, _gloffset_RasterPos3f }, 1549 { "glRasterPos3fv", 10, _gloffset_RasterPos3fv }, 1550 { "glRasterPos3i", 10, _gloffset_RasterPos3i }, 1551 { "glRasterPos3iv", 10, _gloffset_RasterPos3iv }, 1552 { "glRasterPos3s", 10, _gloffset_RasterPos3s }, 1553 { "glRasterPos3sv", 10, _gloffset_RasterPos3sv }, 1554 { "glRasterPos4d", 10, _gloffset_RasterPos4d }, 1555 { "glRasterPos4dv", 10, _gloffset_RasterPos4dv }, 1556 { "glRasterPos4f", 10, _gloffset_RasterPos4f }, 1557 { "glRasterPos4fv", 10, _gloffset_RasterPos4fv }, 1558 { "glRasterPos4i", 10, _gloffset_RasterPos4i }, 1559 { "glRasterPos4iv", 10, _gloffset_RasterPos4iv }, 1560 { "glRasterPos4s", 10, _gloffset_RasterPos4s }, 1561 { "glRasterPos4sv", 10, _gloffset_RasterPos4sv }, 1562 { "glRectd", 10, _gloffset_Rectd }, 1563 { "glRectdv", 10, _gloffset_Rectdv }, 1564 { "glRectf", 10, _gloffset_Rectf }, 1565 { "glRectfv", 10, _gloffset_Rectfv }, 1566 { "glRecti", 10, _gloffset_Recti }, 1567 { "glRectiv", 10, _gloffset_Rectiv }, 1568 { "glRects", 10, _gloffset_Rects }, 1569 { "glRectsv", 10, _gloffset_Rectsv }, 1570 { "glTexCoord1d", 10, _gloffset_TexCoord1d }, 1571 { "glTexCoord1dv", 10, _gloffset_TexCoord1dv }, 1572 { "glTexCoord1f", 10, _gloffset_TexCoord1f }, 1573 { "glTexCoord1fv", 10, _gloffset_TexCoord1fv }, 1574 { "glTexCoord1i", 10, _gloffset_TexCoord1i }, 1575 { "glTexCoord1iv", 10, _gloffset_TexCoord1iv }, 1576 { "glTexCoord1s", 10, _gloffset_TexCoord1s }, 1577 { "glTexCoord1sv", 10, _gloffset_TexCoord1sv }, 1578 { "glTexCoord2d", 10, _gloffset_TexCoord2d }, 1579 { "glTexCoord2dv", 10, _gloffset_TexCoord2dv }, 1580 { "glTexCoord2f", 10, _gloffset_TexCoord2f }, 1581 { "glTexCoord2fv", 10, _gloffset_TexCoord2fv }, 1582 { "glTexCoord2i", 10, _gloffset_TexCoord2i }, 1583 { "glTexCoord2iv", 10, _gloffset_TexCoord2iv }, 1584 { "glTexCoord2s", 10, _gloffset_TexCoord2s }, 1585 { "glTexCoord2sv", 10, _gloffset_TexCoord2sv }, 1586 { "glTexCoord3d", 10, _gloffset_TexCoord3d }, 1587 { "glTexCoord3dv", 10, _gloffset_TexCoord3dv }, 1588 { "glTexCoord3f", 10, _gloffset_TexCoord3f }, 1589 { "glTexCoord3fv", 10, _gloffset_TexCoord3fv }, 1590 { "glTexCoord3i", 10, _gloffset_TexCoord3i }, 1591 { "glTexCoord3iv", 10, _gloffset_TexCoord3iv }, 1592 { "glTexCoord3s", 10, _gloffset_TexCoord3s }, 1593 { "glTexCoord3sv", 10, _gloffset_TexCoord3sv }, 1594 { "glTexCoord4d", 10, _gloffset_TexCoord4d }, 1595 { "glTexCoord4dv", 10, _gloffset_TexCoord4dv }, 1596 { "glTexCoord4f", 10, _gloffset_TexCoord4f }, 1597 { "glTexCoord4fv", 10, _gloffset_TexCoord4fv }, 1598 { "glTexCoord4i", 10, _gloffset_TexCoord4i }, 1599 { "glTexCoord4iv", 10, _gloffset_TexCoord4iv }, 1600 { "glTexCoord4s", 10, _gloffset_TexCoord4s }, 1601 { "glTexCoord4sv", 10, _gloffset_TexCoord4sv }, 1602 { "glVertex2d", 10, _gloffset_Vertex2d }, 1603 { "glVertex2dv", 10, _gloffset_Vertex2dv }, 1604 { "glVertex2f", 10, _gloffset_Vertex2f }, 1605 { "glVertex2fv", 10, _gloffset_Vertex2fv }, 1606 { "glVertex2i", 10, _gloffset_Vertex2i }, 1607 { "glVertex2iv", 10, _gloffset_Vertex2iv }, 1608 { "glVertex2s", 10, _gloffset_Vertex2s }, 1609 { "glVertex2sv", 10, _gloffset_Vertex2sv }, 1610 { "glVertex3d", 10, _gloffset_Vertex3d }, 1611 { "glVertex3dv", 10, _gloffset_Vertex3dv }, 1612 { "glVertex3f", 10, _gloffset_Vertex3f }, 1613 { "glVertex3fv", 10, _gloffset_Vertex3fv }, 1614 { "glVertex3i", 10, _gloffset_Vertex3i }, 1615 { "glVertex3iv", 10, _gloffset_Vertex3iv }, 1616 { "glVertex3s", 10, _gloffset_Vertex3s }, 1617 { "glVertex3sv", 10, _gloffset_Vertex3sv }, 1618 { "glVertex4d", 10, _gloffset_Vertex4d }, 1619 { "glVertex4dv", 10, _gloffset_Vertex4dv }, 1620 { "glVertex4f", 10, _gloffset_Vertex4f }, 1621 { "glVertex4fv", 10, _gloffset_Vertex4fv }, 1622 { "glVertex4i", 10, _gloffset_Vertex4i }, 1623 { "glVertex4iv", 10, _gloffset_Vertex4iv }, 1624 { "glVertex4s", 10, _gloffset_Vertex4s }, 1625 { "glVertex4sv", 10, _gloffset_Vertex4sv }, 1626 { "glClipPlane", 10, _gloffset_ClipPlane }, 1627 { "glColorMaterial", 10, _gloffset_ColorMaterial }, 1628 { "glFogf", 10, _gloffset_Fogf }, 1629 { "glFogfv", 10, _gloffset_Fogfv }, 1630 { "glFogi", 10, _gloffset_Fogi }, 1631 { "glFogiv", 10, _gloffset_Fogiv }, 1632 { "glLightf", 10, _gloffset_Lightf }, 1633 { "glLightfv", 10, _gloffset_Lightfv }, 1634 { "glLighti", 10, _gloffset_Lighti }, 1635 { "glLightiv", 10, _gloffset_Lightiv }, 1636 { "glLightModelf", 10, _gloffset_LightModelf }, 1637 { "glLightModelfv", 10, _gloffset_LightModelfv }, 1638 { "glLightModeli", 10, _gloffset_LightModeli }, 1639 { "glLightModeliv", 10, _gloffset_LightModeliv }, 1640 { "glLineStipple", 10, _gloffset_LineStipple }, 1641 { "glMaterialf", 10, _gloffset_Materialf }, 1642 { "glMaterialfv", 10, _gloffset_Materialfv }, 1643 { "glMateriali", 10, _gloffset_Materiali }, 1644 { "glMaterialiv", 10, _gloffset_Materialiv }, 1645 { "glPolygonStipple", 10, _gloffset_PolygonStipple }, 1646 { "glShadeModel", 10, _gloffset_ShadeModel }, 1647 { "glTexEnvf", 10, _gloffset_TexEnvf }, 1648 { "glTexEnvfv", 10, _gloffset_TexEnvfv }, 1649 { "glTexEnvi", 10, _gloffset_TexEnvi }, 1650 { "glTexEnviv", 10, _gloffset_TexEnviv }, 1651 { "glTexGend", 10, _gloffset_TexGend }, 1652 { "glTexGendv", 10, _gloffset_TexGendv }, 1653 { "glTexGenf", 10, _gloffset_TexGenf }, 1654 { "glTexGenfv", 10, _gloffset_TexGenfv }, 1655 { "glTexGeni", 10, _gloffset_TexGeni }, 1656 { "glTexGeniv", 10, _gloffset_TexGeniv }, 1657 { "glFeedbackBuffer", 10, _gloffset_FeedbackBuffer }, 1658 { "glSelectBuffer", 10, _gloffset_SelectBuffer }, 1659 { "glRenderMode", 10, _gloffset_RenderMode }, 1660 { "glInitNames", 10, _gloffset_InitNames }, 1661 { "glLoadName", 10, _gloffset_LoadName }, 1662 { "glPassThrough", 10, _gloffset_PassThrough }, 1663 { "glPopName", 10, _gloffset_PopName }, 1664 { "glPushName", 10, _gloffset_PushName }, 1665 { "glClearAccum", 10, _gloffset_ClearAccum }, 1666 { "glClearIndex", 10, _gloffset_ClearIndex }, 1667 { "glIndexMask", 10, _gloffset_IndexMask }, 1668 { "glAccum", 10, _gloffset_Accum }, 1669 { "glPopAttrib", 10, _gloffset_PopAttrib }, 1670 { "glPushAttrib", 10, _gloffset_PushAttrib }, 1671 { "glMap1d", 10, _gloffset_Map1d }, 1672 { "glMap1f", 10, _gloffset_Map1f }, 1673 { "glMap2d", 10, _gloffset_Map2d }, 1674 { "glMap2f", 10, _gloffset_Map2f }, 1675 { "glMapGrid1d", 10, _gloffset_MapGrid1d }, 1676 { "glMapGrid1f", 10, _gloffset_MapGrid1f }, 1677 { "glMapGrid2d", 10, _gloffset_MapGrid2d }, 1678 { "glMapGrid2f", 10, _gloffset_MapGrid2f }, 1679 { "glEvalCoord1d", 10, _gloffset_EvalCoord1d }, 1680 { "glEvalCoord1dv", 10, _gloffset_EvalCoord1dv }, 1681 { "glEvalCoord1f", 10, _gloffset_EvalCoord1f }, 1682 { "glEvalCoord1fv", 10, _gloffset_EvalCoord1fv }, 1683 { "glEvalCoord2d", 10, _gloffset_EvalCoord2d }, 1684 { "glEvalCoord2dv", 10, _gloffset_EvalCoord2dv }, 1685 { "glEvalCoord2f", 10, _gloffset_EvalCoord2f }, 1686 { "glEvalCoord2fv", 10, _gloffset_EvalCoord2fv }, 1687 { "glEvalMesh1", 10, _gloffset_EvalMesh1 }, 1688 { "glEvalPoint1", 10, _gloffset_EvalPoint1 }, 1689 { "glEvalMesh2", 10, _gloffset_EvalMesh2 }, 1690 { "glEvalPoint2", 10, _gloffset_EvalPoint2 }, 1691 { "glAlphaFunc", 10, _gloffset_AlphaFunc }, 1692 { "glPixelZoom", 10, _gloffset_PixelZoom }, 1693 { "glPixelTransferf", 10, _gloffset_PixelTransferf }, 1694 { "glPixelTransferi", 10, _gloffset_PixelTransferi }, 1695 { "glPixelMapfv", 10, _gloffset_PixelMapfv }, 1696 { "glPixelMapuiv", 10, _gloffset_PixelMapuiv }, 1697 { "glPixelMapusv", 10, _gloffset_PixelMapusv }, 1698 { "glCopyPixels", 10, _gloffset_CopyPixels }, 1699 { "glDrawPixels", 10, _gloffset_DrawPixels }, 1700 { "glGetClipPlane", 10, _gloffset_GetClipPlane }, 1701 { "glGetLightfv", 10, _gloffset_GetLightfv }, 1702 { "glGetLightiv", 10, _gloffset_GetLightiv }, 1703 { "glGetMapdv", 10, _gloffset_GetMapdv }, 1704 { "glGetMapfv", 10, _gloffset_GetMapfv }, 1705 { "glGetMapiv", 10, _gloffset_GetMapiv }, 1706 { "glGetMaterialfv", 10, _gloffset_GetMaterialfv }, 1707 { "glGetMaterialiv", 10, _gloffset_GetMaterialiv }, 1708 { "glGetPixelMapfv", 10, _gloffset_GetPixelMapfv }, 1709 { "glGetPixelMapuiv", 10, _gloffset_GetPixelMapuiv }, 1710 { "glGetPixelMapusv", 10, _gloffset_GetPixelMapusv }, 1711 { "glGetPolygonStipple", 10, _gloffset_GetPolygonStipple }, 1712 { "glGetTexEnvfv", 10, _gloffset_GetTexEnvfv }, 1713 { "glGetTexEnviv", 10, _gloffset_GetTexEnviv }, 1714 { "glGetTexGendv", 10, _gloffset_GetTexGendv }, 1715 { "glGetTexGenfv", 10, _gloffset_GetTexGenfv }, 1716 { "glGetTexGeniv", 10, _gloffset_GetTexGeniv }, 1717 { "glIsList", 10, _gloffset_IsList }, 1718 { "glFrustum", 10, _gloffset_Frustum }, 1719 { "glLoadIdentity", 10, _gloffset_LoadIdentity }, 1720 { "glLoadMatrixf", 10, _gloffset_LoadMatrixf }, 1721 { "glLoadMatrixd", 10, _gloffset_LoadMatrixd }, 1722 { "glMatrixMode", 10, _gloffset_MatrixMode }, 1723 { "glMultMatrixf", 10, _gloffset_MultMatrixf }, 1724 { "glMultMatrixd", 10, _gloffset_MultMatrixd }, 1725 { "glOrtho", 10, _gloffset_Ortho }, 1726 { "glPopMatrix", 10, _gloffset_PopMatrix }, 1727 { "glPushMatrix", 10, _gloffset_PushMatrix }, 1728 { "glRotated", 10, _gloffset_Rotated }, 1729 { "glRotatef", 10, _gloffset_Rotatef }, 1730 { "glScaled", 10, _gloffset_Scaled }, 1731 { "glScalef", 10, _gloffset_Scalef }, 1732 { "glTranslated", 10, _gloffset_Translated }, 1733 { "glTranslatef", 10, _gloffset_Translatef }, 1734 { "glArrayElement", 10, _gloffset_ArrayElement }, 1735 { "glColorPointer", 10, _gloffset_ColorPointer }, 1736 { "glDisableClientState", 10, _gloffset_DisableClientState }, 1737 { "glEdgeFlagPointer", 10, _gloffset_EdgeFlagPointer }, 1738 { "glEnableClientState", 10, _gloffset_EnableClientState }, 1739 { "glIndexPointer", 10, _gloffset_IndexPointer }, 1740 { "glInterleavedArrays", 10, _gloffset_InterleavedArrays }, 1741 { "glNormalPointer", 10, _gloffset_NormalPointer }, 1742 { "glTexCoordPointer", 10, _gloffset_TexCoordPointer }, 1743 { "glVertexPointer", 10, _gloffset_VertexPointer }, 1744 { "glAreTexturesResident", 10, _gloffset_AreTexturesResident }, 1745 { "glPrioritizeTextures", 10, _gloffset_PrioritizeTextures }, 1746 { "glIndexub", 10, _gloffset_Indexub }, 1747 { "glIndexubv", 10, _gloffset_Indexubv }, 1748 { "glPopClientAttrib", 10, _gloffset_PopClientAttrib }, 1749 { "glPushClientAttrib", 10, _gloffset_PushClientAttrib }, 1750 { "glColorTable", 10, _gloffset_ColorTable }, 1751 { "glColorTableParameterfv", 10, _gloffset_ColorTableParameterfv }, 1752 { "glColorTableParameteriv", 10, _gloffset_ColorTableParameteriv }, 1753 { "glCopyColorTable", 10, _gloffset_CopyColorTable }, 1754 { "glGetColorTable", 10, _gloffset_GetColorTable }, 1755 { "glGetColorTableParameterfv", 10, _gloffset_GetColorTableParameterfv }, 1756 { "glGetColorTableParameteriv", 10, _gloffset_GetColorTableParameteriv }, 1757 { "glColorSubTable", 10, _gloffset_ColorSubTable }, 1758 { "glCopyColorSubTable", 10, _gloffset_CopyColorSubTable }, 1759 { "glConvolutionFilter1D", 10, _gloffset_ConvolutionFilter1D }, 1760 { "glConvolutionFilter2D", 10, _gloffset_ConvolutionFilter2D }, 1761 { "glConvolutionParameterf", 10, _gloffset_ConvolutionParameterf }, 1762 { "glConvolutionParameterfv", 10, _gloffset_ConvolutionParameterfv }, 1763 { "glConvolutionParameteri", 10, _gloffset_ConvolutionParameteri }, 1764 { "glConvolutionParameteriv", 10, _gloffset_ConvolutionParameteriv }, 1765 { "glCopyConvolutionFilter1D", 10, _gloffset_CopyConvolutionFilter1D }, 1766 { "glCopyConvolutionFilter2D", 10, _gloffset_CopyConvolutionFilter2D }, 1767 { "glGetConvolutionFilter", 10, _gloffset_GetConvolutionFilter }, 1768 { "glGetConvolutionParameterfv", 10, _gloffset_GetConvolutionParameterfv }, 1769 { "glGetConvolutionParameteriv", 10, _gloffset_GetConvolutionParameteriv }, 1770 { "glGetSeparableFilter", 10, _gloffset_GetSeparableFilter }, 1771 { "glSeparableFilter2D", 10, _gloffset_SeparableFilter2D }, 1772 { "glGetHistogram", 10, _gloffset_GetHistogram }, 1773 { "glGetHistogramParameterfv", 10, _gloffset_GetHistogramParameterfv }, 1774 { "glGetHistogramParameteriv", 10, _gloffset_GetHistogramParameteriv }, 1775 { "glGetMinmax", 10, _gloffset_GetMinmax }, 1776 { "glGetMinmaxParameterfv", 10, _gloffset_GetMinmaxParameterfv }, 1777 { "glGetMinmaxParameteriv", 10, _gloffset_GetMinmaxParameteriv }, 1778 { "glHistogram", 10, _gloffset_Histogram }, 1779 { "glMinmax", 10, _gloffset_Minmax }, 1780 { "glResetHistogram", 10, _gloffset_ResetHistogram }, 1781 { "glResetMinmax", 10, _gloffset_ResetMinmax }, 1782 { "glClientActiveTexture", 10, _gloffset_ClientActiveTexture }, 1783 { "glMultiTexCoord1d", 10, _gloffset_MultiTexCoord1d }, 1784 { "glMultiTexCoord1dv", 10, _gloffset_MultiTexCoord1dv }, 1785 { "glMultiTexCoord1f", 10, _gloffset_MultiTexCoord1fARB }, 1786 { "glMultiTexCoord1fv", 10, _gloffset_MultiTexCoord1fvARB }, 1787 { "glMultiTexCoord1i", 10, _gloffset_MultiTexCoord1i }, 1788 { "glMultiTexCoord1iv", 10, _gloffset_MultiTexCoord1iv }, 1789 { "glMultiTexCoord1s", 10, _gloffset_MultiTexCoord1s }, 1790 { "glMultiTexCoord1sv", 10, _gloffset_MultiTexCoord1sv }, 1791 { "glMultiTexCoord2d", 10, _gloffset_MultiTexCoord2d }, 1792 { "glMultiTexCoord2dv", 10, _gloffset_MultiTexCoord2dv }, 1793 { "glMultiTexCoord2f", 10, _gloffset_MultiTexCoord2fARB }, 1794 { "glMultiTexCoord2fv", 10, _gloffset_MultiTexCoord2fvARB }, 1795 { "glMultiTexCoord2i", 10, _gloffset_MultiTexCoord2i }, 1796 { "glMultiTexCoord2iv", 10, _gloffset_MultiTexCoord2iv }, 1797 { "glMultiTexCoord2s", 10, _gloffset_MultiTexCoord2s }, 1798 { "glMultiTexCoord2sv", 10, _gloffset_MultiTexCoord2sv }, 1799 { "glMultiTexCoord3d", 10, _gloffset_MultiTexCoord3d }, 1800 { "glMultiTexCoord3dv", 10, _gloffset_MultiTexCoord3dv }, 1801 { "glMultiTexCoord3f", 10, _gloffset_MultiTexCoord3fARB }, 1802 { "glMultiTexCoord3fv", 10, _gloffset_MultiTexCoord3fvARB }, 1803 { "glMultiTexCoord3i", 10, _gloffset_MultiTexCoord3i }, 1804 { "glMultiTexCoord3iv", 10, _gloffset_MultiTexCoord3iv }, 1805 { "glMultiTexCoord3s", 10, _gloffset_MultiTexCoord3s }, 1806 { "glMultiTexCoord3sv", 10, _gloffset_MultiTexCoord3sv }, 1807 { "glMultiTexCoord4d", 10, _gloffset_MultiTexCoord4d }, 1808 { "glMultiTexCoord4dv", 10, _gloffset_MultiTexCoord4dv }, 1809 { "glMultiTexCoord4f", 10, _gloffset_MultiTexCoord4fARB }, 1810 { "glMultiTexCoord4fv", 10, _gloffset_MultiTexCoord4fvARB }, 1811 { "glMultiTexCoord4i", 10, _gloffset_MultiTexCoord4i }, 1812 { "glMultiTexCoord4iv", 10, _gloffset_MultiTexCoord4iv }, 1813 { "glMultiTexCoord4s", 10, _gloffset_MultiTexCoord4s }, 1814 { "glMultiTexCoord4sv", 10, _gloffset_MultiTexCoord4sv }, 1815 { "glLoadTransposeMatrixf", 10, -1 }, 1816 { "glLoadTransposeMatrixd", 10, -1 }, 1817 { "glMultTransposeMatrixf", 10, -1 }, 1818 { "glMultTransposeMatrixd", 10, -1 }, 1819 { "glFogCoordf", 10, -1 }, 1820 { "glFogCoordfv", 10, -1 }, 1821 { "glFogCoordd", 10, -1 }, 1822 { "glFogCoorddv", 10, -1 }, 1823 { "glFogCoordPointer", 10, -1 }, 1824 { "glSecondaryColor3b", 10, -1 }, 1825 { "glSecondaryColor3bv", 10, -1 }, 1826 { "glSecondaryColor3d", 10, -1 }, 1827 { "glSecondaryColor3dv", 10, -1 }, 1828 { "glSecondaryColor3f", 10, -1 }, 1829 { "glSecondaryColor3fv", 10, -1 }, 1830 { "glSecondaryColor3i", 10, -1 }, 1831 { "glSecondaryColor3iv", 10, -1 }, 1832 { "glSecondaryColor3s", 10, -1 }, 1833 { "glSecondaryColor3sv", 10, -1 }, 1834 { "glSecondaryColor3ub", 10, -1 }, 1835 { "glSecondaryColor3ubv", 10, -1 }, 1836 { "glSecondaryColor3ui", 10, -1 }, 1837 { "glSecondaryColor3uiv", 10, -1 }, 1838 { "glSecondaryColor3us", 10, -1 }, 1839 { "glSecondaryColor3usv", 10, -1 }, 1840 { "glSecondaryColorPointer", 10, -1 }, 1841 { "glWindowPos2d", 10, -1 }, 1842 { "glWindowPos2dv", 10, -1 }, 1843 { "glWindowPos2f", 10, -1 }, 1844 { "glWindowPos2fv", 10, -1 }, 1845 { "glWindowPos2i", 10, -1 }, 1846 { "glWindowPos2iv", 10, -1 }, 1847 { "glWindowPos2s", 10, -1 }, 1848 { "glWindowPos2sv", 10, -1 }, 1849 { "glWindowPos3d", 10, -1 }, 1850 { "glWindowPos3dv", 10, -1 }, 1851 { "glWindowPos3f", 10, -1 }, 1852 { "glWindowPos3fv", 10, -1 }, 1853 { "glWindowPos3i", 10, -1 }, 1854 { "glWindowPos3iv", 10, -1 }, 1855 { "glWindowPos3s", 10, -1 }, 1856 { "glWindowPos3sv", 10, -1 }, 1857 { "glProgramStringARB", 10, -1 }, 1858 { "glProgramEnvParameter4dARB", 10, -1 }, 1859 { "glProgramEnvParameter4dvARB", 10, -1 }, 1860 { "glProgramEnvParameter4fARB", 10, -1 }, 1861 { "glProgramEnvParameter4fvARB", 10, -1 }, 1862 { "glProgramLocalParameter4dARB", 10, -1 }, 1863 { "glProgramLocalParameter4dvARB", 10, -1 }, 1864 { "glProgramLocalParameter4fARB", 10, -1 }, 1865 { "glProgramLocalParameter4fvARB", 10, -1 }, 1866 { "glGetProgramEnvParameterdvARB", 10, -1 }, 1867 { "glGetProgramEnvParameterfvARB", 10, -1 }, 1868 { "glGetProgramLocalParameterdvARB", 10, -1 }, 1869 { "glGetProgramLocalParameterfvARB", 10, -1 }, 1870 { "glGetProgramivARB", 10, -1 }, 1871 { "glGetProgramStringARB", 10, -1 }, 1872 { "glColorPointerEXT", 10, -1 }, 1873 { "glEdgeFlagPointerEXT", 10, -1 }, 1874 { "glIndexPointerEXT", 10, -1 }, 1875 { "glNormalPointerEXT", 10, -1 }, 1876 { "glTexCoordPointerEXT", 10, -1 }, 1877 { "glVertexPointerEXT", 10, -1 }, 1878 { "glLockArraysEXT", 10, -1 }, 1879 { "glUnlockArraysEXT", 10, -1 }, 1880 { "glWindowPos4dMESA", 10, -1 }, 1881 { "glWindowPos4dvMESA", 10, -1 }, 1882 { "glWindowPos4fMESA", 10, -1 }, 1883 { "glWindowPos4fvMESA", 10, -1 }, 1884 { "glWindowPos4iMESA", 10, -1 }, 1885 { "glWindowPos4ivMESA", 10, -1 }, 1886 { "glWindowPos4sMESA", 10, -1 }, 1887 { "glWindowPos4svMESA", 10, -1 }, 1888 { "glBindProgramNV", 10, -1 }, 1889 { "glDeleteProgramsNV", 10, -1 }, 1890 { "glGenProgramsNV", 10, -1 }, 1891 { "glIsProgramNV", 10, -1 }, 1892 { "glVertexAttrib1sNV", 10, -1 }, 1893 { "glVertexAttrib1svNV", 10, -1 }, 1894 { "glVertexAttrib2sNV", 10, -1 }, 1895 { "glVertexAttrib2svNV", 10, -1 }, 1896 { "glVertexAttrib3sNV", 10, -1 }, 1897 { "glVertexAttrib3svNV", 10, -1 }, 1898 { "glVertexAttrib4sNV", 10, -1 }, 1899 { "glVertexAttrib4svNV", 10, -1 }, 1900 { "glVertexAttrib1fNV", 10, -1 }, 1901 { "glVertexAttrib1fvNV", 10, -1 }, 1902 { "glVertexAttrib2fNV", 10, -1 }, 1903 { "glVertexAttrib2fvNV", 10, -1 }, 1904 { "glVertexAttrib3fNV", 10, -1 }, 1905 { "glVertexAttrib3fvNV", 10, -1 }, 1906 { "glVertexAttrib4fNV", 10, -1 }, 1907 { "glVertexAttrib4fvNV", 10, -1 }, 1908 { "glVertexAttrib1dNV", 10, -1 }, 1909 { "glVertexAttrib1dvNV", 10, -1 }, 1910 { "glVertexAttrib2dNV", 10, -1 }, 1911 { "glVertexAttrib2dvNV", 10, -1 }, 1912 { "glVertexAttrib3dNV", 10, -1 }, 1913 { "glVertexAttrib3dvNV", 10, -1 }, 1914 { "glVertexAttrib4dNV", 10, -1 }, 1915 { "glVertexAttrib4dvNV", 10, -1 }, 1916 { "glVertexAttrib4ubNV", 10, -1 }, 1917 { "glVertexAttrib4ubvNV", 10, -1 }, 1918 { "glVertexAttribs1svNV", 10, -1 }, 1919 { "glVertexAttribs2svNV", 10, -1 }, 1920 { "glVertexAttribs3svNV", 10, -1 }, 1921 { "glVertexAttribs4svNV", 10, -1 }, 1922 { "glVertexAttribs1fvNV", 10, -1 }, 1923 { "glVertexAttribs2fvNV", 10, -1 }, 1924 { "glVertexAttribs3fvNV", 10, -1 }, 1925 { "glVertexAttribs4fvNV", 10, -1 }, 1926 { "glVertexAttribs1dvNV", 10, -1 }, 1927 { "glVertexAttribs2dvNV", 10, -1 }, 1928 { "glVertexAttribs3dvNV", 10, -1 }, 1929 { "glVertexAttribs4dvNV", 10, -1 }, 1930 { "glVertexAttribs4ubvNV", 10, -1 }, 1931 { "glGenFragmentShadersATI", 10, -1 }, 1932 { "glBindFragmentShaderATI", 10, -1 }, 1933 { "glDeleteFragmentShaderATI", 10, -1 }, 1934 { "glBeginFragmentShaderATI", 10, -1 }, 1935 { "glEndFragmentShaderATI", 10, -1 }, 1936 { "glPassTexCoordATI", 10, -1 }, 1937 { "glSampleMapATI", 10, -1 }, 1938 { "glColorFragmentOp1ATI", 10, -1 }, 1939 { "glColorFragmentOp2ATI", 10, -1 }, 1940 { "glColorFragmentOp3ATI", 10, -1 }, 1941 { "glAlphaFragmentOp1ATI", 10, -1 }, 1942 { "glAlphaFragmentOp2ATI", 10, -1 }, 1943 { "glAlphaFragmentOp3ATI", 10, -1 }, 1944 { "glSetFragmentShaderConstantATI", 10, -1 }, 1945 { "glActiveStencilFaceEXT", 10, -1 }, 1946 { "glStencilFuncSeparateATI", 10, -1 }, 1947 { "glProgramEnvParameters4fvEXT", 10, -1 }, 1948 { "glProgramLocalParameters4fvEXT", 10, -1 }, 1949 { "glPrimitiveRestartNV", 10, -1 }, 1950 1951 /* GL_NV_half_float */ 1952 { "glVertex2hNV", 13, -1 }, 1953 { "glVertex2hvNV", 13, -1 }, 1954 { "glVertex3hNV", 13, -1 }, 1955 { "glVertex3hvNV", 13, -1 }, 1956 { "glVertex4hNV", 13, -1 }, 1957 { "glVertex4hvNV", 13, -1 }, 1958 { "glNormal3hNV", 13, -1 }, 1959 { "glNormal3hvNV", 13, -1 }, 1960 { "glColor3hNV", 13, -1 }, 1961 { "glColor3hvNV", 13, -1 }, 1962 { "glColor4hNV", 13, -1 }, 1963 { "glColor4hvNV", 13, -1 }, 1964 { "glTexCoord1hNV", 13, -1 }, 1965 { "glTexCoord1hvNV", 13, -1 }, 1966 { "glTexCoord2hNV", 13, -1 }, 1967 { "glTexCoord2hvNV", 13, -1 }, 1968 { "glTexCoord3hNV", 13, -1 }, 1969 { "glTexCoord3hvNV", 13, -1 }, 1970 { "glTexCoord4hNV", 13, -1 }, 1971 { "glTexCoord4hvNV", 13, -1 }, 1972 { "glMultiTexCoord1hNV", 13, -1 }, 1973 { "glMultiTexCoord1hvNV", 13, -1 }, 1974 { "glMultiTexCoord2hNV", 13, -1 }, 1975 { "glMultiTexCoord2hvNV", 13, -1 }, 1976 { "glMultiTexCoord3hNV", 13, -1 }, 1977 { "glMultiTexCoord3hvNV", 13, -1 }, 1978 { "glMultiTexCoord4hNV", 13, -1 }, 1979 { "glMultiTexCoord4hvNV", 13, -1 }, 1980 { "glFogCoordhNV", 13, -1 }, 1981 { "glFogCoordhvNV", 13, -1 }, 1982 { "glSecondaryColor3hNV", 13, -1 }, 1983 { "glSecondaryColor3hvNV", 13, -1 }, 1984 { "glVertexAttrib1hNV", 13, -1 }, 1985 { "glVertexAttrib1hvNV", 13, -1 }, 1986 { "glVertexAttrib2hNV", 13, -1 }, 1987 { "glVertexAttrib2hvNV", 13, -1 }, 1988 { "glVertexAttrib3hNV", 13, -1 }, 1989 { "glVertexAttrib3hvNV", 13, -1 }, 1990 { "glVertexAttrib4hNV", 13, -1 }, 1991 { "glVertexAttrib4hvNV", 13, -1 }, 1992 { "glVertexAttribs1hvNV", 13, -1 }, 1993 { "glVertexAttribs2hvNV", 13, -1 }, 1994 { "glVertexAttribs3hvNV", 13, -1 }, 1995 { "glVertexAttribs4hvNV", 13, -1 }, 1996 1997 { NULL, 0, -1 } 1998}; 1999 2000const struct function gl_core_functions_possible[] = { 2001 /* GL_ARB_gl_spirv */ 2002 { "glSpecializeShaderARB", 45, -1 }, 2003 2004 { NULL, 0, -1 } 2005}; 2006 2007const struct function gles11_functions_possible[] = { 2008 { "glActiveTexture", 11, _gloffset_ActiveTexture }, 2009 { "glAlphaFunc", 11, _gloffset_AlphaFunc }, 2010 { "glAlphaFuncx", 11, -1 }, 2011 { "glBindBuffer", 11, -1 }, 2012 { "glBindFramebufferOES", 11, -1 }, 2013 { "glBindRenderbufferOES", 11, -1 }, 2014 { "glBindTexture", 11, _gloffset_BindTexture }, 2015 { "glBlendEquationOES", 11, _gloffset_BlendEquation }, 2016 { "glBlendEquationSeparateOES", 11, -1 }, 2017 { "glBlendFunc", 11, _gloffset_BlendFunc }, 2018 { "glBlendFuncSeparateOES", 11, -1 }, 2019 { "glBufferData", 11, -1 }, 2020 { "glBufferSubData", 11, -1 }, 2021 { "glCheckFramebufferStatusOES", 11, -1 }, 2022 { "glClear", 11, _gloffset_Clear }, 2023 { "glClearColor", 11, _gloffset_ClearColor }, 2024 { "glClearColorx", 11, -1 }, 2025 { "glClearDepthf", 11, -1 }, 2026 { "glClearDepthx", 11, -1 }, 2027 { "glClearStencil", 11, _gloffset_ClearStencil }, 2028 { "glClientActiveTexture", 11, _gloffset_ClientActiveTexture }, 2029 { "glClipPlanef", 11, -1 }, 2030 { "glClipPlanex", 11, -1 }, 2031 { "glColor4f", 11, _gloffset_Color4f }, 2032 { "glColor4ub", 11, _gloffset_Color4ub }, 2033 { "glColor4x", 11, -1 }, 2034 { "glColorMask", 11, _gloffset_ColorMask }, 2035 { "glColorPointer", 11, _gloffset_ColorPointer }, 2036 { "glCompressedTexImage2D", 11, -1 }, 2037 { "glCompressedTexSubImage2D", 11, -1 }, 2038 { "glCopyTexImage2D", 11, _gloffset_CopyTexImage2D }, 2039 { "glCopyTexSubImage2D", 11, _gloffset_CopyTexSubImage2D }, 2040 { "glCullFace", 11, _gloffset_CullFace }, 2041 { "glDeleteBuffers", 11, -1 }, 2042 { "glDeleteFramebuffersOES", 11, -1 }, 2043 { "glDeleteRenderbuffersOES", 11, -1 }, 2044 { "glDeleteTextures", 11, _gloffset_DeleteTextures }, 2045 { "glDepthFunc", 11, _gloffset_DepthFunc }, 2046 { "glDepthMask", 11, _gloffset_DepthMask }, 2047 { "glDepthRangef", 11, -1 }, 2048 { "glDepthRangex", 11, -1 }, 2049 { "glDisable", 11, _gloffset_Disable }, 2050 { "glDiscardFramebufferEXT", 11, -1 }, 2051 { "glDisableClientState", 11, _gloffset_DisableClientState }, 2052 { "glDrawArrays", 11, _gloffset_DrawArrays }, 2053 { "glDrawElements", 11, _gloffset_DrawElements }, 2054 { "glDrawTexfOES", 11, -1 }, 2055 { "glDrawTexfvOES", 11, -1 }, 2056 { "glDrawTexiOES", 11, -1 }, 2057 { "glDrawTexivOES", 11, -1 }, 2058 { "glDrawTexsOES", 11, -1 }, 2059 { "glDrawTexsvOES", 11, -1 }, 2060 { "glDrawTexxOES", 11, -1 }, 2061 { "glDrawTexxvOES", 11, -1 }, 2062 { "glEGLImageTargetRenderbufferStorageOES", 11, -1 }, 2063 { "glEGLImageTargetTexture2DOES", 11, -1 }, 2064 { "glEnable", 11, _gloffset_Enable }, 2065 { "glEnableClientState", 11, _gloffset_EnableClientState }, 2066 { "glFinish", 11, _gloffset_Finish }, 2067 { "glFlush", 11, _gloffset_Flush }, 2068 { "glFlushMappedBufferRangeEXT", 11, -1 }, 2069 { "glFogf", 11, _gloffset_Fogf }, 2070 { "glFogfv", 11, _gloffset_Fogfv }, 2071 { "glFogx", 11, -1 }, 2072 { "glFogxv", 11, -1 }, 2073 { "glFramebufferRenderbufferOES", 11, -1 }, 2074 { "glFramebufferTexture2DOES", 11, -1 }, 2075 { "glFrontFace", 11, _gloffset_FrontFace }, 2076 { "glFrustumf", 11, -1 }, 2077 { "glFrustumx", 11, -1 }, 2078 { "glGenBuffers", 11, -1 }, 2079 { "glGenFramebuffersOES", 11, -1 }, 2080 { "glGenRenderbuffersOES", 11, -1 }, 2081 { "glGenTextures", 11, _gloffset_GenTextures }, 2082 { "glGenerateMipmapOES", 11, -1 }, 2083 { "glGetBooleanv", 11, _gloffset_GetBooleanv }, 2084 { "glGetBufferParameteriv", 11, -1 }, 2085 { "glGetBufferPointervOES", 11, -1 }, 2086 { "glGetClipPlanef", 11, -1 }, 2087 { "glGetClipPlanex", 11, -1 }, 2088 { "glGetError", 11, _gloffset_GetError }, 2089 { "glGetFixedv", 11, -1 }, 2090 { "glGetFloatv", 11, _gloffset_GetFloatv }, 2091 { "glGetFramebufferAttachmentParameterivOES", 11, -1 }, 2092 { "glGetIntegerv", 11, _gloffset_GetIntegerv }, 2093 { "glGetLightfv", 11, _gloffset_GetLightfv }, 2094 { "glGetLightxv", 11, -1 }, 2095 { "glGetMaterialfv", 11, _gloffset_GetMaterialfv }, 2096 { "glGetMaterialxv", 11, -1 }, 2097 // We check for the aliased -KHR version in GLES 1.1 2098// { "glGetPointerv", 11, _gloffset_GetPointerv }, 2099 { "glGetRenderbufferParameterivOES", 11, -1 }, 2100 { "glGetString", 11, _gloffset_GetString }, 2101 { "glGetTexEnvfv", 11, _gloffset_GetTexEnvfv }, 2102 { "glGetTexEnviv", 11, _gloffset_GetTexEnviv }, 2103 { "glGetTexEnvxv", 11, -1 }, 2104 { "glGetTexGenfvOES", 11, _gloffset_GetTexGenfv }, 2105 { "glGetTexGenivOES", 11, _gloffset_GetTexGeniv }, 2106 { "glGetTexGenxvOES", 11, -1 }, 2107 { "glGetTexParameterfv", 11, _gloffset_GetTexParameterfv }, 2108 { "glGetTexParameteriv", 11, _gloffset_GetTexParameteriv }, 2109 { "glGetTexParameterxv", 11, -1 }, 2110 { "glHint", 11, _gloffset_Hint }, 2111 { "glIsBuffer", 11, -1 }, 2112 { "glIsEnabled", 11, _gloffset_IsEnabled }, 2113 { "glIsFramebufferOES", 11, -1 }, 2114 { "glIsRenderbufferOES", 11, -1 }, 2115 { "glIsTexture", 11, _gloffset_IsTexture }, 2116 { "glLightModelf", 11, _gloffset_LightModelf }, 2117 { "glLightModelfv", 11, _gloffset_LightModelfv }, 2118 { "glLightModelx", 11, -1 }, 2119 { "glLightModelxv", 11, -1 }, 2120 { "glLightf", 11, _gloffset_Lightf }, 2121 { "glLightfv", 11, _gloffset_Lightfv }, 2122 { "glLightx", 11, -1 }, 2123 { "glLightxv", 11, -1 }, 2124 { "glLineWidth", 11, _gloffset_LineWidth }, 2125 { "glLineWidthx", 11, -1 }, 2126 { "glLoadIdentity", 11, _gloffset_LoadIdentity }, 2127 { "glLoadMatrixf", 11, _gloffset_LoadMatrixf }, 2128 { "glLoadMatrixx", 11, -1 }, 2129 { "glLogicOp", 11, _gloffset_LogicOp }, 2130 { "glMapBufferOES", 11, -1 }, 2131 { "glMapBufferRangeEXT", 11, -1 }, 2132 { "glMaterialf", 11, _gloffset_Materialf }, 2133 { "glMaterialfv", 11, _gloffset_Materialfv }, 2134 { "glMaterialx", 11, -1 }, 2135 { "glMaterialxv", 11, -1 }, 2136 { "glMatrixMode", 11, _gloffset_MatrixMode }, 2137 { "glMultMatrixf", 11, _gloffset_MultMatrixf }, 2138 { "glMultMatrixx", 11, -1 }, 2139 { "glMultiDrawArraysEXT", 11, -1 }, 2140 { "glMultiDrawElementsEXT", 11, -1 }, 2141 { "glMultiTexCoord4f", 11, _gloffset_MultiTexCoord4fARB }, 2142 { "glMultiTexCoord4x", 11, -1 }, 2143 { "glNormal3f", 11, _gloffset_Normal3f }, 2144 { "glNormal3x", 11, -1 }, 2145 { "glNormalPointer", 11, _gloffset_NormalPointer }, 2146 { "glOrthof", 11, -1 }, 2147 { "glOrthox", 11, -1 }, 2148 { "glPixelStorei", 11, _gloffset_PixelStorei }, 2149 { "glPointParameterf", 11, -1 }, 2150 { "glPointParameterfv", 11, -1 }, 2151 { "glPointParameterx", 11, -1 }, 2152 { "glPointParameterxv", 11, -1 }, 2153 { "glPointSize", 11, _gloffset_PointSize }, 2154 { "glPointSizePointerOES", 11, -1 }, 2155 { "glPointSizex", 11, -1 }, 2156 { "glPolygonOffset", 11, _gloffset_PolygonOffset }, 2157 { "glPolygonOffsetx", 11, -1 }, 2158 { "glPopMatrix", 11, _gloffset_PopMatrix }, 2159 { "glPushMatrix", 11, _gloffset_PushMatrix }, 2160 { "glQueryMatrixxOES", 11, -1 }, 2161 { "glReadPixels", 11, _gloffset_ReadPixels }, 2162 { "glRenderbufferStorageOES", 11, -1 }, 2163 { "glRotatef", 11, _gloffset_Rotatef }, 2164 { "glRotatex", 11, -1 }, 2165 { "glSampleCoverage", 11, -1 }, 2166 { "glSampleCoveragex", 11, -1 }, 2167 { "glScalef", 11, _gloffset_Scalef }, 2168 { "glScalex", 11, -1 }, 2169 { "glScissor", 11, _gloffset_Scissor }, 2170 { "glShadeModel", 11, _gloffset_ShadeModel }, 2171 { "glStencilFunc", 11, _gloffset_StencilFunc }, 2172 { "glStencilMask", 11, _gloffset_StencilMask }, 2173 { "glStencilOp", 11, _gloffset_StencilOp }, 2174 { "glTexCoordPointer", 11, _gloffset_TexCoordPointer }, 2175 { "glTexEnvf", 11, _gloffset_TexEnvf }, 2176 { "glTexEnvfv", 11, _gloffset_TexEnvfv }, 2177 { "glTexEnvi", 11, _gloffset_TexEnvi }, 2178 { "glTexEnviv", 11, _gloffset_TexEnviv }, 2179 { "glTexEnvx", 11, -1 }, 2180 { "glTexEnvxv", 11, -1 }, 2181 { "glTexGenfOES", 11, _gloffset_TexGenf }, 2182 { "glTexGenfvOES", 11, _gloffset_TexGenfv }, 2183 { "glTexGeniOES", 11, _gloffset_TexGeni }, 2184 { "glTexGenivOES", 11, _gloffset_TexGeniv }, 2185 { "glTexGenxOES", 11, -1 }, 2186 { "glTexGenxvOES", 11, -1 }, 2187 { "glTexImage2D", 11, _gloffset_TexImage2D }, 2188 { "glTexParameterf", 11, _gloffset_TexParameterf }, 2189 { "glTexParameterfv", 11, _gloffset_TexParameterfv }, 2190 { "glTexParameteri", 11, _gloffset_TexParameteri }, 2191 { "glTexParameteriv", 11, _gloffset_TexParameteriv }, 2192 { "glTexParameterx", 11, -1 }, 2193 { "glTexParameterxv", 11, -1 }, 2194 { "glTexSubImage2D", 11, _gloffset_TexSubImage2D }, 2195 { "glTranslatef", 11, _gloffset_Translatef }, 2196 { "glTranslatex", 11, -1 }, 2197 { "glUnmapBufferOES", 11, -1 }, 2198 { "glVertexPointer", 11, _gloffset_VertexPointer }, 2199 { "glViewport", 11, _gloffset_Viewport }, 2200 2201 /* GL_KHR_debug */ 2202 { "glPushDebugGroupKHR", 11, -1 }, 2203 { "glPopDebugGroupKHR", 11, -1 }, 2204 { "glDebugMessageCallbackKHR", 11, -1 }, 2205 { "glDebugMessageControlKHR", 11, -1 }, 2206 { "glDebugMessageInsertKHR", 11, -1 }, 2207 { "glGetDebugMessageLogKHR", 11, -1 }, 2208 { "glGetObjectLabelKHR", 11, -1 }, 2209 { "glGetObjectPtrLabelKHR", 11, -1 }, 2210 { "glGetPointervKHR", 11, _gloffset_GetPointerv }, 2211 { "glObjectLabelKHR", 11, -1 }, 2212 { "glObjectPtrLabelKHR", 11, -1 }, 2213 2214 /* GL_EXT_polygon_offset_clamp */ 2215 { "glPolygonOffsetClampEXT", 11, -1 }, 2216 2217 /* GL_NV_conservative_raster */ 2218 { "glSubpixelPrecisionBiasNV", 20, -1 }, 2219 2220 /* GL_NV_conservative_raster_dilate */ 2221 { "glConservativeRasterParameterfNV", 20, -1 }, 2222 2223 /* GL_NV_conservative_raster_pre_snap_triangles */ 2224 { "glConservativeRasterParameteriNV", 20, -1 }, 2225 2226 { NULL, 0, -1 } 2227}; 2228 2229const struct function gles2_functions_possible[] = { 2230 { "glActiveTexture", 20, _gloffset_ActiveTexture }, 2231 { "glAttachShader", 20, -1 }, 2232 { "glBindAttribLocation", 20, -1 }, 2233 { "glBindBuffer", 20, -1 }, 2234 { "glBindFramebuffer", 20, -1 }, 2235 { "glBindRenderbuffer", 20, -1 }, 2236 { "glBindTexture", 20, _gloffset_BindTexture }, 2237 { "glBindVertexArrayOES", 20, -1 }, 2238 { "glBlendColor", 20, _gloffset_BlendColor }, 2239 { "glBlendEquation", 20, _gloffset_BlendEquation }, 2240 { "glBlendEquationSeparate", 20, -1 }, 2241 { "glBlendFunc", 20, _gloffset_BlendFunc }, 2242 { "glBlendFuncSeparate", 20, -1 }, 2243 { "glBufferData", 20, -1 }, 2244 { "glBufferSubData", 20, -1 }, 2245 { "glCheckFramebufferStatus", 20, -1 }, 2246 { "glClear", 20, _gloffset_Clear }, 2247 { "glClearColor", 20, _gloffset_ClearColor }, 2248 { "glClearDepthf", 20, -1 }, 2249 { "glClearStencil", 20, _gloffset_ClearStencil }, 2250 { "glColorMask", 20, _gloffset_ColorMask }, 2251 { "glCompileShader", 20, -1 }, 2252 { "glCompressedTexImage2D", 20, -1 }, 2253 { "glCompressedTexImage3DOES", 20, -1 }, 2254 { "glCompressedTexSubImage2D", 20, -1 }, 2255 { "glCompressedTexSubImage3DOES", 20, -1 }, 2256 { "glCopyTexImage2D", 20, _gloffset_CopyTexImage2D }, 2257 { "glCopyTexSubImage2D", 20, _gloffset_CopyTexSubImage2D }, 2258 { "glCopyTexSubImage3DOES", 20, _gloffset_CopyTexSubImage3D }, 2259 { "glCreateProgram", 20, -1 }, 2260 { "glCreateShader", 20, -1 }, 2261 { "glCullFace", 20, _gloffset_CullFace }, 2262 { "glDeleteBuffers", 20, -1 }, 2263 { "glDeleteFramebuffers", 20, -1 }, 2264 { "glDeleteProgram", 20, -1 }, 2265 { "glDeleteRenderbuffers", 20, -1 }, 2266 { "glDeleteShader", 20, -1 }, 2267 { "glDeleteTextures", 20, _gloffset_DeleteTextures }, 2268 { "glDeleteVertexArraysOES", 20, -1 }, 2269 { "glDepthFunc", 20, _gloffset_DepthFunc }, 2270 { "glDepthMask", 20, _gloffset_DepthMask }, 2271 { "glDepthRangef", 20, -1 }, 2272 { "glDetachShader", 20, -1 }, 2273 { "glDisable", 20, _gloffset_Disable }, 2274 { "glDiscardFramebufferEXT", 20, -1 }, 2275 { "glDisableVertexAttribArray", 20, -1 }, 2276 { "glDrawArrays", 20, _gloffset_DrawArrays }, 2277 { "glDrawBuffersNV", 20, -1 }, 2278 { "glDrawElements", 20, _gloffset_DrawElements }, 2279 { "glDrawElementsBaseVertex", 20, -1 }, 2280 { "glEGLImageTargetRenderbufferStorageOES", 20, -1 }, 2281 { "glEGLImageTargetTexture2DOES", 20, -1 }, 2282 { "glEnable", 20, _gloffset_Enable }, 2283 { "glEnableVertexAttribArray", 20, -1 }, 2284 { "glFinish", 20, _gloffset_Finish }, 2285 { "glFlush", 20, _gloffset_Flush }, 2286 { "glFlushMappedBufferRangeEXT", 20, -1 }, 2287 { "glFramebufferRenderbuffer", 20, -1 }, 2288 { "glFramebufferTexture2D", 20, -1 }, 2289 { "glFramebufferTexture3DOES", 20, -1 }, 2290 { "glFrontFace", 20, _gloffset_FrontFace }, 2291 { "glGenBuffers", 20, -1 }, 2292 { "glGenFramebuffers", 20, -1 }, 2293 { "glGenRenderbuffers", 20, -1 }, 2294 { "glGenTextures", 20, _gloffset_GenTextures }, 2295 { "glGenVertexArraysOES", 20, -1 }, 2296 { "glGenerateMipmap", 20, -1 }, 2297 { "glGetActiveAttrib", 20, -1 }, 2298 { "glGetActiveUniform", 20, -1 }, 2299 { "glGetAttachedShaders", 20, -1 }, 2300 { "glGetAttribLocation", 20, -1 }, 2301 { "glGetBooleanv", 20, _gloffset_GetBooleanv }, 2302 { "glGetBufferParameteriv", 20, -1 }, 2303 { "glGetBufferPointervOES", 20, -1 }, 2304 { "glGetError", 20, _gloffset_GetError }, 2305 { "glGetFloatv", 20, _gloffset_GetFloatv }, 2306 { "glGetFramebufferAttachmentParameteriv", 20, -1 }, 2307 { "glGetIntegerv", 20, _gloffset_GetIntegerv }, 2308 { "glGetProgramInfoLog", 20, -1 }, 2309 { "glGetProgramiv", 20, -1 }, 2310 { "glGetRenderbufferParameteriv", 20, -1 }, 2311 { "glGetShaderInfoLog", 20, -1 }, 2312 { "glGetShaderPrecisionFormat", 20, -1 }, 2313 { "glGetShaderSource", 20, -1 }, 2314 { "glGetShaderiv", 20, -1 }, 2315 { "glGetString", 20, _gloffset_GetString }, 2316 { "glGetTexParameterfv", 20, _gloffset_GetTexParameterfv }, 2317 { "glGetTexParameteriv", 20, _gloffset_GetTexParameteriv }, 2318 { "glGetUniformLocation", 20, -1 }, 2319 { "glGetUniformfv", 20, -1 }, 2320 { "glGetUniformiv", 20, -1 }, 2321 { "glGetVertexAttribPointerv", 20, -1 }, 2322 { "glGetVertexAttribfv", 20, -1 }, 2323 { "glGetVertexAttribiv", 20, -1 }, 2324 { "glHint", 20, _gloffset_Hint }, 2325 { "glIsBuffer", 20, -1 }, 2326 { "glIsEnabled", 20, _gloffset_IsEnabled }, 2327 { "glIsFramebuffer", 20, -1 }, 2328 { "glIsProgram", 20, -1 }, 2329 { "glIsRenderbuffer", 20, -1 }, 2330 { "glIsShader", 20, -1 }, 2331 { "glIsTexture", 20, _gloffset_IsTexture }, 2332 { "glIsVertexArrayOES", 20, -1 }, 2333 { "glLineWidth", 20, _gloffset_LineWidth }, 2334 { "glLinkProgram", 20, -1 }, 2335 { "glMapBufferOES", 20, -1 }, 2336 { "glMapBufferRangeEXT", 20, -1 }, 2337 { "glMultiDrawArraysEXT", 20, -1 }, 2338 { "glMultiDrawElementsEXT", 20, -1 }, 2339 { "glMultiDrawElementsBaseVertex", 20, -1 }, 2340 { "glPixelStorei", 20, _gloffset_PixelStorei }, 2341 { "glPolygonOffset", 20, _gloffset_PolygonOffset }, 2342 { "glReadBufferNV", 20, _gloffset_ReadBuffer }, 2343 { "glReadPixels", 20, _gloffset_ReadPixels }, 2344 { "glReleaseShaderCompiler", 20, -1 }, 2345 { "glRenderbufferStorage", 20, -1 }, 2346 { "glSampleCoverage", 20, -1 }, 2347 { "glScissor", 20, _gloffset_Scissor }, 2348 { "glShaderBinary", 20, -1 }, 2349 { "glShaderSource", 20, -1 }, 2350 { "glStencilFunc", 20, _gloffset_StencilFunc }, 2351 { "glStencilFuncSeparate", 20, -1 }, 2352 { "glStencilMask", 20, _gloffset_StencilMask }, 2353 { "glStencilMaskSeparate", 20, -1 }, 2354 { "glStencilOp", 20, _gloffset_StencilOp }, 2355 { "glStencilOpSeparate", 20, -1 }, 2356 { "glTexImage2D", 20, _gloffset_TexImage2D }, 2357 { "glTexImage3DOES", 20, _gloffset_TexImage3D }, 2358 { "glTexParameterf", 20, _gloffset_TexParameterf }, 2359 { "glTexParameterfv", 20, _gloffset_TexParameterfv }, 2360 { "glTexParameteri", 20, _gloffset_TexParameteri }, 2361 { "glTexParameteriv", 20, _gloffset_TexParameteriv }, 2362 { "glTexSubImage2D", 20, _gloffset_TexSubImage2D }, 2363 { "glTexSubImage3DOES", 20, _gloffset_TexSubImage3D }, 2364 { "glUniform1f", 20, -1 }, 2365 { "glUniform1fv", 20, -1 }, 2366 { "glUniform1i", 20, -1 }, 2367 { "glUniform1iv", 20, -1 }, 2368 { "glUniform2f", 20, -1 }, 2369 { "glUniform2fv", 20, -1 }, 2370 { "glUniform2i", 20, -1 }, 2371 { "glUniform2iv", 20, -1 }, 2372 { "glUniform3f", 20, -1 }, 2373 { "glUniform3fv", 20, -1 }, 2374 { "glUniform3i", 20, -1 }, 2375 { "glUniform3iv", 20, -1 }, 2376 { "glUniform4f", 20, -1 }, 2377 { "glUniform4fv", 20, -1 }, 2378 { "glUniform4i", 20, -1 }, 2379 { "glUniform4iv", 20, -1 }, 2380 { "glUniformMatrix2fv", 20, -1 }, 2381 { "glUniformMatrix3fv", 20, -1 }, 2382 { "glUniformMatrix4fv", 20, -1 }, 2383 { "glUnmapBufferOES", 20, -1 }, 2384 { "glUseProgram", 20, -1 }, 2385 { "glValidateProgram", 20, -1 }, 2386 { "glVertexAttrib1f", 20, -1 }, 2387 { "glVertexAttrib1fv", 20, -1 }, 2388 { "glVertexAttrib2f", 20, -1 }, 2389 { "glVertexAttrib2fv", 20, -1 }, 2390 { "glVertexAttrib3f", 20, -1 }, 2391 { "glVertexAttrib3fv", 20, -1 }, 2392 { "glVertexAttrib4f", 20, -1 }, 2393 { "glVertexAttrib4fv", 20, -1 }, 2394 { "glVertexAttribPointer", 20, -1 }, 2395 { "glViewport", 20, _gloffset_Viewport }, 2396 2397 /* GL_OES_get_program_binary - Also part of OpenGL ES 3.0. */ 2398 { "glGetProgramBinaryOES", 20, -1 }, 2399 { "glProgramBinaryOES", 20, -1 }, 2400 2401 /* GL_EXT_separate_shader_objects - Also part of OpenGL ES 3.1. */ 2402 { "glProgramParameteriEXT", 20, -1 }, 2403 { "glUseProgramStagesEXT", 20, -1 }, 2404 { "glActiveShaderProgramEXT", 20, -1 }, 2405 { "glCreateShaderProgramvEXT", 20, -1 }, 2406 { "glBindProgramPipelineEXT", 20, -1 }, 2407 { "glDeleteProgramPipelinesEXT", 20, -1 }, 2408 { "glGenProgramPipelinesEXT", 20, -1 }, 2409 { "glIsProgramPipelineEXT", 20, -1 }, 2410 { "glGetProgramPipelineivEXT", 20, -1 }, 2411 { "glProgramUniform1iEXT", 20, -1 }, 2412 { "glProgramUniform1ivEXT", 20, -1 }, 2413 { "glProgramUniform1fEXT", 20, -1 }, 2414 { "glProgramUniform1fvEXT", 20, -1 }, 2415 { "glProgramUniform2iEXT", 20, -1 }, 2416 { "glProgramUniform2ivEXT", 20, -1 }, 2417 { "glProgramUniform2fEXT", 20, -1 }, 2418 { "glProgramUniform2fvEXT", 20, -1 }, 2419 { "glProgramUniform3iEXT", 20, -1 }, 2420 { "glProgramUniform3ivEXT", 20, -1 }, 2421 { "glProgramUniform3fEXT", 20, -1 }, 2422 { "glProgramUniform3fvEXT", 20, -1 }, 2423 { "glProgramUniform4iEXT", 20, -1 }, 2424 { "glProgramUniform4ivEXT", 20, -1 }, 2425 { "glProgramUniform4fEXT", 20, -1 }, 2426 { "glProgramUniform4fvEXT", 20, -1 }, 2427 { "glProgramUniformMatrix2fvEXT", 20, -1 }, 2428 { "glProgramUniformMatrix3fvEXT", 20, -1 }, 2429 { "glProgramUniformMatrix4fvEXT", 20, -1 }, 2430 { "glProgramUniformMatrix2x3fvEXT", 20, -1 }, 2431 { "glProgramUniformMatrix3x2fvEXT", 20, -1 }, 2432 { "glProgramUniformMatrix2x4fvEXT", 20, -1 }, 2433 { "glProgramUniformMatrix4x2fvEXT", 20, -1 }, 2434 { "glProgramUniformMatrix3x4fvEXT", 20, -1 }, 2435 { "glProgramUniformMatrix4x3fvEXT", 20, -1 }, 2436 { "glValidateProgramPipelineEXT", 20, -1 }, 2437 { "glGetProgramPipelineInfoLogEXT", 20, -1 }, 2438 2439 /* GL_AMD_performance_monitor */ 2440 { "glGetPerfMonitorGroupsAMD", 20, -1 }, 2441 { "glGetPerfMonitorCountersAMD", 20, -1 }, 2442 { "glGetPerfMonitorGroupStringAMD", 20, -1 }, 2443 { "glGetPerfMonitorCounterStringAMD", 20, -1 }, 2444 { "glGetPerfMonitorCounterInfoAMD", 20, -1 }, 2445 { "glGenPerfMonitorsAMD", 20, -1 }, 2446 { "glDeletePerfMonitorsAMD", 20, -1 }, 2447 { "glSelectPerfMonitorCountersAMD", 20, -1 }, 2448 { "glBeginPerfMonitorAMD", 20, -1 }, 2449 { "glEndPerfMonitorAMD", 20, -1 }, 2450 { "glGetPerfMonitorCounterDataAMD", 20, -1 }, 2451 2452 /* GL_INTEL_performance_query */ 2453 { "glGetFirstPerfQueryIdINTEL", 20, -1 }, 2454 { "glGetNextPerfQueryIdINTEL", 20, -1 }, 2455 { "glGetPerfQueryIdByNameINTEL", 20, -1 }, 2456 { "glGetPerfQueryInfoINTEL", 20, -1 }, 2457 { "glGetPerfCounterInfoINTEL", 20, -1 }, 2458 { "glCreatePerfQueryINTEL", 20, -1 }, 2459 { "glDeletePerfQueryINTEL", 20, -1 }, 2460 { "glBeginPerfQueryINTEL", 20, -1 }, 2461 { "glEndPerfQueryINTEL", 20, -1 }, 2462 { "glGetPerfQueryDataINTEL", 20, -1 }, 2463 2464 /* GL_KHR_debug */ 2465 { "glPushDebugGroupKHR", 20, -1 }, 2466 { "glPopDebugGroupKHR", 20, -1 }, 2467 { "glDebugMessageCallbackKHR", 20, -1 }, 2468 { "glDebugMessageControlKHR", 20, -1 }, 2469 { "glDebugMessageInsertKHR", 20, -1 }, 2470 { "glGetDebugMessageLogKHR", 20, -1 }, 2471 { "glGetObjectLabelKHR", 20, -1 }, 2472 { "glGetObjectPtrLabelKHR", 20, -1 }, 2473 { "glGetPointervKHR", 20, -1 }, 2474 { "glObjectLabelKHR", 20, -1 }, 2475 { "glObjectPtrLabelKHR", 20, -1 }, 2476 2477 /* GL_EXT_polygon_offset_clamp */ 2478 { "glPolygonOffsetClampEXT", 11, -1 }, 2479 2480 /* GL_KHR_robustness */ 2481 { "glGetGraphicsResetStatusKHR", 20, -1 }, 2482 { "glReadnPixelsKHR", 20, -1 }, 2483 { "glGetnUniformfvKHR", 20, -1 }, 2484 { "glGetnUniformivKHR", 20, -1 }, 2485 { "glGetnUniformuivKHR", 20, -1 }, 2486 2487 /* GL_KHR_blend_equation_advanced */ 2488 { "glBlendBarrierKHR", 20, -1 }, 2489 2490 /* GL_EXT_occlusion_query_boolean */ 2491 { "glGenQueriesEXT", 20, -1 }, 2492 { "glDeleteQueriesEXT", 20, -1 }, 2493 { "glIsQueryEXT", 20, -1 }, 2494 { "glBeginQueryEXT", 20, -1 }, 2495 { "glEndQueryEXT", 20, -1 }, 2496 { "glGetQueryivEXT", 20, -1 }, 2497 { "glGetQueryObjectivEXT", 20, -1 }, 2498 { "glGetQueryObjectuivEXT", 20, -1 }, 2499 2500 /* GL_EXT_clear_texture */ 2501 { "glClearTexImageEXT", 31, -1 }, 2502 { "glClearTexSubImageEXT", 31, -1 }, 2503 2504 /* GL_EXT_clip_control */ 2505 { "glClipControlEXT", 20, -1 }, 2506 2507 /* GL_EXT_disjoint_timer_query */ 2508 { "glGetQueryObjecti64vEXT", 20, -1 }, 2509 { "glGetQueryObjectui64vEXT", 20, -1 }, 2510 { "glQueryCounterEXT", 20, -1 }, 2511 { "glGetInteger64vEXT", 20, -1 }, 2512 2513 /* GL_EXT_shader_framebuffer_fetch_non_coherent */ 2514 { "glFramebufferFetchBarrierEXT", 20, -1 }, 2515 2516 /* GL_NV_conditional_render */ 2517 { "glBeginConditionalRenderNV", 20, -1 }, 2518 { "glEndConditionalRenderNV", 20, -1 }, 2519 2520 /* GL_NV_conservative_raster */ 2521 { "glSubpixelPrecisionBiasNV", 20, -1 }, 2522 2523 /* GL_NV_conservative_raster_dilate */ 2524 { "glConservativeRasterParameterfNV", 20, -1 }, 2525 2526 /* GL_NV_conservative_raster_pre_snap_triangles */ 2527 { "glConservativeRasterParameteriNV", 20, -1 }, 2528 2529 /* GL_EXT_multisampled_render_to_texture */ 2530 { "glRenderbufferStorageMultisampleEXT", 20, -1 }, 2531 { "glFramebufferTexture2DMultisampleEXT", 20, -1 }, 2532 2533 /* GL_KHR_parallel_shader_compile */ 2534 { "glMaxShaderCompilerThreadsKHR", 20, -1 }, 2535 2536 { "glInternalBufferSubDataCopyMESA", 20, -1 }, 2537 { "glInternalSetError", 20, -1 }, 2538 2539 { NULL, 0, -1 } 2540}; 2541 2542const struct function gles3_functions_possible[] = { 2543 // We check for the aliased -EXT version in GLES 2 2544 // { "glBeginQuery", 30, -1 }, 2545 { "glBeginTransformFeedback", 30, -1 }, 2546 { "glBindBufferBase", 30, -1 }, 2547 { "glBindBufferRange", 30, -1 }, 2548 { "glBindSampler", 30, -1 }, 2549 { "glBindTransformFeedback", 30, -1 }, 2550 // We check for the aliased -OES version in GLES 2 2551 // { "glBindVertexArray", 30, -1 }, 2552 { "glBlitFramebuffer", 30, -1 }, 2553 { "glClearBufferfi", 30, -1 }, 2554 { "glClearBufferfv", 30, -1 }, 2555 { "glClearBufferiv", 30, -1 }, 2556 { "glClearBufferuiv", 30, -1 }, 2557 { "glClientWaitSync", 30, -1 }, 2558 // We check for the aliased -OES version in GLES 2 2559 // { "glCompressedTexImage3D", 30, -1 }, 2560 // We check for the aliased -OES version in GLES 2 2561 // { "glCompressedTexSubImage3D", 30, -1 }, 2562 { "glCopyBufferSubData", 30, -1 }, 2563 // We check for the aliased -OES version in GLES 2 2564 // { "glCopyTexSubImage3D", 30, -1 }, 2565 // We check for the aliased -EXT version in GLES 2 2566 // { "glDeleteQueries", 30, -1 }, 2567 { "glDeleteSamplers", 30, -1 }, 2568 { "glDeleteSync", 30, -1 }, 2569 { "glDeleteTransformFeedbacks", 30, -1 }, 2570 // We check for the aliased -OES version in GLES 2 2571 // { "glDeleteVertexArrays", 30, -1 }, 2572 { "glDrawArraysInstanced", 30, -1 }, 2573 // We check for the aliased -NV version in GLES 2 2574 // { "glDrawBuffers", 30, -1 }, 2575 { "glDrawElementsInstanced", 30, -1 }, 2576 { "glDrawRangeElements", 30, -1 }, 2577 { "glDrawRangeElementsBaseVertex", 30, -1 }, 2578 // We check for the aliased -EXT version in GLES 2 2579 // { "glEndQuery", 30, -1 }, 2580 { "glEndTransformFeedback", 30, -1 }, 2581 { "glFenceSync", 30, -1 }, 2582 // We check for the aliased -EXT version in GLES 2 2583 // { "glFlushMappedBufferRange", 30, -1 }, 2584 { "glFramebufferTextureLayer", 30, -1 }, 2585 // We check for the aliased -EXT version in GLES 2 2586 // { "glGenQueries", 30, -1 }, 2587 { "glGenSamplers", 30, -1 }, 2588 { "glGenTransformFeedbacks", 30, -1 }, 2589 // We check for the aliased -OES version in GLES 2 2590 // { "glGenVertexArrays", 30, -1 }, 2591 { "glGetActiveUniformBlockiv", 30, -1 }, 2592 { "glGetActiveUniformBlockName", 30, -1 }, 2593 { "glGetActiveUniformsiv", 30, -1 }, 2594 { "glGetBufferParameteri64v", 30, -1 }, 2595 // We check for the aliased -OES version in GLES 2 2596 // { "glGetBufferPointerv", 30, -1 }, 2597 { "glGetFragDataLocation", 30, -1 }, 2598 { "glGetInteger64i_v", 30, -1 }, 2599 // We check for the aliased -EXT version in GLES 2 2600 //{ "glGetInteger64v", 30, -1 }, 2601 { "glGetIntegeri_v", 30, -1 }, 2602 { "glGetInternalformativ", 30, -1 }, 2603 { "glGetInternalformati64v", 30, -1 }, 2604 // glGetProgramBinary aliases glGetProgramBinaryOES in GLES 2 2605 // We check for the aliased -EXT version in GLES 2 2606 // { "glGetQueryiv", 30, -1 }, 2607 // We check for the aliased -EXT version in GLES 2 2608 // { "glGetQueryObjectuiv", 30, -1 }, 2609 { "glGetSamplerParameterfv", 30, -1 }, 2610 { "glGetSamplerParameteriv", 30, -1 }, 2611 { "glGetStringi", 30, -1 }, 2612 { "glGetSynciv", 30, -1 }, 2613 { "glGetTransformFeedbackVarying", 30, -1 }, 2614 { "glGetUniformBlockIndex", 30, -1 }, 2615 { "glGetUniformIndices", 30, -1 }, 2616 { "glGetUniformuiv", 30, -1 }, 2617 { "glGetVertexAttribIiv", 30, -1 }, 2618 { "glGetVertexAttribIuiv", 30, -1 }, 2619 { "glInvalidateFramebuffer", 30, -1 }, 2620 { "glInvalidateSubFramebuffer", 30, -1 }, 2621 // We check for the aliased -EXT version in GLES 2 2622 // { "glIsQuery", 30, -1 }, 2623 { "glIsSampler", 30, -1 }, 2624 { "glIsSync", 30, -1 }, 2625 { "glIsTransformFeedback", 30, -1 }, 2626 // We check for the aliased -OES version in GLES 2 2627 // { "glIsVertexArray", 30, -1 }, 2628 // We check for the aliased -EXT version in GLES 2 2629 // { "glMapBufferRange", 30, -1 }, 2630 { "glPauseTransformFeedback", 30, -1 }, 2631 // glProgramBinary aliases glProgramBinaryOES in GLES 2 2632 // glProgramParameteri aliases glProgramParameteriEXT in GLES 2 2633 // We check for the aliased -NV version in GLES 2 2634 // { "glReadBuffer", 30, -1 }, 2635 // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2 2636 { "glResumeTransformFeedback", 30, -1 }, 2637 { "glSamplerParameterf", 30, -1 }, 2638 { "glSamplerParameterfv", 30, -1 }, 2639 { "glSamplerParameteri", 30, -1 }, 2640 { "glSamplerParameteriv", 30, -1 }, 2641 // We check for the aliased -OES version in GLES 2 2642 // { "glTexImage3D", 30, -1 }, 2643 { "glTexStorage2D", 30, -1 }, 2644 { "glTexStorage3D", 30, -1 }, 2645 // We check for the aliased -OES version in GLES 2 2646 // { "glTexSubImage3D", 30, -1 }, 2647 { "glTransformFeedbackVaryings", 30, -1 }, 2648 { "glUniform1ui", 30, -1 }, 2649 { "glUniform1uiv", 30, -1 }, 2650 { "glUniform2ui", 30, -1 }, 2651 { "glUniform2uiv", 30, -1 }, 2652 { "glUniform3ui", 30, -1 }, 2653 { "glUniform3uiv", 30, -1 }, 2654 { "glUniform4ui", 30, -1 }, 2655 { "glUniform4uiv", 30, -1 }, 2656 { "glUniformBlockBinding", 30, -1 }, 2657 { "glUniformMatrix2x3fv", 30, -1 }, 2658 { "glUniformMatrix2x4fv", 30, -1 }, 2659 { "glUniformMatrix3x2fv", 30, -1 }, 2660 { "glUniformMatrix3x4fv", 30, -1 }, 2661 { "glUniformMatrix4x2fv", 30, -1 }, 2662 { "glUniformMatrix4x3fv", 30, -1 }, 2663 // We check for the aliased -OES version in GLES 2 2664 // { "glUnmapBuffer", 30, -1 }, 2665 { "glVertexAttribDivisor", 30, -1 }, 2666 { "glVertexAttribI4i", 30, -1 }, 2667 { "glVertexAttribI4iv", 30, -1 }, 2668 { "glVertexAttribI4ui", 30, -1 }, 2669 { "glVertexAttribI4uiv", 30, -1 }, 2670 { "glVertexAttribIPointer", 30, -1 }, 2671 { "glWaitSync", 30, -1 }, 2672 2673 /* GL_EXT_separate_shader_objects - Also part of OpenGL ES 3.1. */ 2674 { "glProgramUniform1uiEXT", 30, -1 }, 2675 { "glProgramUniform1uivEXT", 30, -1 }, 2676 { "glProgramUniform2uiEXT", 30, -1 }, 2677 { "glProgramUniform2uivEXT", 30, -1 }, 2678 { "glProgramUniform3uiEXT", 30, -1 }, 2679 { "glProgramUniform3uivEXT", 30, -1 }, 2680 { "glProgramUniform4uiEXT", 30, -1 }, 2681 { "glProgramUniform4uivEXT", 30, -1 }, 2682 2683 /* GL_EXT_blend_func_extended */ 2684 { "glBindFragDataLocationIndexedEXT", 30, -1 }, 2685 { "glGetFragDataIndexEXT", 30, -1 }, 2686 { "glBindFragDataLocationEXT", 30, -1 }, 2687 2688 /* GL_OES_texture_border_clamp */ 2689 { "glTexParameterIivOES", 30, -1 }, 2690 { "glTexParameterIuivOES", 30, -1 }, 2691 { "glGetTexParameterIivOES", 30, -1 }, 2692 { "glGetTexParameterIuivOES", 30, -1 }, 2693 { "glSamplerParameterIivOES", 30, -1 }, 2694 { "glSamplerParameterIuivOES", 30, -1 }, 2695 { "glGetSamplerParameterIivOES", 30, -1 }, 2696 { "glGetSamplerParameterIuivOES", 30, -1 }, 2697 2698 /* GL_OES_texture_buffer */ 2699 { "glTexBufferOES", 31, -1 }, 2700 { "glTexBufferRangeOES", 31, -1 }, 2701 2702 /* GL_OES_sample_shading */ 2703 { "glMinSampleShadingOES", 30, -1 }, 2704 2705 /* GL_OES_copy_image */ 2706 { "glCopyImageSubDataOES", 30, -1 }, 2707 2708 /* GL_OES_draw_buffers_indexed */ 2709 { "glBlendFunciOES", 30, -1 }, 2710 { "glBlendFuncSeparateiOES", 30, -1 }, 2711 { "glBlendEquationiOES", 30, -1 }, 2712 { "glBlendEquationSeparateiOES", 30, -1 }, 2713 { "glColorMaskiOES", 30, -1 }, 2714 { "glEnableiOES", 30, -1 }, 2715 { "glDisableiOES", 30, -1 }, 2716 { "glIsEnablediOES", 30, -1 }, 2717 2718 /* GL_EXT_base_instance */ 2719 { "glDrawArraysInstancedBaseInstanceEXT", 30, -1 }, 2720 { "glDrawElementsInstancedBaseInstanceEXT", 30, -1 }, 2721 { "glDrawElementsInstancedBaseVertexBaseInstanceEXT", 30, -1 }, 2722 2723 /* GL_EXT_window_rectangles */ 2724 { "glWindowRectanglesEXT", 30, -1 }, 2725 2726 /* GL_AMD_framebuffer_multisample_advanced */ 2727 { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, 2728 { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, 2729 2730 /* GL_MESA_framebuffer_flip_y */ 2731 { "glFramebufferParameteriMESA", 30, -1 }, 2732 { "glGetFramebufferParameterivMESA", 30, -1 }, 2733 2734 /* EXT_EGL_image_storage */ 2735 { "glEGLImageTargetTexStorageEXT", 30, -1 }, 2736 2737 { "glDrawElementsInstancedBaseVertex", 30, -1 }, 2738 2739 { NULL, 0, -1 } 2740}; 2741 2742const struct function gles31_functions_possible[] = { 2743 { "glDispatchCompute", 31, -1 }, 2744 { "glDispatchComputeIndirect", 31, -1 }, 2745 { "glDrawArraysIndirect", 31, -1 }, 2746 { "glDrawElementsIndirect", 31, -1 }, 2747 2748 { "glFramebufferParameteri", 31, -1 }, 2749 { "glGetFramebufferParameteriv", 31, -1 }, 2750 2751 { "glGetProgramInterfaceiv", 31, -1 }, 2752 { "glGetProgramResourceIndex", 31, -1 }, 2753 { "glGetProgramResourceName", 31, -1 }, 2754 { "glGetProgramResourceiv", 31, -1 }, 2755 { "glGetProgramResourceLocation", 31, -1 }, 2756 2757 // We check for the aliased EXT versions in GLES 2 2758 // { "glUseProgramStages", 31, -1 }, 2759 // { "glActiveShaderProgram", 31, -1 }, 2760 // { "glCreateShaderProgramv", 31, -1 }, 2761 // { "glBindProgramPipeline", 31, -1 }, 2762 // { "glDeleteProgramPipelines", 31, -1 }, 2763 // { "glGenProgramPipelines", 31, -1 }, 2764 // { "glIsProgramPipeline", 31, -1 }, 2765 // { "glGetProgramPipelineiv", 31, -1 }, 2766 // { "glProgramUniform1i", 31, -1 }, 2767 // { "glProgramUniform2i", 31, -1 }, 2768 // { "glProgramUniform3i", 31, -1 }, 2769 // { "glProgramUniform4i", 31, -1 }, 2770 // { "glProgramUniform1f", 31, -1 }, 2771 // { "glProgramUniform2f", 31, -1 }, 2772 // { "glProgramUniform3f", 31, -1 }, 2773 // { "glProgramUniform4f", 31, -1 }, 2774 // { "glProgramUniform1iv", 31, -1 }, 2775 // { "glProgramUniform2iv", 31, -1 }, 2776 // { "glProgramUniform3iv", 31, -1 }, 2777 // { "glProgramUniform4iv", 31, -1 }, 2778 // { "glProgramUniform1fv", 31, -1 }, 2779 // { "glProgramUniform2fv", 31, -1 }, 2780 // { "glProgramUniform3fv", 31, -1 }, 2781 // { "glProgramUniform4fv", 31, -1 }, 2782 // { "glProgramUniformMatrix2fv", 31, -1 }, 2783 // { "glProgramUniformMatrix3fv", 31, -1 }, 2784 // { "glProgramUniformMatrix4fv", 31, -1 }, 2785 // { "glProgramUniformMatrix2x3fv", 31, -1 }, 2786 // { "glProgramUniformMatrix3x2fv", 31, -1 }, 2787 // { "glProgramUniformMatrix2x4fv", 31, -1 }, 2788 // { "glProgramUniformMatrix4x2fv", 31, -1 }, 2789 // { "glProgramUniformMatrix3x4fv", 31, -1 }, 2790 // { "glProgramUniformMatrix4x3fv", 31, -1 }, 2791 // { "glValidateProgramPipeline", 31, -1 }, 2792 // { "glGetProgramPipelineInfoLog", 31, -1 }, 2793 2794 // We check for the aliased EXT versions in GLES 3 2795 // { "glProgramUniform1ui", 31, -1 }, 2796 // { "glProgramUniform2ui", 31, -1 }, 2797 // { "glProgramUniform3ui", 31, -1 }, 2798 // { "glProgramUniform4ui", 31, -1 }, 2799 // { "glProgramUniform1uiv", 31, -1 }, 2800 // { "glProgramUniform2uiv", 31, -1 }, 2801 // { "glProgramUniform3uiv", 31, -1 }, 2802 // { "glProgramUniform4uiv", 31, -1 }, 2803 2804 { "glBindImageTexture", 31, -1 }, 2805 { "glGetBooleani_v", 31, -1 }, 2806 { "glMemoryBarrier", 31, -1 }, 2807 2808 { "glMemoryBarrierByRegion", 31, -1 }, 2809 2810 { "glTexStorage2DMultisample", 31, -1 }, 2811 { "glGetMultisamplefv", 31, -1 }, 2812 { "glSampleMaski", 31, -1 }, 2813 { "glGetTexLevelParameteriv", 31, -1 }, 2814 { "glGetTexLevelParameterfv", 31, -1 }, 2815 { "glBindVertexBuffer", 31, -1 }, 2816 { "glVertexAttribFormat", 31, -1 }, 2817 { "glVertexAttribIFormat", 31, -1 }, 2818 { "glVertexAttribBinding", 31, -1 }, 2819 { "glVertexBindingDivisor", 31, -1 }, 2820 2821 /* GL_OES_texture_storage_multisample_2d_array */ 2822 { "glTexStorage3DMultisampleOES", 31, -1 }, 2823 2824 /* GL_OES_texture_view */ 2825 { "glTextureViewOES", 31, -1 }, 2826 2827 /* GL_EXT_buffer_storage */ 2828 { "glBufferStorageEXT", 31, -1 }, 2829 2830 /* GL_EXT_blend_func_extended */ 2831 { "glGetProgramResourceLocationIndexEXT", 31, -1 }, 2832 2833 /* GL_OES_geometry_shader */ 2834 { "glFramebufferTextureOES", 31, -1}, 2835 2836 /* GL_EXT_geometry_shader */ 2837 // We check for the aliased OES version above 2838 // { "glFramebufferTextureEXT", 31, -1}, 2839 2840 /* GL_OES_tessellation_shader */ 2841 { "glPatchParameteriOES", 31, -1 }, 2842 2843 /* GL_OES_primitive_bound_box */ 2844 { "glPrimitiveBoundingBoxOES", 31, -1 }, 2845 2846 /* GL_OES_viewport_array */ 2847 { "glViewportArrayvOES", 31, -1 }, 2848 { "glViewportIndexedfOES", 31, -1 }, 2849 { "glViewportIndexedfvOES", 31, -1 }, 2850 { "glScissorArrayvOES", 31, -1 }, 2851 { "glScissorIndexedOES", 31, -1 }, 2852 { "glScissorIndexedvOES", 31, -1 }, 2853 { "glDepthRangeArrayfvOES", 31, -1 }, 2854 { "glDepthRangeIndexedfOES", 31, -1 }, 2855 { "glGetFloati_vOES", 31, -1 }, 2856 2857 /* GL_ARB_sample_locations */ 2858 { "glFramebufferSampleLocationsfvARB", 31, -1 }, 2859 { "glNamedFramebufferSampleLocationsfvARB", 31, -1 }, 2860 { "glEvaluateDepthValuesARB", 31, -1 }, 2861 2862 /* GL_NV_viewport_swizzle */ 2863 { "glViewportSwizzleNV", 31, -1 }, 2864 2865 { NULL, 0, -1 }, 2866 }; 2867