blob: d15c1c1419a9a1b4d1ecc68204b62d1c9d1832b9 [file] [log] [blame]
#!/usr/bin/env python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""code generator for GL/GLES extension wrangler."""
import optparse
import os
import collections
import re
import platform
import sys
from subprocess import call
from collections import namedtuple
HEADER_PATHS = [
'../../third_party/khronos',
'../../third_party/mesa_headers',
'.',
'../../gpu',
]
UNCONDITIONALLY_BOUND_EXTENSIONS = set([
'WGL_ARB_extensions_string',
'WGL_EXT_extensions_string',
'GL_CHROMIUM_gles_depth_binding_hack', # crbug.com/448206
'GL_CHROMIUM_glgetstringi_hack', # crbug.com/470396
'GL_CHROMIUM_egl_khr_fence_sync_hack', # crbug.com/504758
'GL_CHROMIUM_egl_android_native_fence_sync_hack', # crbug.com/775707
])
"""Function binding conditions can be specified manually by supplying a versions
array instead of the names array. Each version has the following keys:
name: Mandatory. Name of the function. Multiple versions can have the same
name but different conditions.
extensions: Extra Extensions for which the function is bound. Only needed
in some cases where the extension cannot be parsed from the
headers.
explicit_only: if True, only extensions in 'extensions' are considered.
is_optional: True if the GetProcAddress can return NULL for the
function. This may happen for example when functions
are added to a new version of an extension, but the
extension string is not modified.
By default, the function gets its name from the first name in its names or
versions array. This can be overridden by supplying a 'known_as' key.
"""
GL_FUNCTIONS = [
{ 'return_type': 'void',
'names': ['glActiveShaderProgram'],
'arguments': 'GLuint pipeline, GLuint program', },
{ 'return_type': 'void',
'names': ['glActiveTexture'],
'arguments': 'GLenum texture', },
{ 'return_type': 'void',
'known_as': 'glApplyFramebufferAttachmentCMAAINTEL',
'versions': [{ 'name': 'glApplyFramebufferAttachmentCMAAINTEL',
'extensions': ['GL_INTEL_framebuffer_CMAA'] }],
'arguments': 'void', },
{ 'return_type': 'void',
'names': ['glAttachShader'],
'arguments': 'GLuint program, GLuint shader', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBeginQuery' },
{ 'name': 'glBeginQueryARB' },
{ 'name': 'glBeginQueryEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLenum target, GLuint id', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBeginTransformFeedback' },
{ 'name': 'glBeginTransformFeedbackEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'GLenum primitiveMode', },
{ 'return_type': 'void',
'names': ['glBindAttribLocation'],
'arguments': 'GLuint program, GLuint index, const char* name', },
{ 'return_type': 'void',
'names': ['glBindBuffer'],
'arguments': 'GLenum target, GLuint buffer', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindBufferBase' },
{ 'name': 'glBindBufferBaseEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'GLenum target, GLuint index, GLuint buffer', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindBufferRange' },
{ 'name': 'glBindBufferRangeEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'GLenum target, GLuint index, GLuint buffer, GLintptr offset, '
'GLsizeiptr size', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindFragDataLocation',
'extensions': ['GL_ARB_blend_func_extended'] },
{ 'name': 'glBindFragDataLocationEXT',
'extensions': ['GL_EXT_blend_func_extended'] }],
'arguments': 'GLuint program, GLuint colorNumber, const char* name', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindFragDataLocationIndexed',
'extensions': ['GL_ARB_blend_func_extended'] },
{ 'name': 'glBindFragDataLocationIndexedEXT',
'extensions': ['GL_EXT_blend_func_extended'] }],
'arguments':
'GLuint program, GLuint colorNumber, GLuint index, const char* name',
},
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindFragmentInputLocationCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint program, GLint location, const char* name', },
{ 'return_type': 'void',
'names': ['glBindFramebufferEXT', 'glBindFramebuffer'],
'arguments': 'GLenum target, GLuint framebuffer', },
{ 'return_type': 'void',
'known_as': 'glBindImageTextureEXT',
'versions': [{ 'name': 'glBindImageTexture',
'extensions': ['GL_ARB_shader_image_load_store'] },
{ 'name': 'glBindImageTextureEXT',
'extensions': ['GL_EXT_shader_image_load_store'] }],
'arguments': 'GLuint index, GLuint texture, GLint level, GLboolean layered,'
'GLint layer, GLenum access, GLint format', },
{ 'return_type': 'void',
'names': ['glBindProgramPipeline'],
'arguments': 'GLuint pipeline', },
{ 'return_type': 'void',
'names': ['glBindRenderbufferEXT', 'glBindRenderbuffer'],
'arguments': 'GLenum target, GLuint renderbuffer', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindSampler',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint unit, GLuint sampler', },
{ 'return_type': 'void',
'names': ['glBindTexture'],
'arguments': 'GLenum target, GLuint texture', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindTransformFeedback',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'GLenum target, GLuint id', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glBindUniformLocationCHROMIUM',
'extensions': ['GL_CHROMIUM_bind_uniform_location'] }],
'arguments': 'GLuint program, GLint location, const char* name' },
{ 'return_type': 'void',
'known_as': 'glBindVertexArrayOES',
'versions': [{ 'name': 'glBindVertexArray',
'extensions': ['GL_ARB_vertex_array_object'], },
{ 'name': 'glBindVertexArrayOES' },
{ 'name': 'glBindVertexArrayAPPLE',
'extensions': ['GL_APPLE_vertex_array_object'] }],
'arguments': 'GLuint array' },
{ 'return_type': 'void',
'names': ['glBindVertexBuffer'],
'arguments': 'GLuint bindingindex, GLuint buffer, GLintptr offset, '
'GLsizei stride', },
{ 'return_type': 'void',
'known_as': 'glBlendBarrierKHR',
'versions': [{ 'name': 'glBlendBarrierNV',
'extensions': ['GL_NV_blend_equation_advanced'] },
{ 'name': 'glBlendBarrierKHR',
'extensions': ['GL_KHR_blend_equation_advanced'] }],
'arguments': 'void' },
{ 'return_type': 'void',
'names': ['glBlendColor'],
'arguments': 'GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha', },
{ 'return_type': 'void',
'names': ['glBlendEquation'],
'arguments': ' GLenum mode ', },
{ 'return_type': 'void',
'names': ['glBlendEquationSeparate'],
'arguments': 'GLenum modeRGB, GLenum modeAlpha', },
{ 'return_type': 'void',
'names': ['glBlendFunc'],
'arguments': 'GLenum sfactor, GLenum dfactor', },
{ 'return_type': 'void',
'names': ['glBlendFuncSeparate'],
'arguments':
'GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha', },
{ 'return_type': 'void',
'versions' : [{'name': 'glBlitFramebuffer',
'extensions': ['GL_ARB_framebuffer_object']},
{'name': 'glBlitFramebufferANGLE'},
{'name': 'glBlitFramebufferEXT'}],
'arguments': 'GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, '
'GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, '
'GLbitfield mask, GLenum filter', },
{ 'return_type': 'void',
'names': ['glBufferData'],
'arguments':
'GLenum target, GLsizeiptr size, const void* data, GLenum usage', },
{ 'return_type': 'void',
'names': ['glBufferSubData'],
'arguments':
'GLenum target, GLintptr offset, GLsizeiptr size, const void* data', },
{ 'return_type': 'GLenum',
'names': ['glCheckFramebufferStatusEXT',
'glCheckFramebufferStatus'],
'arguments': 'GLenum target',
'logging_code': """
GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringEnum(result));
""", },
{ 'return_type': 'void',
'names': ['glClear'],
'arguments': 'GLbitfield mask', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearBufferfi' }],
'arguments': 'GLenum buffer, GLint drawbuffer, const GLfloat depth, '
'GLint stencil', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearBufferfv' }],
'arguments': 'GLenum buffer, GLint drawbuffer, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearBufferiv' }],
'arguments': 'GLenum buffer, GLint drawbuffer, const GLint* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearBufferuiv' }],
'arguments': 'GLenum buffer, GLint drawbuffer, const GLuint* value', },
{ 'return_type': 'void',
'names': ['glClearColor'],
'arguments': 'GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearDepth',
'extensions': ['GL_CHROMIUM_gles_depth_binding_hack'] }],
'arguments': 'GLclampd depth', },
{ 'return_type': 'void',
'names': ['glClearDepthf'],
'arguments': 'GLclampf depth', },
{ 'return_type': 'void',
'names': ['glClearStencil'],
'arguments': 'GLint s', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearTexImage',
'extensions': ['GL_ARB_clear_texture'] },
{ 'name': 'glClearTexImageEXT',
'extensions': ['GL_EXT_clear_texture'] }],
'arguments':
'GLuint texture, GLint level, GLenum format, GLenum type, '
'const GLvoid* data', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glClearTexSubImage',
'extensions': ['GL_EXT_clear_texture'] },
{ 'name': 'glClearTexSubImageEXT',
'extensions': ['GL_EXT_clear_texture'] }],
'arguments':
'GLuint texture, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLint width, GLint height, GLint depth, GLenum format, '
'GLenum type, const GLvoid* data', },
{ 'return_type': 'GLenum',
'versions': [{ 'name': 'glClientWaitSync',
'extensions': ['GL_ARB_sync'] }],
'arguments': 'GLsync sync, GLbitfield flags, GLuint64 timeout', },
{ 'return_type': 'GLenum',
'versions': [{ 'name': 'glClientWaitSyncAPPLE',
'extensions': ['GL_APPLE_sync'] }],
'arguments': 'GLsync sync, GLbitfield flags, GLuint64 timeout', },
{ 'return_type': 'void',
'names': ['glColorMask'],
'arguments':
'GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha', },
{ 'return_type': 'void',
'names': ['glCompileShader'],
'arguments': 'GLuint shader', },
{ 'return_type': 'void',
'names': ['glCompressedTexImage2D'],
'arguments':
'GLenum target, GLint level, GLenum internalformat, GLsizei width, '
'GLsizei height, GLint border, GLsizei imageSize, const void* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glCompressedTexImage2DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLenum internalformat, GLsizei width, '
'GLsizei height, GLint border, GLsizei imageSize, GLsizei dataSize, '
'const void* data', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCompressedTexImage3D' }],
'arguments':
'GLenum target, GLint level, GLenum internalformat, GLsizei width, '
'GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, '
'const void* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glCompressedTexImage3DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLenum internalformat, GLsizei width, '
'GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, '
'GLsizei dataSize, const void* data', },
{ 'return_type': 'void',
'names': ['glCompressedTexSubImage2D'],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, '
'const void* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glCompressedTexSubImage2DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, '
'GLsizei dataSize, const void* data', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCompressedTexSubImage3D' }],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, '
'GLenum format, GLsizei imageSize, const void* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glCompressedTexSubImage3DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, '
'GLenum format, GLsizei imageSize, GLsizei dataSize, '
'const void* data', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCopyBufferSubData' }],
'arguments':
'GLenum readTarget, GLenum writeTarget, GLintptr readOffset, '
'GLintptr writeOffset, GLsizeiptr size', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCopySubTextureCHROMIUM',
'extensions': ['GL_CHROMIUM_copy_texture'], }],
'arguments':
'GLuint sourceId, GLint sourceLevel, GLenum destTarget, GLuint destId, '
'GLint destLevel, GLint xoffset, GLint yoffset, GLint x, GLint y, '
'GLsizei width, GLsizei height, GLboolean unpackFlipY, '
'GLboolean unpackPremultiplyAlpha, GLboolean unpackUnmultiplyAlpha', },
{ 'return_type': 'void',
'names': ['glCopyTexImage2D'],
'arguments':
'GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, '
'GLsizei width, GLsizei height, GLint border', },
{ 'return_type': 'void',
'names': ['glCopyTexSubImage2D'],
'arguments':
'GLenum target, GLint level, GLint xoffset, '
'GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCopyTexSubImage3D' }],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glCopyTextureCHROMIUM',
'extensions': ['GL_CHROMIUM_copy_texture'], }],
'arguments':
'GLuint sourceId, GLint sourceLevel, GLenum destTarget, GLuint destId, '
'GLint destLevel, GLint internalFormat, GLenum destType, '
'GLboolean unpackFlipY, GLboolean unpackPremultiplyAlpha, '
'GLboolean unpackUnmultiplyAlpha', },
{ 'return_type': 'void',
'names': ['glCoverageModulationNV'],
'versions': [{ 'name': 'glCoverageModulationNV',
'extensions': ['GL_NV_framebuffer_mixed_samples'] },
{ 'name': 'glCoverageModulationCHROMIUM',
'extensions': ['GL_CHROMIUM_framebuffer_mixed_samples'] }],
'arguments': 'GLenum components'},
{ 'return_type': 'void',
'names': ['glCoverFillPathInstancedNV'],
'versions': [{ 'name': 'glCoverFillPathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glCoverFillPathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLenum coverMode, GLenum transformType, '
'const GLfloat* transformValues' },
{ 'return_type': 'void',
'names': ['glCoverFillPathNV'],
'versions': [{ 'name': 'glCoverFillPathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glCoverFillPathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLenum coverMode' },
{ 'return_type': 'void',
'names': ['glCoverStrokePathInstancedNV'],
'versions': [{ 'name': 'glCoverStrokePathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glCoverStrokePathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLenum coverMode, GLenum transformType, '
'const GLfloat* transformValues' },
{ 'return_type': 'void',
'names': ['glCoverStrokePathNV'],
'versions': [{ 'name': 'glCoverStrokePathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glCoverStrokePathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint name, GLenum coverMode' },
{ 'return_type': 'void',
'names': [ 'glCreateMemoryObjectsEXT' ],
'arguments': 'GLsizei n, GLuint* memoryObjects', },
{ 'return_type': 'GLuint',
'names': ['glCreateProgram'],
'arguments': 'void', },
{ 'return_type': 'GLuint',
'names': ['glCreateShader'],
'arguments': 'GLenum type', },
{ 'return_type': 'GLuint',
'names': ['glCreateShaderProgramv'],
'arguments': 'GLenum type, GLsizei count, const char* const* strings', },
{ 'return_type': 'void',
'names': ['glCullFace'],
'arguments': 'GLenum mode', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDebugMessageCallback' },
{ 'name': 'glDebugMessageCallbackKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments': 'GLDEBUGPROC callback, const void* userParam', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDebugMessageControl' },
{ 'name': 'glDebugMessageControlKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLenum source, GLenum type, GLenum severity, GLsizei count, '
'const GLuint* ids, GLboolean enabled', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDebugMessageInsert' },
{ 'name': 'glDebugMessageInsertKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLenum source, GLenum type, GLuint id, GLenum severity, '
'GLsizei length, const char* buf', },
{ 'return_type': 'void',
'names': ['glDeleteBuffers'],
'known_as': 'glDeleteBuffersARB',
'arguments': 'GLsizei n, const GLuint* buffers', },
{ 'return_type': 'void',
'known_as': 'glDeleteFencesAPPLE',
'versions': [{ 'name': 'glDeleteFencesAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLsizei n, const GLuint* fences', },
{ 'return_type': 'void',
'names': ['glDeleteFencesNV'],
'arguments': 'GLsizei n, const GLuint* fences', },
{ 'return_type': 'void',
'names': ['glDeleteFramebuffersEXT', 'glDeleteFramebuffers'],
'arguments': 'GLsizei n, const GLuint* framebuffers', },
{ 'return_type': 'void',
'names': ['glDeletePathsNV'],
'versions': [{ 'name': 'glDeletePathsNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glDeletePathsCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLsizei range' },
{ 'return_type': 'void',
'names': ['glDeleteProgram'],
'arguments': 'GLuint program', },
{ 'return_type': 'void',
'names': ['glDeleteProgramPipelines'],
'arguments': 'GLsizei n, const GLuint* pipelines', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDeleteQueries' },
{ 'name': 'glDeleteQueriesARB'},
{ 'name': 'glDeleteQueriesEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLsizei n, const GLuint* ids', },
{ 'return_type': 'void',
'names': ['glDeleteRenderbuffersEXT', 'glDeleteRenderbuffers'],
'arguments': 'GLsizei n, const GLuint* renderbuffers', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDeleteSamplers',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLsizei n, const GLuint* samplers', },
{ 'return_type': 'void',
'names': ['glDeleteSemaphoresEXT'],
'arguments': 'GLsizei n, const GLuint* semaphores', },
{ 'return_type': 'void',
'names': ['glDeleteShader'],
'arguments': 'GLuint shader', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDeleteSync',
'extensions': ['GL_ARB_sync'] }],
'arguments': 'GLsync sync', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDeleteSyncAPPLE',
'extensions': ['GL_APPLE_sync'] }],
'arguments': 'GLsync sync', },
{ 'return_type': 'void',
'names': ['glDeleteTextures'],
'arguments': 'GLsizei n, const GLuint* textures', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDeleteTransformFeedbacks',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'GLsizei n, const GLuint* ids', },
{ 'return_type': 'void',
'known_as': 'glDeleteVertexArraysOES',
'versions': [{ 'name': 'glDeleteVertexArrays',
'extensions': ['GL_ARB_vertex_array_object'], },
{ 'name': 'glDeleteVertexArraysOES' },
{ 'name': 'glDeleteVertexArraysAPPLE',
'extensions': ['GL_APPLE_vertex_array_object'] }],
'arguments': 'GLsizei n, const GLuint* arrays' },
{ 'return_type': 'void',
'names': ['glDepthFunc'],
'arguments': 'GLenum func', },
{ 'return_type': 'void',
'names': ['glDepthMask'],
'arguments': 'GLboolean flag', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDepthRange',
'extensions': ['GL_CHROMIUM_gles_depth_binding_hack'] }],
'arguments': 'GLclampd zNear, GLclampd zFar', },
{ 'return_type': 'void',
'names': ['glDepthRangef'],
'arguments': 'GLclampf zNear, GLclampf zFar', },
{ 'return_type': 'void',
'names': ['glDetachShader'],
'arguments': 'GLuint program, GLuint shader', },
{ 'return_type': 'void',
'names': ['glDisable'],
'arguments': 'GLenum cap', },
{ 'return_type': 'void',
'names': ['glDisableVertexAttribArray'],
'arguments': 'GLuint index', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDiscardFramebufferEXT',
'extensions': ['GL_EXT_discard_framebuffer'] }],
'arguments': 'GLenum target, GLsizei numAttachments, '
'const GLenum* attachments' },
{ 'return_type': 'void',
'names': ['glDispatchCompute'],
'arguments': 'GLuint numGroupsX, GLuint numGroupsY, GLuint numGroupsZ', },
{ 'return_type': 'void',
'names': ['glDispatchComputeIndirect'],
'arguments': 'GLintptr indirect', },
{ 'return_type': 'void',
'names': ['glDrawArrays'],
'arguments': 'GLenum mode, GLint first, GLsizei count', },
{ 'return_type': 'void',
'names': ['glDrawArraysIndirect'],
'arguments': 'GLenum mode, const void* indirect', },
{ 'return_type': 'void',
'known_as': 'glDrawArraysInstancedANGLE',
'names': ['glDrawArraysInstancedARB', 'glDrawArraysInstancedANGLE',
'glDrawArraysInstanced'],
'arguments': 'GLenum mode, GLint first, GLsizei count, GLsizei primcount', },
{ 'return_type': 'void',
'names': ['glDrawBuffer'],
'arguments': 'GLenum mode', },
{ 'return_type': 'void',
'names': ['glDrawBuffersARB', 'glDrawBuffersEXT', 'glDrawBuffers'],
'arguments': 'GLsizei n, const GLenum* bufs', },
{ 'return_type': 'void',
'names': ['glDrawElements'],
'arguments':
'GLenum mode, GLsizei count, GLenum type, const void* indices', },
{ 'return_type': 'void',
'names': ['glDrawElementsIndirect'],
'arguments': 'GLenum mode, GLenum type, const void* indirect', },
{ 'return_type': 'void',
'known_as': 'glDrawElementsInstancedANGLE',
'names': ['glDrawElementsInstancedARB', 'glDrawElementsInstancedANGLE',
'glDrawElementsInstanced'],
'arguments':
'GLenum mode, GLsizei count, GLenum type, const void* indices, '
'GLsizei primcount', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glDrawRangeElements' }],
'arguments': 'GLenum mode, GLuint start, GLuint end, GLsizei count, '
'GLenum type, const void* indices', },
{ 'return_type': 'void',
'names': ['glEGLImageTargetRenderbufferStorageOES'],
'arguments': 'GLenum target, GLeglImageOES image', },
{ 'return_type': 'void',
'names': ['glEGLImageTargetTexture2DOES'],
'arguments': 'GLenum target, GLeglImageOES image', },
{ 'return_type': 'void',
'names': ['glEnable'],
'arguments': 'GLenum cap', },
{ 'return_type': 'void',
'names': ['glEnableVertexAttribArray'],
'arguments': 'GLuint index', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glEndQuery' },
{ 'name': 'glEndQueryARB' },
{ 'name': 'glEndQueryEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLenum target', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glEndTransformFeedback' },
{ 'name': 'glEndTransformFeedbackEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'void', },
{ 'return_type': 'GLsync',
'versions': [{ 'name': 'glFenceSync',
'extensions': ['GL_ARB_sync'] }],
'arguments': 'GLenum condition, GLbitfield flags', },
{ 'return_type': 'GLsync',
'versions': [{ 'name': 'glFenceSyncAPPLE',
'extensions': ['GL_APPLE_sync'] }],
'arguments': 'GLenum condition, GLbitfield flags', },
{ 'return_type': 'void',
'names': ['glFinish'],
'arguments': 'void', },
{ 'return_type': 'void',
'known_as': 'glFinishFenceAPPLE',
'versions': [{ 'name': 'glFinishFenceAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLuint fence', },
{ 'return_type': 'void',
'names': ['glFinishFenceNV'],
'arguments': 'GLuint fence', },
{ 'return_type': 'void',
'names': ['glFlush'],
'arguments': 'void', },
{ 'return_type': 'void',
'versions': [{'name': 'glFlushMappedBufferRange',
'extensions': ['GL_ARB_map_buffer_range']},
{'name': 'glFlushMappedBufferRangeEXT'}],
'arguments': 'GLenum target, GLintptr offset, GLsizeiptr length', },
{ 'return_type': 'void',
'names': ['glFramebufferParameteri'],
'arguments': 'GLenum target, GLenum pname, GLint param', },
{ 'return_type': 'void',
'names': ['glFramebufferRenderbufferEXT', 'glFramebufferRenderbuffer'],
'arguments':
'GLenum target, GLenum attachment, GLenum renderbuffertarget, '
'GLuint renderbuffer', },
{ 'return_type': 'void',
'names': ['glFramebufferTexture2DEXT', 'glFramebufferTexture2D'],
'arguments':
'GLenum target, GLenum attachment, GLenum textarget, GLuint texture, '
'GLint level', },
{ 'return_type': 'void',
'versions': [{'name': 'glFramebufferTexture2DMultisampleEXT'},
{'name': 'glFramebufferTexture2DMultisampleIMG'}],
'arguments':
'GLenum target, GLenum attachment, GLenum textarget, GLuint texture, '
'GLint level, GLsizei samples', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glFramebufferTextureLayer' }],
'arguments': 'GLenum target, GLenum attachment, GLuint texture, GLint level, '
'GLint layer', },
{ 'return_type': 'void',
'versions': [{'name': 'glFramebufferTextureMultiviewOVR',
'extensions': ['GL_OVR_multiview2']}],
'arguments': 'GLenum target, GLenum attachment, GLuint texture, GLint level, '
'GLint baseViewIndex, GLsizei numViews', },
{ 'return_type': 'void',
'names': ['glFrontFace'],
'arguments': 'GLenum mode', },
{ 'return_type': 'void',
'names': ['glGenBuffers'],
'known_as': 'glGenBuffersARB',
'arguments': 'GLsizei n, GLuint* buffers', },
{ 'return_type': 'void',
'names': ['glGenerateMipmapEXT', 'glGenerateMipmap'],
'arguments': 'GLenum target', },
{ 'return_type': 'void',
'known_as': 'glGenFencesAPPLE',
'versions': [{ 'name': 'glGenFencesAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLsizei n, GLuint* fences', },
{ 'return_type': 'void',
'names': ['glGenFencesNV'],
'arguments': 'GLsizei n, GLuint* fences', },
{ 'return_type': 'void',
'names': ['glGenFramebuffersEXT', 'glGenFramebuffers'],
'arguments': 'GLsizei n, GLuint* framebuffers', },
{ 'return_type': 'GLuint',
'names': ['glGenPathsNV'],
'versions': [{ 'name': 'glGenPathsNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glGenPathsCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei range' },
{ 'return_type': 'GLuint',
'names': ['glGenProgramPipelines'],
'arguments': 'GLsizei n, GLuint* pipelines' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGenQueries' },
{ 'name': 'glGenQueriesARB', },
{ 'name' : 'glGenQueriesEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLsizei n, GLuint* ids', },
{ 'return_type': 'void',
'names': ['glGenRenderbuffersEXT', 'glGenRenderbuffers'],
'arguments': 'GLsizei n, GLuint* renderbuffers', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGenSamplers',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLsizei n, GLuint* samplers', },
{ 'return_type': 'void',
'names': ['glGenSemaphoresEXT'],
'arguments': 'GLsizei n, GLuint* semaphores', },
{ 'return_type': 'void',
'names': ['glGenTextures'],
'arguments': 'GLsizei n, GLuint* textures', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGenTransformFeedbacks',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'GLsizei n, GLuint* ids', },
{ 'return_type': 'void',
'known_as': 'glGenVertexArraysOES',
'versions': [{ 'name': 'glGenVertexArrays',
'extensions': ['GL_ARB_vertex_array_object'], },
{ 'name': 'glGenVertexArraysOES' },
{ 'name': 'glGenVertexArraysAPPLE',
'extensions': ['GL_APPLE_vertex_array_object'] }],
'arguments': 'GLsizei n, GLuint* arrays', },
{ 'return_type': 'void',
'names': ['glGetActiveAttrib'],
'arguments':
'GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, '
'GLint* size, GLenum* type, char* name', },
{ 'return_type': 'void',
'names': ['glGetActiveUniform'],
'arguments':
'GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, '
'GLint* size, GLenum* type, char* name', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetActiveUniformBlockiv' }],
'arguments': 'GLuint program, GLuint uniformBlockIndex, GLenum pname, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetActiveUniformBlockivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLuint uniformBlockIndex, GLenum pname, '
'GLsizei bufSize, GLsizei* length, GLint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetActiveUniformBlockName' }],
'arguments': 'GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, '
'GLsizei* length, char* uniformBlockName', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetActiveUniformsiv' }],
'arguments': 'GLuint program, GLsizei uniformCount, '
'const GLuint* uniformIndices, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'names': ['glGetAttachedShaders'],
'arguments':
'GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders', },
{ 'return_type': 'GLint',
'names': ['glGetAttribLocation'],
'arguments': 'GLuint program, const char* name', },
{ 'return_type': 'void',
'names': ['glGetBooleani_v'],
'arguments': 'GLenum target, GLuint index, GLboolean* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetBooleani_vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLuint index, GLsizei bufSize, GLsizei* length, '
'GLboolean* data', },
{ 'return_type': 'void',
'names': ['glGetBooleanv'],
'arguments': 'GLenum pname, GLboolean* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetBooleanvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLsizei bufSize, GLsizei* length, GLboolean* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetBufferParameteri64vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint64* params', },
{ 'return_type': 'void',
'names': ['glGetBufferParameteriv'],
'arguments': 'GLenum target, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetBufferParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetBufferPointervRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'void** params', },
{ 'return_type': 'GLuint',
'versions': [{ 'name': 'glGetDebugMessageLog' },
{ 'name': 'glGetDebugMessageLogKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLuint count, GLsizei bufSize, GLenum* sources, GLenum* types, '
'GLuint* ids, GLenum* severities, GLsizei* lengths, char* messageLog', },
{ 'return_type': 'GLenum',
'names': ['glGetError'],
'arguments': 'void',
'logging_code': """
GL_SERVICE_LOG("GL_RESULT: " << GLEnums::GetStringError(result));
""", },
{ 'return_type': 'void',
'names': ['glGetFenceivNV'],
'arguments': 'GLuint fence, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'names': ['glGetFloatv'],
'arguments': 'GLenum pname, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetFloatvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLsizei bufSize, GLsizei* length, GLfloat* data', },
{ 'return_type': 'GLint',
'versions': [{'name': 'glGetFragDataIndex',
'extensions': ['GL_ARB_blend_func_extended']},
{'name': 'glGetFragDataIndexEXT',
'extensions': ['GL_EXT_blend_func_extended']}],
'arguments': 'GLuint program, const char* name', },
{ 'return_type': 'GLint',
'versions': [{ 'name': 'glGetFragDataLocation' }],
'arguments': 'GLuint program, const char* name', },
{ 'return_type': 'void',
'names': ['glGetFramebufferAttachmentParameterivEXT',
'glGetFramebufferAttachmentParameteriv'],
'arguments': 'GLenum target, '
'GLenum attachment, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetFramebufferAttachmentParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum attachment, GLenum pname, GLsizei bufSize, '
'GLsizei* length, GLint* params', },
{ 'return_type': 'void',
'names': ['glGetFramebufferParameteriv'],
'arguments': 'GLenum target, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetFramebufferParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'GLenum',
'names': ['glGetGraphicsResetStatusARB',
'glGetGraphicsResetStatusKHR',
'glGetGraphicsResetStatusEXT',
'glGetGraphicsResetStatus'],
'arguments': 'void', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetInteger64i_v' }],
'arguments': 'GLenum target, GLuint index, GLint64* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetInteger64i_vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLuint index, GLsizei bufSize, GLsizei* length, '
'GLint64* data', },
{ 'return_type': 'void',
'names': ['glGetInteger64v'],
'arguments': 'GLenum pname, GLint64* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetInteger64vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLsizei bufSize, GLsizei* length, GLint64* data', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetIntegeri_v' }],
'arguments': 'GLenum target, GLuint index, GLint* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetIntegeri_vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLuint index, GLsizei bufSize, GLsizei* length, '
'GLint* data', },
{ 'return_type': 'void',
'names': ['glGetIntegerv'],
'arguments': 'GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetIntegervRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLsizei bufSize, GLsizei* length, GLint* data', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetInternalformativ',
'extensions': ['GL_ARB_internalformat_query']}],
'arguments': 'GLenum target, GLenum internalformat, GLenum pname, '
'GLsizei bufSize, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetInternalformativRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, '
'GLsizei* length, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetInternalformatSampleivNV',
'extensions': ['GL_NV_internalformat_sample_query']}],
'arguments': 'GLenum target, GLenum internalformat, GLsizei samples, '
'GLenum pname, GLsizei bufSize, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetMultisamplefv',
'extensions': ['GL_ARB_texture_multisample']}],
'arguments': 'GLenum pname, GLuint index, GLfloat* val', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetMultisamplefvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLuint index, GLsizei bufSize, GLsizei* length, '
'GLfloat* val', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetnUniformfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetnUniformivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetnUniformuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetObjectLabel' },
{ 'name': 'glGetObjectLabelKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, '
'char* label', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetObjectPtrLabel' },
{ 'name': 'glGetObjectPtrLabelKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments': 'void* ptr, GLsizei bufSize, GLsizei* length, char* label', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetPointerv' },
{ 'name': 'glGetPointervKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments': 'GLenum pname, void** params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetPointervRobustANGLERobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum pname, GLsizei bufSize, GLsizei* length, void** params', },
{ 'return_type': 'void',
'known_as': 'glGetProgramBinary',
'versions': [{ 'name': 'glGetProgramBinaryOES' },
{ 'name': 'glGetProgramBinary',
'extensions': ['GL_ARB_get_program_binary'] }],
'arguments': 'GLuint program, GLsizei bufSize, GLsizei* length, '
'GLenum* binaryFormat, GLvoid* binary' },
{ 'return_type': 'void',
'names': ['glGetProgramInfoLog'],
'arguments':
'GLuint program, GLsizei bufsize, GLsizei* length, char* infolog', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetProgramInterfaceiv',
'extensions': ['GL_ARB_program_interface_query']}],
'arguments': 'GLuint program, GLenum programInterface, GLenum pname, '
'GLint* params'},
{ 'return_type': 'void',
'versions': [{'name': 'glGetProgramInterfaceivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLenum programInterface, GLenum pname, '
'GLsizei bufSize, GLsizei* length, GLint* params', },
{ 'return_type': 'void',
'names': ['glGetProgramiv'],
'arguments': 'GLuint program, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetProgramivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'names': ['glGetProgramPipelineInfoLog'],
'arguments':
'GLuint pipeline, GLsizei bufSize, GLsizei* length, GLchar* infoLog', },
{ 'return_type': 'void',
'names': ['glGetProgramPipelineiv'],
'arguments':
'GLuint pipeline, GLenum pname, GLint* params', },
{ 'return_type': 'GLuint',
'versions': [{'name': 'glGetProgramResourceIndex',
'extensions': ['GL_ARB_program_interface_query']}],
'arguments':
'GLuint program, GLenum programInterface, const GLchar* name', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetProgramResourceiv',
'extensions': ['GL_ARB_program_interface_query']}],
'arguments': 'GLuint program, GLenum programInterface, GLuint index, '
'GLsizei propCount, const GLenum* props, GLsizei bufSize, '
'GLsizei* length, GLint* params'},
{ 'return_type': 'GLint',
'versions': [{'name': 'glGetProgramResourceLocation',
'extensions': ['GL_ARB_program_interface_query']}],
'arguments': 'GLuint program, GLenum programInterface, const char* name', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetProgramResourceName',
'extensions': ['GL_ARB_program_interface_query']}],
'arguments': 'GLuint program, GLenum programInterface, GLuint index, '
'GLsizei bufSize, GLsizei* length, GLchar* name'},
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetQueryiv' },
{ 'name': 'glGetQueryivARB' },
{ 'name': 'glGetQueryivEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLenum target, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetQueryivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetQueryObjecti64v',
'extensions': ['GL_ARB_timer_query'] },
{ 'name': 'glGetQueryObjecti64vEXT' }],
'arguments': 'GLuint id, GLenum pname, GLint64* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetQueryObjecti64vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint id, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint64* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetQueryObjectiv' },
{ 'name': 'glGetQueryObjectivARB' },
{ 'name': 'glGetQueryObjectivEXT' }],
'arguments': 'GLuint id, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetQueryObjectivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint id, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetQueryObjectui64v',
'extensions': ['GL_ARB_timer_query'] },
{ 'name': 'glGetQueryObjectui64vEXT' }],
'arguments': 'GLuint id, GLenum pname, GLuint64* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetQueryObjectui64vRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint id, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLuint64* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetQueryObjectuiv' },
{ 'name': 'glGetQueryObjectuivARB' },
{ 'name': 'glGetQueryObjectuivEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLuint id, GLenum pname, GLuint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetQueryObjectuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint id, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'names': ['glGetRenderbufferParameterivEXT', 'glGetRenderbufferParameteriv'],
'arguments': 'GLenum target, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetRenderbufferParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetSamplerParameterfv',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetSamplerParameterfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetSamplerParameterIivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetSamplerParameterIuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetSamplerParameteriv',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetSamplerParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'names': ['glGetShaderInfoLog'],
'arguments':
'GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog', },
{ 'return_type': 'void',
'names': ['glGetShaderiv'],
'arguments': 'GLuint shader, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetShaderivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint shader, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetShaderPrecisionFormat',
'extensions': ['GL_ARB_ES2_compatibility']}],
'arguments': 'GLenum shadertype, GLenum precisiontype, '
'GLint* range, GLint* precision', },
{ 'return_type': 'void',
'names': ['glGetShaderSource'],
'arguments':
'GLuint shader, GLsizei bufsize, GLsizei* length, char* source', },
{ 'return_type': 'const GLubyte*',
'names': ['glGetString'],
'arguments': 'GLenum name', },
{ 'return_type': 'const GLubyte*',
# This is needed for bootstrapping on the desktop GL core profile.
# It won't be called unless the expected GL version is used.
'versions': [{ 'name': 'glGetStringi',
'extensions': ['GL_CHROMIUM_glgetstringi_hack'] }],
'arguments': 'GLenum name, GLuint index', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetSynciv',
'extensions': ['GL_ARB_sync'] }],
'arguments':
'GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length,'
'GLint* values', },
{ 'return_type': 'void',
'names': ['glGetTexLevelParameterfv'],
'arguments': 'GLenum target, GLint level, GLenum pname, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexLevelParameterfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLenum pname, GLsizei bufSize, '
'GLsizei* length, GLfloat* params', },
{ 'return_type': 'void',
'names': ['glGetTexLevelParameteriv'],
'arguments': 'GLenum target, GLint level, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexLevelParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLenum pname, GLsizei bufSize, '
'GLsizei* length, GLint* params', },
{ 'return_type': 'void',
'names': ['glGetTexParameterfv'],
'arguments': 'GLenum target, GLenum pname, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexParameterfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexParameterIivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexParameterIuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'names': ['glGetTexParameteriv'],
'arguments': 'GLenum target, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetTexParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetTransformFeedbackVarying' },
{ 'name': 'glGetTransformFeedbackVaryingEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'GLuint program, GLuint index, GLsizei bufSize, '
'GLsizei* length, GLsizei* size, GLenum* type, char* name', },
{ 'return_type': 'void',
'names': ['glGetTranslatedShaderSourceANGLE'],
'arguments':
'GLuint shader, GLsizei bufsize, GLsizei* length, char* source', },
{ 'return_type': 'GLuint',
'versions': [{ 'name': 'glGetUniformBlockIndex' }],
'arguments': 'GLuint program, const char* uniformBlockName', },
{ 'return_type': 'void',
'names': ['glGetUniformfv'],
'arguments': 'GLuint program, GLint location, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetUniformfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLfloat* params', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glGetUniformIndices' }],
'arguments': 'GLuint program, GLsizei uniformCount, '
'const char* const* uniformNames, GLuint* uniformIndices', },
{ 'return_type': 'void',
'names': ['glGetUniformiv'],
'arguments': 'GLuint program, GLint location, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetUniformivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'GLint',
'names': ['glGetUniformLocation'],
'arguments': 'GLuint program, const char* name', },
{ 'return_type': 'void',
'names': ['glGetUniformuiv'],
'arguments': 'GLuint program, GLint location, GLuint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetUniformuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint program, GLint location, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'names': ['glGetVertexAttribfv'],
'arguments': 'GLuint index, GLenum pname, GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetVertexAttribfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint index, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetVertexAttribIivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint index, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetVertexAttribIuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint index, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLuint* params', },
{ 'return_type': 'void',
'names': ['glGetVertexAttribiv'],
'arguments': 'GLuint index, GLenum pname, GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetVertexAttribivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint index, GLenum pname, GLsizei bufSize, GLsizei* length, '
'GLint* params', },
{ 'return_type': 'void',
'names': ['glGetVertexAttribPointerv'],
'arguments': 'GLuint index, GLenum pname, void** pointer', },
{ 'return_type': 'void',
'versions': [{'name': 'glGetVertexAttribPointervRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint index, GLenum pname, GLsizei bufSize, GLsizei* length, '
'void** pointer', },
{ 'return_type': 'void',
'names': ['glHint'],
'arguments': 'GLenum target, GLenum mode', },
{ 'return_type': 'void',
'names': ['glImportMemoryFdEXT'],
'arguments': 'GLuint memory, GLuint64 size, GLenum handleType, GLint fd', },
{ 'return_type': 'void',
'names': ['glImportSemaphoreFdEXT'],
'arguments': 'GLuint semaphore, GLenum handleType, GLint fd', },
{ 'return_type': 'void',
'names': ['glInsertEventMarkerEXT'],
'arguments': 'GLsizei length, const char* marker', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glInvalidateFramebuffer' }],
'arguments': 'GLenum target, GLsizei numAttachments, '
'const GLenum* attachments' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glInvalidateSubFramebuffer' }],
'arguments':
'GLenum target, GLsizei numAttachments, const GLenum* attachments, '
'GLint x, GLint y, GLint width, GLint height', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glInvalidateTextureANGLE',
'extensions': ['GL_ANGLE_texture_external_update'] } ],
'arguments': 'GLenum target', },
{ 'return_type': 'GLboolean',
'names': ['glIsBuffer'],
'arguments': 'GLuint buffer', },
{ 'return_type': 'GLboolean',
'names': ['glIsEnabled'],
'arguments': 'GLenum cap', },
{ 'return_type': 'GLboolean',
'known_as': 'glIsFenceAPPLE',
'versions': [{ 'name': 'glIsFenceAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLuint fence', },
{ 'return_type': 'GLboolean',
'names': ['glIsFenceNV'],
'arguments': 'GLuint fence', },
{ 'return_type': 'GLboolean',
'names': ['glIsFramebufferEXT', 'glIsFramebuffer'],
'arguments': 'GLuint framebuffer', },
{ 'return_type': 'GLboolean',
'names': ['glIsPathNV'],
'versions': [{ 'name': 'glIsPathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glIsPathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path' },
{ 'return_type': 'GLboolean',
'names': ['glIsProgram'],
'arguments': 'GLuint program', },
{ 'return_type': 'GLboolean',
'names': ['glIsProgramPipeline'],
'arguments': 'GLuint pipeline', },
{ 'return_type': 'GLboolean',
'versions': [{ 'name': 'glIsQuery' },
{ 'name': 'glIsQueryARB' },
{ 'name': 'glIsQueryEXT',
'extensions': ['GL_EXT_occlusion_query_boolean'] }],
'arguments': 'GLuint query', },
{ 'return_type': 'GLboolean',
'names': ['glIsRenderbufferEXT', 'glIsRenderbuffer'],
'arguments': 'GLuint renderbuffer', },
{ 'return_type': 'GLboolean',
'versions': [{ 'name': 'glIsSampler',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler', },
{ 'return_type': 'GLboolean',
'names': ['glIsShader'],
'arguments': 'GLuint shader', },
{ 'return_type': 'GLboolean',
'versions': [{ 'name': 'glIsSync',
'extensions': ['GL_ARB_sync'] }],
'arguments': 'GLsync sync', },
{ 'return_type': 'GLboolean',
'versions': [{ 'name': 'glIsSyncAPPLE',
'extensions': ['GL_APPLE_sync'] }],
'arguments': 'GLsync sync', },
{ 'return_type': 'GLboolean',
'names': ['glIsTexture'],
'arguments': 'GLuint texture', },
{ 'return_type': 'GLboolean',
'versions': [{ 'name': 'glIsTransformFeedback',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'GLuint id', },
{ 'return_type': 'GLboolean',
'known_as': 'glIsVertexArrayOES',
'versions': [{ 'name': 'glIsVertexArray',
'extensions': ['GL_ARB_vertex_array_object'], },
{ 'name': 'glIsVertexArrayOES' },
{ 'name': 'glIsVertexArrayAPPLE',
'extensions': ['GL_APPLE_vertex_array_object'] }],
'arguments': 'GLuint array' },
{ 'return_type': 'void',
'names': ['glLineWidth'],
'arguments': 'GLfloat width', },
{ 'return_type': 'void',
'names': ['glLinkProgram'],
'arguments': 'GLuint program', },
{ 'return_type': 'void*',
'known_as': 'glMapBuffer',
'names': ['glMapBufferOES', 'glMapBuffer'],
'arguments': 'GLenum target, GLenum access', },
{ 'return_type': 'void*',
'known_as': 'glMapBufferRange',
'versions': [{ 'name': 'glMapBufferRange',
'extensions': ['GL_ARB_map_buffer_range'] },
{ 'name': 'glMapBufferRangeEXT',
'extensions': ['GL_EXT_map_buffer_range'] }],
'arguments':
'GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access', },
{ 'return_type': 'void',
'known_as': 'glMatrixLoadfEXT',
'versions': [{ 'name': 'glMatrixLoadfEXT',
'extensions': ['GL_EXT_direct_state_access',
'GL_NV_path_rendering'] },
{ 'name': 'glMatrixLoadfCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLenum matrixMode, const GLfloat* m' },
{ 'return_type': 'void',
'known_as': 'glMatrixLoadIdentityEXT',
'versions': [{ 'name': 'glMatrixLoadIdentityEXT',
'extensions': ['GL_EXT_direct_state_access',
'GL_NV_path_rendering'] },
{ 'name': 'glMatrixLoadIdentityCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLenum matrixMode' },
{'return_type': 'void',
'known_as': 'glMaxShaderCompilerThreadsKHR',
'versions': [{ 'name': 'glMaxShaderCompilerThreadsKHR',
'extensions': ['GL_KHR_parallel_shader_compile'] }],
'arguments': 'GLuint count', },
{ 'return_type': 'void',
'names': ['glMemoryBarrierByRegion'],
'arguments': 'GLbitfield barriers', },
{'return_type': 'void',
'known_as': 'glMemoryBarrierEXT',
'versions': [{ 'name': 'glMemoryBarrier',
'extensions': ['GL_ARB_shader_image_load_store'] },
{ 'name': 'glMemoryBarrierEXT',
'extensions': ['GL_EXT_shader_image_load_store'] }],
'arguments': 'GLbitfield barriers', },
{ 'return_type': 'void',
'names': ['glMinSampleShading'],
'arguments': 'GLfloat value', },
{ 'return_type': 'void',
'versions' : [{'name': 'glMultiDrawArraysANGLE',
'extensions': ['GL_ANGLE_multi_draw'] }],
'arguments': 'GLenum mode, const GLint* firsts, '
'const GLsizei* counts, GLsizei drawcount', },
{ 'return_type': 'void',
'versions' : [{'name': 'glMultiDrawArraysInstancedANGLE',
'extensions': ['GL_ANGLE_multi_draw'] }],
'arguments': 'GLenum mode, const GLint* firsts, '
'const GLsizei* counts, const GLsizei* instanceCounts, '
'GLsizei drawcount', },
{ 'return_type': 'void',
'versions' : [{'name': 'glMultiDrawElementsANGLE',
'extensions': ['GL_ANGLE_multi_draw'] }],
'arguments': 'GLenum mode, const GLsizei* counts, '
'GLenum type, const GLvoid* const* indices, '
'GLsizei drawcount', },
{ 'return_type': 'void',
'versions' : [{'name': 'glMultiDrawElementsInstancedANGLE',
'extensions': ['GL_ANGLE_multi_draw'] }],
'arguments': 'GLenum mode, const GLsizei* counts, '
'GLenum type, const GLvoid* const* indices, '
'const GLsizei* instanceCounts, GLsizei drawcount', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glObjectLabel' },
{ 'name': 'glObjectLabelKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLenum identifier, GLuint name, GLsizei length, const char* label', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glObjectPtrLabel' },
{ 'name': 'glObjectPtrLabelKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments': 'void* ptr, GLsizei length, const char* label', },
{ 'return_type': 'void',
'names': ['glPathCommandsNV'],
'versions': [{ 'name': 'glPathCommandsNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glPathCommandsCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLsizei numCommands, const GLubyte* commands, '
'GLsizei numCoords, GLenum coordType, const GLvoid* coords' },
{ 'return_type': 'void',
'names': ['glPathParameterfNV'],
'versions': [{ 'name': 'glPathParameterfNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glPathParameterfCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLenum pname, GLfloat value' },
{ 'return_type': 'void',
'names': ['glPathParameteriNV'],
'versions': [{ 'name': 'glPathParameteriNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glPathParameteriCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLenum pname, GLint value' },
{ 'return_type': 'void',
'names': ['glPathStencilFuncNV'],
'versions': [{ 'name': 'glPathStencilFuncNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glPathStencilFuncCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLenum func, GLint ref, GLuint mask' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glPauseTransformFeedback',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'void', },
{ 'return_type': 'void',
'names': ['glPixelStorei'],
'arguments': 'GLenum pname, GLint param', },
{ 'return_type': 'void',
'names': ['glPointParameteri'],
'arguments': 'GLenum pname, GLint param', },
{ 'return_type': 'void',
'names': ['glPolygonMode'],
'arguments': 'GLenum face, GLenum mode', },
{ 'return_type': 'void',
'names': ['glPolygonOffset'],
'arguments': 'GLfloat factor, GLfloat units', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glPopDebugGroup' },
{ 'name': 'glPopDebugGroupKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments': '', },
{ 'return_type': 'void',
'names': ['glPopGroupMarkerEXT'],
'arguments': 'void', },
{ 'return_type': 'void',
'names': ['glPrimitiveRestartIndex'],
'arguments': 'GLuint index', },
{ 'return_type': 'void',
'known_as': 'glProgramBinary',
'versions': [{ 'name': 'glProgramBinaryOES' },
{ 'name': 'glProgramBinary',
'extensions': ['GL_ARB_get_program_binary'] }],
'arguments': 'GLuint program, GLenum binaryFormat, '
'const GLvoid* binary, GLsizei length' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glProgramParameteri',
'extensions': ['GL_ARB_get_program_binary'] }],
'arguments': 'GLuint program, GLenum pname, GLint value' },
{ 'return_type': 'void',
'names': ['glProgramPathFragmentInputGenNV'],
'versions': [{ 'name': 'glProgramPathFragmentInputGenNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glProgramPathFragmentInputGenCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint program, GLint location, GLenum genMode, '
'GLint components, const GLfloat* coeffs',
'is_optional': True, },
{ 'return_type': 'void',
'names': ['glProgramUniform1f'],
'arguments': 'GLuint program, GLint location, GLfloat v0' },
{ 'return_type': 'void',
'names': ['glProgramUniform1fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform1i'],
'arguments': 'GLuint program, GLint location, GLint v0' },
{ 'return_type': 'void',
'names': ['glProgramUniform1iv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform1ui'],
'arguments': 'GLuint program, GLint location, GLuint v0' },
{ 'return_type': 'void',
'names': ['glProgramUniform1uiv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLuint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform2f'],
'arguments': 'GLuint program, GLint location, GLfloat v0, GLfloat v1' },
{ 'return_type': 'void',
'names': ['glProgramUniform2fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform2i'],
'arguments': 'GLuint program, GLint location, GLint v0, GLint v1' },
{ 'return_type': 'void',
'names': ['glProgramUniform2iv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform2ui'],
'arguments': 'GLuint program, GLint location, GLuint v0, GLuint v1' },
{ 'return_type': 'void',
'names': ['glProgramUniform2uiv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLuint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform3f'],
'arguments': 'GLuint program, GLint location, GLfloat v0, GLfloat v1, '
'GLfloat v2' },
{ 'return_type': 'void',
'names': ['glProgramUniform3fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform3i'],
'arguments': 'GLuint program, GLint location, GLint v0, GLint v1, GLint v2' },
{ 'return_type': 'void',
'names': ['glProgramUniform3iv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform3ui'],
'arguments': 'GLuint program, GLint location, GLuint v0, GLuint v1, '
'GLuint v2' },
{ 'return_type': 'void',
'names': ['glProgramUniform3uiv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLuint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform4f'],
'arguments': 'GLuint program, GLint location, GLfloat v0, GLfloat v1, '
'GLfloat v2, GLfloat v3' },
{ 'return_type': 'void',
'names': ['glProgramUniform4fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform4i'],
'arguments': 'GLuint program, GLint location, GLint v0, GLint v1, GLint v2, '
'GLint v3' },
{ 'return_type': 'void',
'names': ['glProgramUniform4iv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniform4ui'],
'arguments': 'GLuint program, GLint location, GLuint v0, GLuint v1, '
'GLuint v2, GLuint v3' },
{ 'return_type': 'void',
'names': ['glProgramUniform4uiv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'const GLuint* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix2fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix2x3fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix2x4fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix3fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix3x2fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix3x4fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix4fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix4x2fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'names': ['glProgramUniformMatrix4x3fv'],
'arguments': 'GLuint program, GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value' },
{ 'return_type': 'void',
'versions': [{ 'name': 'glPushDebugGroup' },
{ 'name': 'glPushDebugGroupKHR',
'extensions': ['GL_KHR_debug'] }],
'arguments':
'GLenum source, GLuint id, GLsizei length, const char* message', },
{ 'return_type': 'void',
'names': ['glPushGroupMarkerEXT'],
'arguments': 'GLsizei length, const char* marker', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glQueryCounter',
'extensions': ['GL_ARB_timer_query'] },
{ 'name': 'glQueryCounterEXT' }],
'arguments': 'GLuint id, GLenum target', },
{ 'return_type': 'void',
'names': ['glReadBuffer'],
'arguments': 'GLenum src', },
{ 'return_type': 'void',
'versions': [{'name': 'glReadnPixelsRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, '
'GLenum type, GLsizei bufSize, GLsizei* length, GLsizei* columns, '
'GLsizei* rows, void* data', },
{ 'return_type': 'void',
'names': ['glReadPixels'],
'arguments':
'GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, '
'GLenum type, void* pixels', },
{ 'return_type': 'void',
'versions': [{'name': 'glReadPixelsRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, '
'GLenum type, GLsizei bufSize, GLsizei* length, GLsizei* columns, '
'GLsizei* rows, void* pixels', },
{ 'return_type': 'void',
'names': ['glReleaseShaderCompiler'],
'arguments': 'void', },
{ 'return_type': 'void',
'names': ['glRenderbufferStorageEXT', 'glRenderbufferStorage'],
'arguments':
'GLenum target, GLenum internalformat, GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions' : [{'name': 'glRenderbufferStorageMultisample',
'extensions': ['GL_ARB_framebuffer_object']},
{'name': 'glRenderbufferStorageMultisampleANGLE'},
{'name': 'glRenderbufferStorageMultisampleEXT',
'extensions': ['GL_EXT_framebuffer_multisample'],
'explicit_only': True}],
'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, '
'GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions' : [{'name': 'glRenderbufferStorageMultisampleAdvancedAMD',
'extensions': ['GL_AMD_framebuffer_multisample_advanced'] ,
'explicit_only': True}],
'arguments': 'GLenum target, GLsizei samples, GLsizei storageSamples, '
'GLenum internalformat,GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions' : [{'name': 'glRenderbufferStorageMultisampleEXT',
'extensions': ['GL_EXT_multisampled_render_to_texture'],
'explicit_only': True},
{'name': 'glRenderbufferStorageMultisampleIMG'}],
'arguments': 'GLenum target, GLsizei samples, GLenum internalformat, '
'GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glRequestExtensionANGLE',
'extensions': ['GL_ANGLE_request_extension'] }],
'arguments': 'const char* name', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glResumeTransformFeedback',
'extensions': ['GL_ARB_transform_feedback2'] }],
'arguments': 'void', },
{ 'return_type': 'void',
'names': ['glSampleCoverage'],
'arguments': 'GLclampf value, GLboolean invert', },
{ 'return_type': 'void',
'names': ['glSampleMaski'],
'arguments': 'GLuint maskNumber, GLbitfield mask', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glSamplerParameterf',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, GLfloat param', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glSamplerParameterfv',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, const GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glSamplerParameterfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, const GLfloat* param', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glSamplerParameteri',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, GLint param', },
{ 'return_type': 'void',
'versions': [{'name': 'glSamplerParameterIivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, const GLint* param', },
{ 'return_type': 'void',
'versions': [{'name': 'glSamplerParameterIuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, const GLuint* param', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glSamplerParameteriv',
'extensions': ['GL_ARB_sampler_objects'] }],
'arguments': 'GLuint sampler, GLenum pname, const GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glSamplerParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLuint sampler, GLenum pname, GLsizei bufSize, const GLint* param', },
{ 'return_type': 'void',
'names': ['glScissor'],
'arguments': 'GLint x, GLint y, GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'known_as': 'glSetFenceAPPLE',
'versions': [{ 'name': 'glSetFenceAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLuint fence', },
{ 'return_type': 'void',
'names': ['glSetFenceNV'],
'arguments': 'GLuint fence, GLenum condition', },
{ 'return_type': 'void',
'names': ['glShaderBinary'],
'arguments': 'GLsizei n, const GLuint* shaders, GLenum binaryformat, '
'const void* binary, GLsizei length', },
{ 'return_type': 'void',
'names': ['glShaderSource'],
'arguments': 'GLuint shader, GLsizei count, const char* const* str, '
'const GLint* length',
'logging_code': """
GL_SERVICE_LOG_CODE_BLOCK({
for (GLsizei ii = 0; ii < count; ++ii) {
if (str[ii]) {
if (length && length[ii] >= 0) {
std::string source(str[ii], length[ii]);
GL_SERVICE_LOG(" " << ii << ": ---\\n" << source << "\\n---");
} else {
GL_SERVICE_LOG(" " << ii << ": ---\\n" << str[ii] << "\\n---");
}
} else {
GL_SERVICE_LOG(" " << ii << ": NULL");
}
}
});
""", },
{ 'return_type': 'void',
'names': ['glSignalSemaphoreEXT'],
'arguments': 'GLuint semaphore, GLuint numBufferBarriers, '
'const GLuint* buffers, GLuint numTextureBarriers, '
'const GLuint* textures, const GLenum* dstLayouts', },
{ 'return_type': 'void',
'names': ['glStencilFillPathInstancedNV'],
'versions': [{ 'name': 'glStencilFillPathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilFillPathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, '
'const GLfloat* transformValues' },
{ 'return_type': 'void',
'names': ['glStencilFillPathNV'],
'versions': [{ 'name': 'glStencilFillPathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilFillPathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLenum fillMode, GLuint mask' },
{ 'return_type': 'void',
'names': ['glStencilFunc'],
'arguments': 'GLenum func, GLint ref, GLuint mask', },
{ 'return_type': 'void',
'names': ['glStencilFuncSeparate'],
'arguments': 'GLenum face, GLenum func, GLint ref, GLuint mask', },
{ 'return_type': 'void',
'names': ['glStencilMask'],
'arguments': 'GLuint mask', },
{ 'return_type': 'void',
'names': ['glStencilMaskSeparate'],
'arguments': 'GLenum face, GLuint mask', },
{ 'return_type': 'void',
'names': ['glStencilOp'],
'arguments': 'GLenum fail, GLenum zfail, GLenum zpass', },
{ 'return_type': 'void',
'names': ['glStencilOpSeparate'],
'arguments': 'GLenum face, GLenum fail, GLenum zfail, GLenum zpass', },
{ 'return_type': 'void',
'names': ['glStencilStrokePathInstancedNV'],
'versions': [{ 'name': 'glStencilStrokePathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilStrokePathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLint ref, GLuint mask, GLenum transformType, '
'const GLfloat* transformValues' },
{ 'return_type': 'void',
'names': ['glStencilStrokePathNV'],
'versions': [{ 'name': 'glStencilStrokePathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilStrokePathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLint reference, GLuint mask' },
{ 'return_type': 'void',
'names': ['glStencilThenCoverFillPathInstancedNV'],
'versions': [{ 'name': 'glStencilThenCoverFillPathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilThenCoverFillPathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, '
'GLenum transformType, const GLfloat* transformValues',
'is_optional': True, },
{ 'return_type': 'void',
'names': ['glStencilThenCoverFillPathNV'],
'versions': [{ 'name': 'glStencilThenCoverFillPathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilThenCoverFillPathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode',
'is_optional': True, },
{ 'return_type': 'void',
'names': ['glStencilThenCoverStrokePathInstancedNV'],
'versions': [{ 'name': 'glStencilThenCoverStrokePathInstancedNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilThenCoverStrokePathInstancedCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLsizei numPaths, GLenum pathNameType, const void* paths, '
'GLuint pathBase, GLint ref, GLuint mask, GLenum coverMode, '
'GLenum transformType, const GLfloat* transformValues',
'is_optional': True, },
{ 'return_type': 'void',
'names': ['glStencilThenCoverStrokePathNV'],
'versions': [{ 'name': 'glStencilThenCoverStrokePathNV',
'extensions': ['GL_NV_path_rendering'] },
{ 'name': 'glStencilThenCoverStrokePathCHROMIUM',
'extensions': ['GL_CHROMIUM_path_rendering'] }],
'arguments': 'GLuint path, GLint reference, GLuint mask, GLenum coverMode',
'is_optional': True, },
{ 'return_type': 'GLboolean',
'known_as': 'glTestFenceAPPLE',
'versions': [{ 'name': 'glTestFenceAPPLE',
'extensions': ['GL_APPLE_fence'] }],
'arguments': 'GLuint fence', },
{ 'return_type': 'GLboolean',
'names': ['glTestFenceNV'],
'arguments': 'GLuint fence', },
{ 'return_type': 'void',
'names': ['glTexBuffer', 'glTexBufferOES', 'glTexBufferEXT'],
'arguments': 'GLenum target, GLenum internalformat, GLuint buffer', } ,
{ 'return_type': 'void',
'names': ['glTexBufferRange', 'glTexBufferRangeOES', 'glTexBufferRangeEXT'],
'arguments':
'GLenum target, GLenum internalformat, GLuint buffer, '
'GLintptr offset, GLsizeiptr size', },
{ 'return_type': 'void',
'names': ['glTexImage2D'],
'arguments':
'GLenum target, GLint level, GLint internalformat, GLsizei width, '
'GLsizei height, GLint border, GLenum format, GLenum type, '
'const void* pixels', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTexImage2DExternalANGLE',
'extensions': ['GL_ANGLE_texture_external_update'] } ],
'arguments': 'GLenum target, GLint level, GLint internalformat, '
'GLsizei width, GLsizei height, GLint border, GLenum format, '
'GLenum type', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexImage2DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint internalformat, GLsizei width, '
'GLsizei height, GLint border, GLenum format, GLenum type, '
'GLsizei bufSize, const void* pixels', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTexImage3D' }],
'arguments':
'GLenum target, GLint level, GLint internalformat, GLsizei width, '
'GLsizei height, GLsizei depth, GLint border, GLenum format, '
'GLenum type, const void* pixels', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexImage3DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint internalformat, GLsizei width, '
'GLsizei height, GLsizei depth, GLint border, GLenum format, '
'GLenum type, GLsizei bufSize, const void* pixels', },
{ 'return_type': 'void',
'names': ['glTexParameterf'],
'arguments': 'GLenum target, GLenum pname, GLfloat param', },
{ 'return_type': 'void',
'names': ['glTexParameterfv'],
'arguments': 'GLenum target, GLenum pname, const GLfloat* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexParameterfvRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, const GLfloat* params', },
{ 'return_type': 'void',
'names': ['glTexParameteri'],
'arguments': 'GLenum target, GLenum pname, GLint param', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexParameterIivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, const GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexParameterIuivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, const GLuint* params', },
{ 'return_type': 'void',
'names': ['glTexParameteriv'],
'arguments': 'GLenum target, GLenum pname, const GLint* params', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexParameterivRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLenum pname, GLsizei bufSize, const GLint* params', },
{ 'return_type': 'void',
'known_as': 'glTexStorage2DEXT',
'versions': [{ 'name': 'glTexStorage2D',
'extensions': ['GL_ARB_texture_storage'] },
{ 'name': 'glTexStorage2DEXT',
'extensions': ['GL_EXT_texture_storage'] }],
'arguments': 'GLenum target, GLsizei levels, GLenum internalformat, '
'GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'names': ['glTexStorage2DMultisample'],
'arguments':
'GLenum target, GLsizei samples, GLenum internalformat, '
'GLsizei width, GLsizei height, GLboolean fixedsamplelocations', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTexStorage3D',
'extensions': ['GL_ARB_texture_storage'] }],
'arguments': 'GLenum target, GLsizei levels, GLenum internalformat, '
'GLsizei width, GLsizei height, GLsizei depth', },
{ 'return_type': 'void',
'names': [ 'glTexStorageMem2DEXT'] ,
'arguments': 'GLenum target, GLsizei levels, GLenum internalFormat, '
'GLsizei width, GLsizei height, GLuint memory, GLuint64 offset'},
{ 'return_type': 'void',
'names': ['glTexSubImage2D'],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLsizei width, GLsizei height, GLenum format, GLenum type, '
'const void* pixels', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexSubImage2DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLsizei width, GLsizei height, GLenum format, GLenum type, '
'GLsizei bufSize, const void* pixels', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTexSubImage3D' }],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, '
'GLenum format, GLenum type, const void* pixels', },
{ 'return_type': 'void',
'versions': [{'name': 'glTexSubImage3DRobustANGLE',
'extensions': ['GL_ANGLE_robust_client_memory']}],
'arguments':
'GLenum target, GLint level, GLint xoffset, GLint yoffset, '
'GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, '
'GLenum format, GLenum type, GLsizei bufSize, const void* pixels', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glTransformFeedbackVaryings' },
{ 'name': 'glTransformFeedbackVaryingsEXT',
'extension': ['GL_EXT_transform_feedback'] }],
'arguments': 'GLuint program, GLsizei count, const char* const* varyings, '
'GLenum bufferMode', },
{ 'return_type': 'void',
'names': ['glUniform1f'],
'arguments': 'GLint location, GLfloat x', },
{ 'return_type': 'void',
'names': ['glUniform1fv'],
'arguments': 'GLint location, GLsizei count, const GLfloat* v', },
{ 'return_type': 'void',
'names': ['glUniform1i'],
'arguments': 'GLint location, GLint x', },
{ 'return_type': 'void',
'names': ['glUniform1iv'],
'arguments': 'GLint location, GLsizei count, const GLint* v', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform1ui' }],
'arguments': 'GLint location, GLuint v0', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform1uiv' }],
'arguments': 'GLint location, GLsizei count, const GLuint* v', },
{ 'return_type': 'void',
'names': ['glUniform2f'],
'arguments': 'GLint location, GLfloat x, GLfloat y', },
{ 'return_type': 'void',
'names': ['glUniform2fv'],
'arguments': 'GLint location, GLsizei count, const GLfloat* v', },
{ 'return_type': 'void',
'names': ['glUniform2i'],
'arguments': 'GLint location, GLint x, GLint y', },
{ 'return_type': 'void',
'names': ['glUniform2iv'],
'arguments': 'GLint location, GLsizei count, const GLint* v', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform2ui' }],
'arguments': 'GLint location, GLuint v0, GLuint v1', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform2uiv' }],
'arguments': 'GLint location, GLsizei count, const GLuint* v', },
{ 'return_type': 'void',
'names': ['glUniform3f'],
'arguments': 'GLint location, GLfloat x, GLfloat y, GLfloat z', },
{ 'return_type': 'void',
'names': ['glUniform3fv'],
'arguments': 'GLint location, GLsizei count, const GLfloat* v', },
{ 'return_type': 'void',
'names': ['glUniform3i'],
'arguments': 'GLint location, GLint x, GLint y, GLint z', },
{ 'return_type': 'void',
'names': ['glUniform3iv'],
'arguments': 'GLint location, GLsizei count, const GLint* v', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform3ui' }],
'arguments': 'GLint location, GLuint v0, GLuint v1, GLuint v2', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform3uiv' }],
'arguments': 'GLint location, GLsizei count, const GLuint* v', },
{ 'return_type': 'void',
'names': ['glUniform4f'],
'arguments': 'GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w', },
{ 'return_type': 'void',
'names': ['glUniform4fv'],
'arguments': 'GLint location, GLsizei count, const GLfloat* v', },
{ 'return_type': 'void',
'names': ['glUniform4i'],
'arguments': 'GLint location, GLint x, GLint y, GLint z, GLint w', },
{ 'return_type': 'void',
'names': ['glUniform4iv'],
'arguments': 'GLint location, GLsizei count, const GLint* v', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform4ui' }],
'arguments': 'GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniform4uiv' }],
'arguments': 'GLint location, GLsizei count, const GLuint* v', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformBlockBinding' }],
'arguments': 'GLuint program, GLuint uniformBlockIndex, '
'GLuint uniformBlockBinding', },
{ 'return_type': 'void',
'names': ['glUniformMatrix2fv'],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix2x3fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix2x4fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'names': ['glUniformMatrix3fv'],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix3x2fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix3x4fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'names': ['glUniformMatrix4fv'],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix4x2fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glUniformMatrix4x3fv' }],
'arguments': 'GLint location, GLsizei count, '
'GLboolean transpose, const GLfloat* value', },
{ 'return_type': 'GLboolean',
'known_as': 'glUnmapBuffer',
'names': ['glUnmapBufferOES', 'glUnmapBuffer'],
'arguments': 'GLenum target', },
{ 'return_type': 'void',
'names': ['glUseProgram'],
'arguments': 'GLuint program', },
{ 'return_type': 'void',
'names': ['glUseProgramStages'],
'arguments': 'GLuint pipeline, GLbitfield stages, GLuint program', },
{ 'return_type': 'void',
'names': ['glValidateProgram'],
'arguments': 'GLuint program', },
{ 'return_type': 'void',
'names': ['glValidateProgramPipeline'],
'arguments': 'GLuint pipeline', },
{ 'return_type': 'void',
'names': ['glVertexAttrib1f'],
'arguments': 'GLuint indx, GLfloat x', },
{ 'return_type': 'void',
'names': ['glVertexAttrib1fv'],
'arguments': 'GLuint indx, const GLfloat* values', },
{ 'return_type': 'void',
'names': ['glVertexAttrib2f'],
'arguments': 'GLuint indx, GLfloat x, GLfloat y', },
{ 'return_type': 'void',
'names': ['glVertexAttrib2fv'],
'arguments': 'GLuint indx, const GLfloat* values', },
{ 'return_type': 'void',
'names': ['glVertexAttrib3f'],
'arguments': 'GLuint indx, GLfloat x, GLfloat y, GLfloat z', },
{ 'return_type': 'void',
'names': ['glVertexAttrib3fv'],
'arguments': 'GLuint indx, const GLfloat* values', },
{ 'return_type': 'void',
'names': ['glVertexAttrib4f'],
'arguments': 'GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w', },
{ 'return_type': 'void',
'names': ['glVertexAttrib4fv'],
'arguments': 'GLuint indx, const GLfloat* values', },
{ 'return_type': 'void',
'names': ['glVertexAttribBinding'],
'arguments': 'GLuint attribindex, GLuint bindingindex', },
{ 'return_type': 'void',
'known_as': 'glVertexAttribDivisorANGLE',
'names': ['glVertexAttribDivisorARB', 'glVertexAttribDivisorANGLE',
'glVertexAttribDivisorEXT', 'glVertexAttribDivisor'],
'arguments':
'GLuint index, GLuint divisor', },
{ 'return_type': 'void',
'names': ['glVertexAttribFormat'],
'arguments': 'GLuint attribindex, GLint size, GLenum type, '
'GLboolean normalized, GLuint relativeoffset', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glVertexAttribI4i' }],
'arguments': 'GLuint indx, GLint x, GLint y, GLint z, GLint w', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glVertexAttribI4iv' }],
'arguments': 'GLuint indx, const GLint* values', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glVertexAttribI4ui' }],
'arguments': 'GLuint indx, GLuint x, GLuint y, GLuint z, GLuint w', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glVertexAttribI4uiv' }],
'arguments': 'GLuint indx, const GLuint* values', },
{ 'return_type': 'void',
'names': ['glVertexAttribIFormat'],
'arguments': 'GLuint attribindex, GLint size, GLenum type, '
'GLuint relativeoffset', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glVertexAttribIPointer' }],
'arguments': 'GLuint indx, GLint size, GLenum type, GLsizei stride, '
'const void* ptr', },
{ 'return_type': 'void',
'names': ['glVertexAttribPointer'],
'arguments': 'GLuint indx, GLint size, GLenum type, GLboolean normalized, '
'GLsizei stride, const void* ptr', },
{ 'return_type': 'void',
'names': ['glVertexBindingDivisor'],
'arguments': 'GLuint bindingindex, GLuint divisor', },
{ 'return_type': 'void',
'names': ['glViewport'],
'arguments': 'GLint x, GLint y, GLsizei width, GLsizei height', },
{ 'return_type': 'void',
'names': ['glWaitSemaphoreEXT'],
'arguments': 'GLuint semaphore, GLuint numBufferBarriers, '
'const GLuint* buffers, GLuint numTextureBarriers, const GLuint* textures, '
'const GLenum* srcLayouts', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glWaitSync',
'extensions': ['GL_ARB_sync'] }],
'arguments':
'GLsync sync, GLbitfield flags, GLuint64 timeout', },
{ 'return_type': 'void',
'versions': [{ 'name': 'glWaitSyncAPPLE',
'extensions': ['GL_APPLE_sync'] }],
'arguments':
'GLsync sync, GLbitfield flags, GLuint64 timeout', },
{ 'return_type': 'void',
'names': ['glWindowRectanglesEXT'],
'arguments': 'GLenum mode, GLsizei n, const GLint* box', },
]
EGL_FUNCTIONS = [
{ 'return_type': 'EGLBoolean',
'names': ['eglBindAPI'],
'arguments': 'EGLenum api', },
{ 'return_type': 'EGLBoolean',
'names': ['eglBindTexImage'],
'arguments': 'EGLDisplay dpy, EGLSurface surface, EGLint buffer', },
{ 'return_type': 'EGLBoolean',
'names': ['eglChooseConfig'],
'arguments': 'EGLDisplay dpy, const EGLint* attrib_list, EGLConfig* configs, '
'EGLint config_size, EGLint* num_config', },
{ 'return_type': 'EGLint',
'versions': [{ 'name': 'eglClientWaitSyncKHR',
'extensions': [
'EGL_KHR_fence_sync',
'GL_CHROMIUM_egl_khr_fence_sync_hack'
] }],
'arguments': 'EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, '
'EGLTimeKHR timeout' },
{ 'return_type': 'EGLBoolean',
'names': ['eglCopyBuffers'],
'arguments':
'EGLDisplay dpy, EGLSurface surface, EGLNativePixmapType target', },
{ 'return_type': 'EGLContext',
'names': ['eglCreateContext'],
'arguments': 'EGLDisplay dpy, EGLConfig config, EGLContext share_context, '
'const EGLint* attrib_list', },
{ 'return_type': 'EGLImageKHR',
'versions': [{ 'name': 'eglCreateImageKHR',
'extensions':
['EGL_KHR_image_base', 'EGL_KHR_gl_texture_2D_image'] }],
'arguments':
'EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, '
'const EGLint* attrib_list' },
{ 'return_type': 'EGLSurface',
'names': ['eglCreatePbufferFromClientBuffer'],
'arguments':
'EGLDisplay dpy, EGLenum buftype, void* buffer, EGLConfig config, '
'const EGLint* attrib_list', },
{ 'return_type': 'EGLSurface',
'names': ['eglCreatePbufferSurface'],
'arguments': 'EGLDisplay dpy, EGLConfig config, const EGLint* attrib_list', },
{ 'return_type': 'EGLSurface',
'names': ['eglCreatePixmapSurface'],
'arguments': 'EGLDisplay dpy, EGLConfig config, EGLNativePixmapType pixmap, '
'const EGLint* attrib_list', },
{ 'return_type': 'EGLStreamKHR',
'versions': [{ 'name': 'eglCreateStreamKHR',
'extensions': ['EGL_KHR_stream'] }],
'arguments': 'EGLDisplay dpy, const EGLint* attrib_list' },
{ 'return_type': 'EGLBoolean',
'versions': [{'name': 'eglCreateStreamProducerD3DTextureANGLE',
'extensions':
['EGL_ANGLE_stream_producer_d3d_texture']}],
'arguments':
'EGLDisplay dpy, EGLStreamKHR stream, EGLAttrib* attrib_list', },
{ 'return_type': 'EGLSyncKHR',
'versions': [{ 'name': 'eglCreateSyncKHR',
'extensions': [
'EGL_KHR_fence_sync',
'GL_CHROMIUM_egl_khr_fence_sync_hack'
] }],
'arguments': 'EGLDisplay dpy, EGLenum type, const EGLint* attrib_list' },
{ 'return_type': 'EGLSurface',
'names': ['eglCreateWindowSurface'],
'arguments': 'EGLDisplay dpy, EGLConfig config, EGLNativeWindowType win, '
'const EGLint* attrib_list', },
{ 'return_type': 'EGLint',
'known_as': 'eglDebugMessageControlKHR',
'versions': [{ 'name': 'eglDebugMessageControlKHR',
'client_extensions': ['EGL_KHR_debug'], }],
'arguments': 'EGLDEBUGPROCKHR callback, const EGLAttrib* attrib_list', },
{ 'return_type': 'EGLBoolean',
'names': ['eglDestroyContext'],
'arguments'