aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Srbecky <dsrbecky@google.com>2015-08-03 17:25:22 +0000
committerandroid-build-merger <android-build-merger@google.com>2015-08-03 17:25:22 +0000
commit9978fc4edc0e9741cd15648bb52a4dcf3fff2ba5 (patch)
tree031a973717c5cd45373126d65981e90d2728dd14
parentc3468d83b12a4ed36408fdd99c73f1e5950f581c (diff)
parent58a74e6b0e80f33a4b2b3200a3ecab295196a95a (diff)
downloadgpu-9978fc4edc0e9741cd15648bb52a4dcf3fff2ba5.tar.gz
Add generated GLES api code.
automerge: 58a74e6 * commit '58a74e6b0e80f33a4b2b3200a3ecab295196a95a': Add generated GLES api code.
-rw-r--r--gfxapi/gles/api/android_extension_pack.api291
-rw-r--r--gfxapi/gles/api/asynchronous_queries.api122
-rw-r--r--gfxapi/gles/api/buffer_objects.api388
-rw-r--r--gfxapi/gles/api/draw_commands.api209
-rw-r--r--gfxapi/gles/api/extensions.api2736
-rw-r--r--gfxapi/gles/api/fragment_operations.api339
-rw-r--r--gfxapi/gles/api/framebuffer.api858
-rw-r--r--gfxapi/gles/api/glbitfield.api224
-rw-r--r--gfxapi/gles/api/glenum.api5329
-rw-r--r--gfxapi/gles/api/other.api135
-rw-r--r--gfxapi/gles/api/programs_and_shaders.api1603
-rw-r--r--gfxapi/gles/api/rasterization.api106
-rw-r--r--gfxapi/gles/api/state_queries.api965
-rw-r--r--gfxapi/gles/api/synchronization.api79
-rw-r--r--gfxapi/gles/api/textures_and_samplers.api1328
-rw-r--r--gfxapi/gles/api/transform_feedback.api118
-rw-r--r--gfxapi/gles/api/vertex_arrays.api402
-rw-r--r--tools/generate_gles_api/download.go49
-rw-r--r--tools/generate_gles_api/download_doc.go672
-rw-r--r--tools/generate_gles_api/download_reg.go228
-rw-r--r--tools/generate_gles_api/generate_api.go416
-rw-r--r--tools/generate_gles_api/generate_csv.go64
-rw-r--r--tools/generate_gles_api/main.go60
-rw-r--r--tools/generate_gles_api/util.go30
24 files changed, 16751 insertions, 0 deletions
diff --git a/gfxapi/gles/api/android_extension_pack.api b/gfxapi/gles/api/android_extension_pack.api
new file mode 100644
index 000000000..c6b8b6b3b
--- /dev/null
+++ b/gfxapi/gles/api/android_extension_pack.api
@@ -0,0 +1,291 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/blend_equation_advanced.txt","GL_KHR_blend_equation_advanced")
+cmd void glBlendBarrierKHR() {
+ requiresExtension(GL_KHR_blend_equation_advanced)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glBlendEquationSeparateiEXT(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glBlendEquationiEXT(GLuint buf, GLenum mode) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glBlendFuncSeparateiEXT(GLuint buf,
+ GLenum srcRGB,
+ GLenum dstRGB,
+ GLenum srcAlpha,
+ GLenum dstAlpha) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glBlendFunciEXT(GLuint buf, GLenum src, GLenum dst) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glColorMaskiEXT(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_copy_image.txt","GL_EXT_copy_image")
+cmd void glCopyImageSubDataEXT(GLuint srcName,
+ GLenum srcTarget,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLuint dstName,
+ GLenum dstTarget,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth) {
+ requiresExtension(GL_EXT_copy_image)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glDebugMessageCallbackKHR(GLDEBUGPROCKHR callback, const void* userParam) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glDebugMessageControlKHR(GLenum source,
+ GLenum type,
+ GLenum severity,
+ GLsizei count,
+ const GLuint* ids,
+ GLboolean enabled) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glDebugMessageInsertKHR(GLenum source,
+ GLenum type,
+ GLuint id,
+ GLenum severity,
+ GLsizei length,
+ const GLchar* buf) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glDisableiEXT(GLenum target, GLuint index) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd void glEnableiEXT(GLenum target, GLuint index) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_geometry_shader.txt","GL_EXT_geometry_shader")
+cmd void glFramebufferTextureEXT(GLenum target, GLenum attachment, TextureId texture, GLint level) {
+ requiresExtension(GL_EXT_geometry_shader)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd GLuint glGetDebugMessageLogKHR(GLuint count,
+ GLsizei bufSize,
+ GLenum* sources,
+ GLenum* types,
+ GLuint* ids,
+ GLenum* severities,
+ GLsizei* lengths,
+ GLchar* messageLog) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glGetObjectLabelKHR(GLenum identifier,
+ GLuint name,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* label) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glGetObjectPtrLabelKHR(const void* ptr,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* label) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glGetPointervKHR(GLenum pname, void** params) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glGetSamplerParameterIivEXT(SamplerId sampler, GLenum pname, GLint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glGetSamplerParameterIuivEXT(SamplerId sampler, GLenum pname, GLuint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glGetTexParameterIivEXT(GLenum target, GLenum pname, GLint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt","GL_EXT_draw_buffers_indexed")
+cmd bool glIsEnablediEXT(GLenum target, GLuint index) {
+ requiresExtension(GL_EXT_draw_buffers_indexed)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_sample_shading.txt","GL_OES_sample_shading")
+cmd void glMinSampleShadingOES(GLfloat value) {
+ requiresExtension(GL_OES_sample_shading)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glObjectLabelKHR(GLenum identifier, GLuint name, GLsizei length, const GLchar* label) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glObjectPtrLabelKHR(const void* ptr, GLsizei length, const GLchar* label) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_tessellation_shader.txt","GL_EXT_tessellation_shader")
+cmd void glPatchParameteriEXT(GLenum pname, GLint value) {
+ requiresExtension(GL_EXT_tessellation_shader)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glPopDebugGroupKHR() {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_primitive_bounding_box.txt","GL_EXT_primitive_bounding_box")
+cmd void glPrimitiveBoundingBoxEXT(GLfloat minX,
+ GLfloat minY,
+ GLfloat minZ,
+ GLfloat minW,
+ GLfloat maxX,
+ GLfloat maxY,
+ GLfloat maxZ,
+ GLfloat maxW) {
+ requiresExtension(GL_EXT_primitive_bounding_box)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/debug.txt","GL_KHR_debug")
+cmd void glPushDebugGroupKHR(GLenum source, GLuint id, GLsizei length, const GLchar* message) {
+ requiresExtension(GL_KHR_debug)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glSamplerParameterIivEXT(SamplerId sampler, GLenum pname, const GLint* param) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glSamplerParameterIuivEXT(SamplerId sampler, GLenum pname, const GLuint* param) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_buffer.txt","GL_EXT_texture_buffer")
+cmd void glTexBufferEXT(GLenum target, GLenum internalformat, BufferId buffer) {
+ requiresExtension(GL_EXT_texture_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_buffer.txt","GL_EXT_texture_buffer")
+cmd void glTexBufferRangeEXT(GLenum target,
+ GLenum internalformat,
+ BufferId buffer,
+ GLintptr offset,
+ GLsizeiptr size) {
+ requiresExtension(GL_EXT_texture_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glTexParameterIivEXT(GLenum target, GLenum pname, const GLint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_border_clamp.txt","GL_EXT_texture_border_clamp")
+cmd void glTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint* params) {
+ requiresExtension(GL_EXT_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_storage_multisample_2d_array.txt","GL_OES_texture_storage_multisample_2d_array")
+cmd void glTexStorage3DMultisampleOES(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLboolean fixedsamplelocations) {
+ requiresExtension(GL_OES_texture_storage_multisample_2d_array)
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/asynchronous_queries.api b/gfxapi/gles/api/asynchronous_queries.api
new file mode 100644
index 000000000..41ad05dc4
--- /dev/null
+++ b/gfxapi/gles/api/asynchronous_queries.api
@@ -0,0 +1,122 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBeginQuery.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBeginQuery.xhtml","OpenGL ES 3.1")
+cmd void glBeginQuery(GLenum target, QueryId query) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ANY_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED_CONSERVATIVE,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteQueries.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteQueries.xhtml","OpenGL ES 3.1")
+cmd void glDeleteQueries(GLsizei count, const QueryId* queries) {
+ minRequiredVersion(3, 0)
+
+ q := queries[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Queries[q[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBeginQuery.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBeginQuery.xhtml","OpenGL ES 3.1")
+cmd void glEndQuery(GLenum target) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ANY_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED_CONSERVATIVE,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenQueries.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenQueries.xhtml","OpenGL ES 3.1")
+cmd void glGenQueries(GLsizei count, QueryId* queries) {
+ minRequiredVersion(3, 0)
+
+ q := queries[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!QueryId(?)
+ ctx.Instances.Queries[id] = new!Query()
+ q[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetQueryObjectuiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetQueryObjectuiv.xhtml","OpenGL ES 3.1")
+cmd void glGetQueryObjectuiv(QueryId query, GLenum parameter, GLuint* value) {
+ minRequiredVersion(3, 0)
+ switch (parameter) {
+ case GL_QUERY_RESULT, GL_QUERY_RESULT_AVAILABLE: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetQueryiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetQueryiv.xhtml","OpenGL ES 3.1")
+cmd void glGetQueryiv(GLenum target, GLenum parameter, GLint* value) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ANY_SAMPLES_PASSED, GL_ANY_SAMPLES_PASSED_CONSERVATIVE,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_CURRENT_QUERY: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsQuery.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsQuery.xhtml","OpenGL ES 3.1")
+cmd bool glIsQuery(QueryId query) {
+ minRequiredVersion(3, 0)
+
+ ctx := GetContext()
+ return query in ctx.Instances.Queries
+}
+
diff --git a/gfxapi/gles/api/buffer_objects.api b/gfxapi/gles/api/buffer_objects.api
new file mode 100644
index 000000000..594fa4443
--- /dev/null
+++ b/gfxapi/gles/api/buffer_objects.api
@@ -0,0 +1,388 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindBuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindBuffer.xhtml","OpenGL ES 3.1")
+cmd void glBindBuffer(GLenum target, BufferId buffer) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER: {
+ // version 2.0
+ }
+ case GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER,
+ GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER,
+ GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ ctx := GetContext()
+ if !(buffer in ctx.Instances.Buffers) {
+ ctx.Instances.Buffers[buffer] = new!Buffer()
+ }
+ ctx.BoundBuffers[target] = buffer
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindBufferBase.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindBufferBase.xhtml","OpenGL ES 3.1")
+cmd void glBindBufferBase(GLenum target, GLuint index, BufferId buffer) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindBufferRange.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindBufferRange.xhtml","OpenGL ES 3.1")
+cmd void glBindBufferRange(GLenum target,
+ GLuint index,
+ BufferId buffer,
+ GLintptr offset,
+ GLsizeiptr size) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBufferData.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBufferData.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBufferData.xhtml","OpenGL ES 3.1")
+cmd void glBufferData(GLenum target, GLsizeiptr size, BufferDataPointer data, GLenum usage) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER: {
+ // version 2.0
+ }
+ case GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER,
+ GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER,
+ GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (usage) {
+ case GL_DYNAMIC_DRAW, GL_STATIC_DRAW, GL_STREAM_DRAW: {
+ // version 2.0
+ }
+ case GL_DYNAMIC_COPY, GL_DYNAMIC_READ, GL_STATIC_COPY, GL_STATIC_READ, GL_STREAM_COPY,
+ GL_STREAM_READ: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(usage)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.BoundBuffers[target]
+ b := ctx.Instances.Buffers[id]
+ b.Data = switch (data != null) {
+ case true: clone(as!u8*(data)[0:size])
+ case false: make!u8(size)
+ }
+ b.Size = size
+ b.Usage = usage
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBufferSubData.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBufferSubData.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBufferSubData.xhtml","OpenGL ES 3.1")
+cmd void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, BufferDataPointer data) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER: {
+ // version 2.0
+ }
+ case GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER,
+ GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER,
+ GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ read(data[0:size])
+ // TODO: Assignment to subset
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCopyBufferSubData.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCopyBufferSubData.xhtml","OpenGL ES 3.1")
+cmd void glCopyBufferSubData(GLenum readTarget,
+ GLenum writeTarget,
+ GLintptr readOffset,
+ GLintptr writeOffset,
+ GLsizeiptr size) {
+ minRequiredVersion(3, 0)
+ switch (readTarget) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(readTarget)
+ }
+ }
+ switch (writeTarget) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(writeTarget)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteBuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteBuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteBuffers.xhtml","OpenGL ES 3.1")
+cmd void glDeleteBuffers(GLsizei count, const BufferId* buffers) {
+ minRequiredVersion(2, 0)
+
+ b := buffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Buffers[b[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGenBuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenBuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenBuffers.xhtml","OpenGL ES 3.1")
+cmd void glGenBuffers(GLsizei count, BufferId* buffers) {
+ minRequiredVersion(2, 0)
+
+ b := buffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!BufferId(?)
+ ctx.Instances.Buffers[id] = new!Buffer()
+ b[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetBufferParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetBufferParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_BUFFER_ACCESS_FLAGS, GL_BUFFER_MAPPED, GL_BUFFER_MAP_LENGTH, GL_BUFFER_MAP_OFFSET,
+ GL_BUFFER_SIZE, GL_BUFFER_USAGE: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetBufferParameteriv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetBufferParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetBufferParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetBufferParameteriv(GLenum target, GLenum parameter, GLint* value) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER: {
+ // version 2.0
+ }
+ case GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER,
+ GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM_BUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_BUFFER_SIZE, GL_BUFFER_USAGE: {
+ // version 2.0
+ }
+ case GL_BUFFER_ACCESS_FLAGS, GL_BUFFER_MAPPED, GL_BUFFER_MAP_LENGTH, GL_BUFFER_MAP_OFFSET: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.BoundBuffers[target]
+ b := ctx.Instances.Buffers[id]
+ value[0] = switch (parameter) {
+ case GL_BUFFER_SIZE: as!s32(b.Size)
+ case GL_BUFFER_USAGE: as!s32(b.Usage)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetBufferPointerv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetBufferPointerv.xhtml","OpenGL ES 3.1")
+cmd void glGetBufferPointerv(GLenum target, GLenum pname, void** params) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_BUFFER_MAP_POINTER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsBuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsBuffer.xhtml","OpenGL ES 3.1")
+cmd bool glIsBuffer(BufferId buffer) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return buffer in ctx.Instances.Buffers
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glMapBufferRange.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glMapBufferRange.xhtml","OpenGL ES 3.1")
+cmd void* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER,
+ GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ supportsBits(access, GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_INVALIDATE_RANGE_BIT | GL_MAP_READ_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_WRITE_BIT)
+ if (GL_MAP_FLUSH_EXPLICIT_BIT in access) {
+ }
+ if (GL_MAP_INVALIDATE_BUFFER_BIT in access) {
+ }
+ if (GL_MAP_INVALIDATE_RANGE_BIT in access) {
+ }
+ if (GL_MAP_READ_BIT in access) {
+ }
+ if (GL_MAP_UNSYNCHRONIZED_BIT in access) {
+ }
+ if (GL_MAP_WRITE_BIT in access) {
+ }
+
+ ctx := GetContext()
+ b := ctx.Instances.Buffers[ctx.BoundBuffers[target]]
+
+ ptr := as!u8*(?)
+
+ b.MappingAccess = access
+ b.MappingData = ptr[0:length]
+ if GL_MAP_READ_BIT in access {
+ src := b.Data[offset:offset + length]
+ dst := b.MappingData
+ // copy(dst, src) // TEMP HACK: copy cannot be used here as this is a copy after a fence (ptr := ?)
+ write(dst)
+ }
+
+ return as!void*(ptr)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glMapBufferRange.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glMapBufferRange.xhtml","OpenGL ES 3.1")
+cmd GLboolean glUnmapBuffer(GLenum target) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ case GL_ATOMIC_COUNTER_BUFFER, GL_DISPATCH_INDIRECT_BUFFER, GL_DRAW_INDIRECT_BUFFER,
+ GL_SHADER_STORAGE_BUFFER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ ctx := GetContext()
+ b := ctx.Instances.Buffers[ctx.BoundBuffers[target]]
+ // if GL_MAP_WRITE_BIT in b.MappingAccess { // TEMP HACK: Commented as 'fence not allowed in *semantic.Branch'
+ copy(b.Data[b.MappingOffset:b.MappingOffset + len(b.MappingData)], b.MappingData)
+ // }
+}
+
diff --git a/gfxapi/gles/api/draw_commands.api b/gfxapi/gles/api/draw_commands.api
new file mode 100644
index 000000000..866848548
--- /dev/null
+++ b/gfxapi/gles/api/draw_commands.api
@@ -0,0 +1,209 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDrawArrays.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawArrays.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawArrays.xhtml","OpenGL ES 3.1")
+cmd void glDrawArrays(GLenum draw_mode, GLint first_index, GLsizei index_count) {
+ minRequiredVersion(2, 0)
+ switch (draw_mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(draw_mode)
+ }
+ }
+
+ ctx := GetContext()
+ last_index := first_index + index_count - 1
+ ReadVertexArrays(ctx, as!u32(first_index), as!u32(last_index))
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawArraysIndirect.xhtml","OpenGL ES 3.1")
+cmd void glDrawArraysIndirect(GLenum mode, const void* indirect) {
+ minRequiredVersion(3, 1)
+ switch (mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawArraysInstanced.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawArraysInstanced.xhtml","OpenGL ES 3.1")
+cmd void glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount) {
+ minRequiredVersion(3, 0)
+ switch (mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawBuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawBuffers.xhtml","OpenGL ES 3.1")
+cmd void glDrawBuffers(GLsizei n, const GLenum* bufs) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDrawElements.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawElements.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawElements.xhtml","OpenGL ES 3.1")
+cmd void glDrawElements(GLenum draw_mode,
+ GLsizei element_count,
+ GLenum indices_type,
+ IndicesPointer indices) {
+ minRequiredVersion(2, 0)
+ switch (draw_mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(draw_mode)
+ }
+ }
+ switch (indices_type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT: {
+ // version 2.0
+ }
+ case GL_UNSIGNED_INT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(indices_type)
+ }
+ }
+
+ ctx := GetContext()
+ count := as!u32(element_count)
+ id := ctx.BoundBuffers[GL_ELEMENT_ARRAY_BUFFER]
+ if (id != 0) {
+ // Element array buffer bound - indices is an offset on the buffer.
+ index_data := ctx.Instances.Buffers[id].Data
+ offset := as!u32(as!u64(indices))
+
+ // Read the vertices
+ first := minIndex(as!u8*(index_data), indices_type, offset, count)
+ last := maxIndex(as!u8*(index_data), indices_type, offset, count)
+ ReadVertexArrays(ctx, first, last)
+
+ // No need to read the indices - they're already in a GPU-side buffer.
+ } else {
+ // No element array buffer bound - indices is a pointer.
+ index_data := as!u8*(indices)
+
+ // Read the vertices
+ first := minIndex(index_data, indices_type, 0, count)
+ last := maxIndex(index_data, indices_type, 0, count)
+ ReadVertexArrays(ctx, first, last)
+
+ // Read the indices
+ read(index_data[0:(as!u32(element_count)) * IndexSize(indices_type)])
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawElementsIndirect.xhtml","OpenGL ES 3.1")
+cmd void glDrawElementsIndirect(GLenum mode, GLenum type, const void* indirect) {
+ minRequiredVersion(3, 1)
+ switch (mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_SHORT: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawElementsInstanced.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawElementsInstanced.xhtml","OpenGL ES 3.1")
+cmd void glDrawElementsInstanced(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei instancecount) {
+ minRequiredVersion(3, 0)
+ switch (mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_SHORT: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDrawRangeElements.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDrawRangeElements.xhtml","OpenGL ES 3.1")
+cmd void glDrawRangeElements(GLenum mode,
+ GLuint start,
+ GLuint end,
+ GLsizei count,
+ GLenum type,
+ const void* indices) {
+ minRequiredVersion(3, 0)
+ switch (mode) {
+ case GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP, GL_POINTS, GL_TRIANGLES, GL_TRIANGLE_FAN,
+ GL_TRIANGLE_STRIP: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_SHORT: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/extensions.api b/gfxapi/gles/api/extensions.api
new file mode 100644
index 000000000..3e59541f4
--- /dev/null
+++ b/gfxapi/gles/api/extensions.api
@@ -0,0 +1,2736 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glActiveShaderProgramEXT(PipelineId pipeline, ProgramId program) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_alpha_test.txt","GL_QCOM_alpha_test")
+cmd void glAlphaFuncQCOM(GLenum func, GLclampf ref) {
+ requiresExtension(GL_QCOM_alpha_test)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt","GL_NV_conditional_render")
+cmd void glBeginConditionalRenderNV(GLuint id, GLenum mode) {
+ requiresExtension(GL_NV_conditional_render)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glBeginPerfMonitorAMD(GLuint monitor) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glBeginPerfQueryINTEL(GLuint queryHandle) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glBeginQueryEXT(GLenum target, QueryId query) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glBindProgramPipelineEXT(PipelineId pipeline) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+cmd void glBindVertexArrayOES(VertexArrayId array) {
+ requiresExtension(GL_OES_vertex_array_object)
+
+ ctx := GetContext()
+ if !(array in ctx.Instances.VertexArrays) {
+ ctx.Instances.VertexArrays[array] = new!VertexArray()
+ }
+ ctx.BoundVertexArray = array
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt","GL_NV_blend_equation_advanced")
+cmd void glBlendBarrierNV() {
+ requiresExtension(GL_NV_blend_equation_advanced)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glBlendEquationSeparateiOES(GLuint buf, GLenum modeRGB, GLenum modeAlpha) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glBlendEquationiOES(GLuint buf, GLenum mode) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glBlendFuncSeparateiOES(GLuint buf,
+ GLenum srcRGB,
+ GLenum dstRGB,
+ GLenum srcAlpha,
+ GLenum dstAlpha) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glBlendFunciOES(GLuint buf, GLenum src, GLenum dst) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/blend_equation_advanced.txt","GL_NV_blend_equation_advanced")
+cmd void glBlendParameteriNV(GLenum pname, GLint value) {
+ requiresExtension(GL_NV_blend_equation_advanced)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_blit.txt","GL_ANGLE_framebuffer_blit")
+cmd void glBlitFramebufferANGLE(GLint srcX0,
+ GLint srcY0,
+ GLint srcX1,
+ GLint srcY1,
+ GLint dstX0,
+ GLint dstY0,
+ GLint dstX1,
+ GLint dstY1,
+ GLbitfield mask,
+ GLenum filter) {
+ requiresExtension(GL_ANGLE_framebuffer_blit)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_blit.txt","GL_NV_framebuffer_blit")
+cmd void glBlitFramebufferNV(GLint srcX0,
+ GLint srcY0,
+ GLint srcX1,
+ GLint srcY1,
+ GLint dstX0,
+ GLint dstY0,
+ GLint dstX1,
+ GLint dstY1,
+ GLbitfield mask,
+ GLenum filter) {
+ requiresExtension(GL_NV_framebuffer_blit)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_buffer_storage.txt","GL_EXT_buffer_storage")
+cmd void glBufferStorageEXT(GLenum target, GLsizeiptr size, const void* data, GLbitfield flags) {
+ requiresExtension(GL_EXT_buffer_storage)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd GLenum glClientWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glColorMaskiOES(GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glCompressedTexImage3DOES(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLsizei imageSize,
+ const void* data) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glCompressedTexSubImage3DOES(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLsizei imageSize,
+ const void* data) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_copy_buffer.txt","GL_NV_copy_buffer")
+cmd void glCopyBufferSubDataNV(GLenum readTarget,
+ GLenum writeTarget,
+ GLintptr readOffset,
+ GLintptr writeOffset,
+ GLsizeiptr size) {
+ requiresExtension(GL_NV_copy_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_copy_image.txt","GL_OES_copy_image")
+cmd void glCopyImageSubDataOES(GLuint srcName,
+ GLenum srcTarget,
+ GLint srcLevel,
+ GLint srcX,
+ GLint srcY,
+ GLint srcZ,
+ GLuint dstName,
+ GLenum dstTarget,
+ GLint dstLevel,
+ GLint dstX,
+ GLint dstY,
+ GLint dstZ,
+ GLsizei srcWidth,
+ GLsizei srcHeight,
+ GLsizei srcDepth) {
+ requiresExtension(GL_OES_copy_image)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glCopyPathNV(GLuint resultPath, GLuint srcPath) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glCopyTexSubImage3DOES(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_copy_texture_levels.txt","GL_APPLE_copy_texture_levels")
+cmd void glCopyTextureLevelsAPPLE(GLuint destinationTexture,
+ GLuint sourceTexture,
+ GLint sourceBaseLevel,
+ GLsizei sourceLevelCount) {
+ requiresExtension(GL_APPLE_copy_texture_levels)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glCoverFillPathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glCoverFillPathNV(GLuint path, GLenum coverMode) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glCoverStrokePathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glCoverStrokePathNV(GLuint path, GLenum coverMode) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt","GL_NV_coverage_sample")
+cmd void glCoverageMaskNV(GLboolean mask) {
+ requiresExtension(GL_NV_coverage_sample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/EGL_NV_coverage_sample.txt","GL_NV_coverage_sample")
+cmd void glCoverageOperationNV(GLenum operation) {
+ requiresExtension(GL_NV_coverage_sample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glCreatePerfQueryINTEL(GLuint queryId, GLuint* queryHandle) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd GLuint glCreateShaderProgramvEXT(GLenum type, GLsizei count, const GLchar** strings) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd void glDeleteFencesNV(GLsizei n, const GLuint* fences) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glDeletePathsNV(GLuint path, GLsizei range) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glDeletePerfMonitorsAMD(GLsizei n, GLuint* monitors) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glDeletePerfQueryINTEL(GLuint queryHandle) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glDeleteProgramPipelinesEXT(GLsizei n, const PipelineId* pipelines) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glDeleteQueriesEXT(GLsizei count, const QueryId* queries) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+ q := queries[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Queries[q[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd void glDeleteSyncAPPLE(GLsync sync) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+cmd void glDeleteVertexArraysOES(GLsizei count, const VertexArrayId* arrays) {
+ requiresExtension(GL_OES_vertex_array_object)
+
+ ctx := GetContext()
+ a := arrays[0:count]
+ for i in (0 .. count) {
+ ctx.Instances.VertexArrays[a[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glDepthRangeArrayfvNV(GLuint first, GLsizei count, const GLfloat* v) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glDepthRangeIndexedfNV(GLuint index, GLfloat n, GLfloat f) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+cmd void glDisableDriverControlQCOM(GLuint driverControl) {
+ requiresExtension(GL_QCOM_driver_control)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glDisableiNV(GLenum target, GLuint index) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glDisableiOES(GLenum target, GLuint index) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_discard_framebuffer.txt","GL_EXT_discard_framebuffer")
+cmd void glDiscardFramebufferEXT(GLenum target,
+ GLsizei numAttachments,
+ const GLenum* attachments) {
+ requiresExtension(GL_EXT_discard_framebuffer)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+cmd void glDrawArraysInstancedANGLE(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
+ requiresExtension(GL_ANGLE_instanced_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+cmd void glDrawArraysInstancedBaseInstanceEXT(GLenum mode,
+ GLint first,
+ GLsizei count,
+ GLsizei instancecount,
+ GLuint baseinstance) {
+ requiresExtension(GL_EXT_base_instance)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt","GL_EXT_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+cmd void glDrawArraysInstancedEXT(GLenum mode, GLint start, GLsizei count, GLsizei primcount) {
+ requiresExtension(GL_EXT_draw_instanced)
+ requiresExtension(GL_EXT_instanced_arrays)
+ // TODO: Multiple extensions
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt","GL_NV_draw_instanced")
+cmd void glDrawArraysInstancedNV(GLenum mode, GLint first, GLsizei count, GLsizei primcount) {
+ requiresExtension(GL_NV_draw_instanced)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers.txt","GL_EXT_draw_buffers")
+cmd void glDrawBuffersEXT(GLsizei n, const GLenum* bufs) {
+ requiresExtension(GL_EXT_draw_buffers)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+cmd void glDrawBuffersIndexedEXT(GLint n, const GLenum* location, const GLint* indices) {
+ requiresExtension(GL_EXT_multiview_draw_buffers)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_buffers.txt","GL_NV_draw_buffers")
+cmd void glDrawBuffersNV(GLsizei n, const GLenum* bufs) {
+ requiresExtension(GL_NV_draw_buffers)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+cmd void glDrawElementsBaseVertexEXT(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLint basevertex) {
+ requiresExtension(GL_EXT_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+cmd void glDrawElementsBaseVertexOES(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLint basevertex) {
+ requiresExtension(GL_OES_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+cmd void glDrawElementsInstancedANGLE(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei primcount) {
+ requiresExtension(GL_ANGLE_instanced_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+cmd void glDrawElementsInstancedBaseInstanceEXT(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei instancecount,
+ GLuint baseinstance) {
+ requiresExtension(GL_EXT_base_instance)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+cmd void glDrawElementsInstancedBaseVertexEXT(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei instancecount,
+ GLint basevertex) {
+ requiresExtension(GL_EXT_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+cmd void glDrawElementsInstancedBaseVertexOES(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei instancecount,
+ GLint basevertex) {
+ requiresExtension(GL_OES_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_base_instance.txt","GL_EXT_base_instance")
+cmd void glDrawElementsInstancedBaseVertexBaseInstanceEXT(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei instancecount,
+ GLint basevertex,
+ GLuint baseinstance) {
+ requiresExtension(GL_EXT_base_instance)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/draw_instanced.txt","GL_EXT_draw_instanced")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+cmd void glDrawElementsInstancedEXT(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei primcount) {
+ requiresExtension(GL_EXT_draw_instanced)
+ requiresExtension(GL_EXT_instanced_arrays)
+ // TODO: Multiple extensions
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_draw_instanced.txt","GL_NV_draw_instanced")
+cmd void glDrawElementsInstancedNV(GLenum mode,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLsizei primcount) {
+ requiresExtension(GL_NV_draw_instanced)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+cmd void glDrawRangeElementsBaseVertexEXT(GLenum mode,
+ GLuint start,
+ GLuint end,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLint basevertex) {
+ requiresExtension(GL_EXT_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+cmd void glDrawRangeElementsBaseVertexOES(GLenum mode,
+ GLuint start,
+ GLuint end,
+ GLsizei count,
+ GLenum type,
+ const void* indices,
+ GLint basevertex) {
+ requiresExtension(GL_OES_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt","GL_OES_EGL_image")
+cmd void glEGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image) {
+ requiresExtension(GL_OES_EGL_image)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt","GL_OES_EGL_image")
+cmd void glEGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image) {
+ requiresExtension(GL_OES_EGL_image)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+cmd void glEnableDriverControlQCOM(GLuint driverControl) {
+ requiresExtension(GL_QCOM_driver_control)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glEnableiNV(GLenum target, GLuint index) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd void glEnableiOES(GLenum target, GLuint index) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conditional_render.txt","GL_NV_conditional_render")
+cmd void glEndConditionalRenderNV() {
+ requiresExtension(GL_NV_conditional_render)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glEndPerfMonitorAMD(GLuint monitor) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glEndPerfQueryINTEL(GLuint queryHandle) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glEndQueryEXT(GLenum target) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt","GL_QCOM_tiled_rendering")
+cmd void glEndTilingQCOM(GLbitfield preserve_mask) {
+ requiresExtension(GL_QCOM_tiled_rendering)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetBufferPointervQCOM(GLenum target, void** params) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetBuffersQCOM(BufferId* buffers, GLint maxBuffers, GLint* numBuffers) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetFramebuffersQCOM(FramebufferId* framebuffers,
+ GLint maxFramebuffers,
+ GLint* numFramebuffers) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+cmd void glExtGetProgramBinarySourceQCOM(ProgramId program,
+ GLenum shadertype,
+ GLchar* source,
+ GLint* length) {
+ requiresExtension(GL_QCOM_extended_get2)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+cmd void glExtGetProgramsQCOM(ProgramId* programs, GLint maxPrograms, GLint* numPrograms) {
+ requiresExtension(GL_QCOM_extended_get2)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetRenderbuffersQCOM(RenderbufferId* renderbuffers,
+ GLint maxRenderbuffers,
+ GLint* numRenderbuffers) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+cmd void glExtGetShadersQCOM(ShaderId* shaders, GLint maxShaders, GLint* numShaders) {
+ requiresExtension(GL_QCOM_extended_get2)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetTexLevelParameterivQCOM(TextureId texture,
+ GLenum face,
+ GLint level,
+ GLenum pname,
+ GLint* params) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetTexSubImageQCOM(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLenum type,
+ void* texels) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtGetTexturesQCOM(TextureId* textures, GLint maxTextures, GLint* numTextures) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get2.txt","GL_QCOM_extended_get2")
+cmd GLboolean glExtIsProgramBinaryQCOM(ProgramId program) {
+ requiresExtension(GL_QCOM_extended_get2)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_extended_get.txt","GL_QCOM_extended_get")
+cmd void glExtTexObjectStateOverrideiQCOM(GLenum target, GLenum pname, GLint param) {
+ requiresExtension(GL_QCOM_extended_get)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd GLsync glFenceSyncAPPLE(GLenum condition, GLbitfield flags) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd void glFinishFenceNV(GLuint fence) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt","GL_EXT_map_buffer_range")
+cmd void glFlushMappedBufferRangeEXT(GLenum target, GLintptr offset, GLsizeiptr length) {
+ requiresExtension(GL_EXT_map_buffer_range)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt","GL_EXT_multisampled_render_to_texture")
+cmd void glFramebufferTexture2DMultisampleEXT(GLenum target,
+ GLenum attachment,
+ GLenum textarget,
+ TextureId texture,
+ GLint level,
+ GLsizei samples) {
+ requiresExtension(GL_EXT_multisampled_render_to_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt","GL_IMG_multisampled_render_to_texture")
+cmd void glFramebufferTexture2DMultisampleIMG(GLenum target,
+ GLenum attachment,
+ GLenum textarget,
+ TextureId texture,
+ GLint level,
+ GLsizei samples) {
+ requiresExtension(GL_IMG_multisampled_render_to_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glFramebufferTexture3DOES(GLenum target,
+ GLenum attachment,
+ GLenum textarget,
+ TextureId texture,
+ GLint level,
+ GLint zoffset) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_geometry_shader.txt","GL_OES_geometry_shader")
+cmd void glFramebufferTextureOES(GLenum target, GLenum attachment, TextureId texture, GLint level) {
+ requiresExtension(GL_OES_geometry_shader)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OVR/multiview.txt","GL_OVR_multiview")
+cmd void glFramebufferTextureMultiviewOVR(GLenum target,
+ GLenum attachment,
+ TextureId texture,
+ GLint level,
+ GLint baseViewIndex,
+ GLsizei numViews) {
+ requiresExtension(GL_OVR_multiview)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd void glGenFencesNV(GLsizei n, GLuint* fences) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLuint glGenPathsNV(GLsizei range) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGenPerfMonitorsAMD(GLsizei n, GLuint* monitors) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glGenProgramPipelinesEXT(GLsizei n, PipelineId* pipelines) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glGenQueriesEXT(GLsizei count, QueryId* queries) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+ q := queries[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!QueryId(?)
+ ctx.Instances.Queries[id] = new!Query()
+ q[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+cmd void glGenVertexArraysOES(GLsizei count, VertexArrayId* arrays) {
+ requiresExtension(GL_OES_vertex_array_object)
+
+ a := arrays[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!VertexArrayId(?)
+ ctx.Instances.VertexArrays[id] = new!VertexArray()
+ a[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+cmd void glGetBufferPointervOES(GLenum target, GLenum pname, void** params) {
+ requiresExtension(GL_OES_mapbuffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+cmd void glGetDriverControlStringQCOM(GLuint driverControl,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* driverControlString) {
+ requiresExtension(GL_QCOM_driver_control)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_driver_control.txt","GL_QCOM_driver_control")
+cmd void glGetDriverControlsQCOM(GLint* num, GLsizei size, GLuint* driverControls) {
+ requiresExtension(GL_QCOM_driver_control)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd void glGetFenceivNV(GLuint fence, GLenum pname, GLint* params) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetFirstPerfQueryIdINTEL(GLuint* queryId) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glGetFloati_vNV(GLenum target, GLuint index, GLfloat* data) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+cmd GLenum glGetGraphicsResetStatusEXT() {
+ requiresExtension(GL_EXT_robustness)
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+cmd GLenum glGetGraphicsResetStatusKHR() {
+ requiresExtension(GL_KHR_robustness)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd GLuint64 glGetImageHandleNV(TextureId texture,
+ GLint level,
+ GLboolean layered,
+ GLint layer,
+ GLenum format) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd void glGetInteger64vAPPLE(GLenum pname, GLint64* params) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+cmd void glGetIntegeri_vEXT(GLenum target, GLuint index, GLint* data) {
+ requiresExtension(GL_EXT_multiview_draw_buffers)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/internalformat_sample_query.txt","GL_NV_internalformat_sample_query")
+cmd void glGetInternalformatSampleivNV(GLenum target,
+ GLenum internalformat,
+ GLsizei samples,
+ GLenum pname,
+ GLsizei bufSize,
+ GLint* params) {
+ requiresExtension(GL_NV_internalformat_sample_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetNextPerfQueryIdINTEL(GLuint queryId, GLuint* nextQueryId) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt","GL_EXT_debug_label")
+cmd void glGetObjectLabelEXT(GLenum type,
+ GLuint object,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* label) {
+ requiresExtension(GL_EXT_debug_label)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathCommandsNV(GLuint path, GLubyte* commands) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathCoordsNV(GLuint path, GLfloat* coords) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathDashArrayNV(GLuint path, GLfloat* dashArray) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLfloat glGetPathLengthNV(GLuint path, GLsizei startSegment, GLsizei numSegments) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathMetricRangeNV(GLbitfield metricQueryMask,
+ GLuint firstPathName,
+ GLsizei numPaths,
+ GLsizei stride,
+ GLfloat* metrics) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathMetricsNV(GLbitfield metricQueryMask,
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLsizei stride,
+ GLfloat* metrics) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathParameterfvNV(GLuint path, GLenum pname, GLfloat* value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathParameterivNV(GLuint path, GLenum pname, GLint* value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetPathSpacingNV(GLenum pathListMode,
+ GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLfloat advanceScale,
+ GLfloat kerningScale,
+ GLenum transformType,
+ GLfloat* returnedSpacing) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetPerfCounterInfoINTEL(GLuint queryId,
+ GLuint counterId,
+ GLuint counterNameLength,
+ GLchar* counterName,
+ GLuint counterDescLength,
+ GLchar* counterDesc,
+ GLuint* counterOffset,
+ GLuint* counterDataSize,
+ GLuint* counterTypeEnum,
+ GLuint* counterDataTypeEnum,
+ GLuint64* rawCounterMaxValue) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorCounterDataAMD(GLuint monitor,
+ GLenum pname,
+ GLsizei dataSize,
+ GLuint* data,
+ GLint* bytesWritten) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorCounterInfoAMD(GLuint group, GLuint counter, GLenum pname, void* data) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorCounterStringAMD(GLuint group,
+ GLuint counter,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* counterString) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorCountersAMD(GLuint group,
+ GLint* numCounters,
+ GLint* maxActiveCounters,
+ GLsizei counterSize,
+ GLuint* counters) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorGroupStringAMD(GLuint group,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* groupString) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glGetPerfMonitorGroupsAMD(GLint* numGroups, GLsizei groupsSize, GLuint* groups) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetPerfQueryDataINTEL(GLuint queryHandle,
+ GLuint flags,
+ GLsizei dataSize,
+ GLvoid* data,
+ GLuint* bytesWritten) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetPerfQueryIdByNameINTEL(GLchar* queryName, GLuint* queryId) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/INTEL/performance_query.txt","GL_INTEL_performance_query")
+cmd void glGetPerfQueryInfoINTEL(GLuint queryId,
+ GLuint queryNameLength,
+ GLchar* queryName,
+ GLuint* dataSize,
+ GLuint* noCounters,
+ GLuint* noInstances,
+ GLuint* capsMask) {
+ requiresExtension(GL_INTEL_performance_query)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt","GL_OES_get_program_binary")
+cmd void glGetProgramBinaryOES(ProgramId program,
+ GLsizei buffer_size,
+ GLsizei* bytes_written,
+ GLenum* binary_format,
+ void* binary) {
+ requiresExtension(GL_OES_get_program_binary)
+
+ l := as!s32(?)
+ bytes_written[0] = l
+ binary_format[0] = ?
+ write(binary[0:l])
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glGetProgramPipelineInfoLogEXT(PipelineId pipeline,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* infoLog) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glGetProgramPipelineivEXT(PipelineId pipeline, GLenum pname, GLint* params) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glGetProgramResourcefvNV(ProgramId program,
+ GLenum programInterface,
+ GLuint index,
+ GLsizei propCount,
+ const GLenum* props,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLfloat* params) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+cmd void glGetQueryObjecti64vEXT(QueryId query, GLenum parameter, GLint64* value) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+cmd void glGetQueryObjectivEXT(QueryId query, GLenum parameter, GLint* value) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+cmd void glGetQueryObjectui64vEXT(QueryId query, GLenum parameter, GLuint64* value) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glGetQueryObjectuivEXT(QueryId query, GLenum parameter, GLuint* value) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd void glGetQueryivEXT(GLenum target, GLenum parameter, GLint* value) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glGetSamplerParameterIivOES(SamplerId sampler, GLenum pname, GLint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glGetSamplerParameterIuivOES(SamplerId sampler, GLenum pname, GLuint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd void glGetSyncivAPPLE(GLsync sync,
+ GLenum pname,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLint* values) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glGetTexParameterIivOES(GLenum target, GLenum pname, GLint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glGetTexParameterIuivOES(GLenum target, GLenum pname, GLuint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd GLuint64 glGetTextureHandleNV(TextureId texture) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd GLuint64 glGetTextureSamplerHandleNV(TextureId texture, SamplerId sampler) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_translated_shader_source.txt","GL_ANGLE_translated_shader_source")
+cmd void glGetTranslatedShaderSourceANGLE(ShaderId shader,
+ GLsizei bufsize,
+ GLsizei* length,
+ GLchar* source) {
+ requiresExtension(GL_ANGLE_translated_shader_source)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+cmd void glGetnUniformfvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei bufSize,
+ GLfloat* params) {
+ requiresExtension(GL_EXT_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+cmd void glGetnUniformfvKHR(ProgramId program,
+ UniformLocation location,
+ GLsizei bufSize,
+ GLfloat* params) {
+ requiresExtension(GL_KHR_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+cmd void glGetnUniformivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei bufSize,
+ GLint* params) {
+ requiresExtension(GL_EXT_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+cmd void glGetnUniformivKHR(ProgramId program,
+ UniformLocation location,
+ GLsizei bufSize,
+ GLint* params) {
+ requiresExtension(GL_KHR_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+cmd void glGetnUniformuivKHR(ProgramId program,
+ UniformLocation location,
+ GLsizei bufSize,
+ GLuint* params) {
+ requiresExtension(GL_KHR_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+cmd void glInsertEventMarkerEXT(GLsizei length, const GLchar* marker) {
+ requiresExtension(GL_EXT_debug_marker)
+
+ if length > 0 {
+ read(marker[0:length])
+ } else {
+ _ = as!string(marker)
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glInterpolatePathsNV(GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_buffers_indexed.txt","GL_OES_draw_buffers_indexed")
+cmd bool glIsEnablediOES(GLenum target, GLuint index) {
+ requiresExtension(GL_OES_draw_buffers_indexed)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd bool glIsEnablediNV(GLenum target, GLuint index) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd bool glIsFenceNV(GLuint fence) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd bool glIsImageHandleResidentNV(GLuint64 handle) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd bool glIsPathNV(GLuint path) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd bool glIsPointInFillPathNV(GLuint path, GLuint mask, GLfloat x, GLfloat y) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd bool glIsPointInStrokePathNV(GLuint path, GLfloat x, GLfloat y) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd bool glIsProgramPipelineEXT(PipelineId pipeline) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_occlusion_query_boolean.txt","GL_EXT_occlusion_query_boolean")
+cmd bool glIsQueryEXT(QueryId query) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+ requiresExtension(GL_EXT_occlusion_query_boolean)
+ // TODO: Multiple extensions
+
+ ctx := GetContext()
+ return query in ctx.Instances.Queries
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd bool glIsSyncAPPLE(GLsync sync) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd bool glIsTextureHandleResidentNV(GLuint64 handle) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_vertex_array_object.txt","GL_OES_vertex_array_object")
+cmd bool glIsVertexArrayOES(VertexArrayId array) {
+ requiresExtension(GL_OES_vertex_array_object)
+
+ ctx := GetContext()
+ return array in ctx.Instances.VertexArrays
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_label.txt","GL_EXT_debug_label")
+cmd void glLabelObjectEXT(GLenum type, GLuint object, GLsizei length, const GLchar* label) {
+ requiresExtension(GL_EXT_debug_label)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glMakeImageHandleNonResidentNV(GLuint64 handle) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glMakeImageHandleResidentNV(GLuint64 handle, GLenum access) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glMakeTextureHandleNonResidentNV(GLuint64 handle) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glMakeTextureHandleResidentNV(GLuint64 handle) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+cmd void* glMapBufferOES(GLenum target, GLenum access) {
+ requiresExtension(GL_OES_mapbuffer)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_map_buffer_range.txt","GL_EXT_map_buffer_range")
+cmd void* glMapBufferRangeEXT(GLenum target,
+ GLintptr offset,
+ GLsizeiptr length,
+ GLbitfield access) {
+ requiresExtension(GL_EXT_map_buffer_range)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixLoad3x2fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixLoad3x3fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixLoadTranspose3x3fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixMult3x2fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixMult3x3fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glMatrixMultTranspose3x3fNV(GLenum matrixMode, const GLfloat* m) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt","GL_EXT_multi_draw_arrays")
+cmd void glMultiDrawArraysEXT(GLenum mode,
+ const GLint* first,
+ const GLsizei* count,
+ GLsizei primcount) {
+ requiresExtension(GL_EXT_multi_draw_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt","GL_EXT_multi_draw_indirect")
+cmd void glMultiDrawArraysIndirectEXT(GLenum mode,
+ const void* indirect,
+ GLsizei drawcount,
+ GLsizei stride) {
+ requiresExtension(GL_EXT_multi_draw_indirect)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_elements_base_vertex.txt","GL_EXT_draw_elements_base_vertex")
+cmd void glMultiDrawElementsBaseVertexEXT(GLenum mode,
+ const GLsizei* count,
+ GLenum type,
+ const void* const* indices,
+ GLsizei primcount,
+ const GLint* basevertex) {
+ requiresExtension(GL_EXT_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_draw_elements_base_vertex.txt","GL_OES_draw_elements_base_vertex")
+cmd void glMultiDrawElementsBaseVertexOES(GLenum mode,
+ const GLsizei* count,
+ GLenum type,
+ const void* const* indices,
+ GLsizei primcount,
+ const GLint* basevertex) {
+ requiresExtension(GL_OES_draw_elements_base_vertex)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/multi_draw_arrays.txt","GL_EXT_multi_draw_arrays")
+cmd void glMultiDrawElementsEXT(GLenum mode,
+ const GLsizei* count,
+ GLenum type,
+ const void* const* indices,
+ GLsizei primcount) {
+ requiresExtension(GL_EXT_multi_draw_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multi_draw_indirect.txt","GL_EXT_multi_draw_indirect")
+cmd void glMultiDrawElementsIndirectEXT(GLenum mode,
+ GLenum type,
+ const void* indirect,
+ GLsizei drawcount,
+ GLsizei stride) {
+ requiresExtension(GL_EXT_multi_draw_indirect)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_tessellation_shader.txt","GL_OES_tessellation_shader")
+cmd void glPatchParameteriOES(GLenum pname, GLint value) {
+ requiresExtension(GL_OES_tessellation_shader)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathCommandsNV(GLuint path,
+ GLsizei numCommands,
+ const GLubyte* commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const void* coords) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathCoordsNV(GLuint path, GLsizei numCoords, GLenum coordType, const void* coords) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathCoverDepthFuncNV(GLenum func) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathDashArrayNV(GLuint path, GLsizei dashCount, const GLfloat* dashArray) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLenum glPathGlyphIndexArrayNV(GLuint firstPathName,
+ GLenum fontTarget,
+ const void* fontName,
+ GLbitfield fontStyle,
+ GLuint firstGlyphIndex,
+ GLsizei numGlyphs,
+ GLuint pathParameterTemplate,
+ GLfloat emScale) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLenum glPathGlyphIndexRangeNV(GLenum fontTarget,
+ const void* fontName,
+ GLbitfield fontStyle,
+ GLuint pathParameterTemplate,
+ GLfloat emScale,
+ GLuint baseAndCount) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathGlyphRangeNV(GLuint firstPathName,
+ GLenum fontTarget,
+ const void* fontName,
+ GLbitfield fontStyle,
+ GLuint firstGlyph,
+ GLsizei numGlyphs,
+ GLenum handleMissingGlyphs,
+ GLuint pathParameterTemplate,
+ GLfloat emScale) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathGlyphsNV(GLuint firstPathName,
+ GLenum fontTarget,
+ const void* fontName,
+ GLbitfield fontStyle,
+ GLsizei numGlyphs,
+ GLenum type,
+ const void* charcodes,
+ GLenum handleMissingGlyphs,
+ GLuint pathParameterTemplate,
+ GLfloat emScale) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLenum glPathMemoryGlyphIndexArrayNV(GLuint firstPathName,
+ GLenum fontTarget,
+ GLsizeiptr fontSize,
+ const void* fontData,
+ GLsizei faceIndex,
+ GLuint firstGlyphIndex,
+ GLsizei numGlyphs,
+ GLuint pathParameterTemplate,
+ GLfloat emScale) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathParameterfNV(GLuint path, GLenum pname, GLfloat value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathParameterfvNV(GLuint path, GLenum pname, const GLfloat* value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathParameteriNV(GLuint path, GLenum pname, GLint value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathParameterivNV(GLuint path, GLenum pname, const GLint* value) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathStencilDepthOffsetNV(GLfloat factor, GLfloat units) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathStencilFuncNV(GLenum func, GLint ref, GLuint mask) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathStringNV(GLuint path, GLenum format, GLsizei length, const void* pathString) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathSubCommandsNV(GLuint path,
+ GLsizei commandStart,
+ GLsizei commandsToDelete,
+ GLsizei numCommands,
+ const GLubyte* commands,
+ GLsizei numCoords,
+ GLenum coordType,
+ const void* coords) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glPathSubCoordsNV(GLuint path,
+ GLsizei coordStart,
+ GLsizei numCoords,
+ GLenum coordType,
+ const void* coords) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd GLboolean glPointAlongPathNV(GLuint path,
+ GLsizei startSegment,
+ GLsizei numSegments,
+ GLfloat distance,
+ GLfloat* x,
+ GLfloat* y,
+ GLfloat* tangentX,
+ GLfloat* tangentY) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_polygon_mode.txt","GL_NV_polygon_mode")
+cmd void glPolygonModeNV(GLenum face, GLenum mode) {
+ requiresExtension(GL_NV_polygon_mode)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+cmd void glPopGroupMarkerEXT() {
+ requiresExtension(GL_EXT_debug_marker)
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_primitive_bounding_box.txt","GL_OES_primitive_bounding_box")
+cmd void glPrimitiveBoundingBoxOES(GLfloat minX,
+ GLfloat minY,
+ GLfloat minZ,
+ GLfloat minW,
+ GLfloat maxX,
+ GLfloat maxY,
+ GLfloat maxZ,
+ GLfloat maxW) {
+ requiresExtension(GL_OES_primitive_bounding_box)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_get_program_binary.txt","GL_OES_get_program_binary")
+cmd void glProgramBinaryOES(ProgramId program,
+ GLenum binary_format,
+ const void* binary,
+ GLint binary_size) {
+ requiresExtension(GL_OES_get_program_binary)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramParameteriEXT(ProgramId program, GLenum pname, GLint value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glProgramPathFragmentInputGenNV(ProgramId program,
+ GLint location,
+ GLenum genMode,
+ GLint components,
+ const GLfloat* coeffs) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1fEXT(ProgramId program, UniformLocation location, GLfloat v0) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1iEXT(ProgramId program, UniformLocation location, GLint v0) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1ivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1uiEXT(ProgramId program, UniformLocation location, GLuint v0) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform1uivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2fEXT(ProgramId program,
+ UniformLocation location,
+ GLfloat v0,
+ GLfloat v1) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2iEXT(ProgramId program, UniformLocation location, GLint v0, GLint v1) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2ivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2uiEXT(ProgramId program, UniformLocation location, GLuint v0, GLuint v1) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform2uivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3fEXT(ProgramId program,
+ UniformLocation location,
+ GLfloat v0,
+ GLfloat v1,
+ GLfloat v2) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3iEXT(ProgramId program,
+ UniformLocation location,
+ GLint v0,
+ GLint v1,
+ GLint v2) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3ivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3uiEXT(ProgramId program,
+ UniformLocation location,
+ GLuint v0,
+ GLuint v1,
+ GLuint v2) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform3uivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4fEXT(ProgramId program,
+ UniformLocation location,
+ GLfloat v0,
+ GLfloat v1,
+ GLfloat v2,
+ GLfloat v3) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4iEXT(ProgramId program,
+ UniformLocation location,
+ GLint v0,
+ GLint v1,
+ GLint v2,
+ GLint v3) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4ivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4uiEXT(ProgramId program,
+ UniformLocation location,
+ GLuint v0,
+ GLuint v1,
+ GLuint v2,
+ GLuint v3) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniform4uivEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glProgramUniformHandleui64NV(ProgramId program, UniformLocation location, GLuint64 value) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glProgramUniformHandleui64vNV(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint64* values) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix2fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix2x3fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix2x4fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix3fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix3x2fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix3x4fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix4fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix4x2fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glProgramUniformMatrix4x3fvEXT(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt","GL_EXT_debug_marker")
+cmd void glPushGroupMarkerEXT(GLsizei length, const GLchar* marker) {
+ requiresExtension(GL_EXT_debug_marker)
+
+ if length > 0 {
+ read(marker[0:length])
+ } else {
+ _ = as!string(marker)
+ }
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_disjoint_timer_query.txt","GL_EXT_disjoint_timer_query")
+cmd void glQueryCounterEXT(QueryId query, GLenum target) {
+ requiresExtension(GL_EXT_disjoint_timer_query)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multiview_draw_buffers.txt","GL_EXT_multiview_draw_buffers")
+cmd void glReadBufferIndexedEXT(GLenum src, GLint index) {
+ requiresExtension(GL_EXT_multiview_draw_buffers)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_read_buffer.txt","GL_NV_read_buffer")
+cmd void glReadBufferNV(GLenum mode) {
+ requiresExtension(GL_NV_read_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt","GL_EXT_robustness")
+cmd void glReadnPixelsEXT(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ void* data) {
+ requiresExtension(GL_EXT_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/KHR/robustness.txt","GL_KHR_robustness")
+cmd void glReadnPixelsKHR(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ GLsizei bufSize,
+ void* data) {
+ requiresExtension(GL_KHR_robustness)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_framebuffer_multisample.txt","GL_ANGLE_framebuffer_multisample")
+cmd void glRenderbufferStorageMultisampleANGLE(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_ANGLE_framebuffer_multisample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt","GL_APPLE_framebuffer_multisample")
+cmd void glRenderbufferStorageMultisampleAPPLE(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_APPLE_framebuffer_multisample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_multisampled_render_to_texture.txt","GL_EXT_multisampled_render_to_texture")
+cmd void glRenderbufferStorageMultisampleEXT(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_EXT_multisampled_render_to_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/IMG/IMG_multisampled_render_to_texture.txt","GL_IMG_multisampled_render_to_texture")
+cmd void glRenderbufferStorageMultisampleIMG(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_IMG_multisampled_render_to_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_framebuffer_multisample.txt","GL_NV_framebuffer_multisample")
+cmd void glRenderbufferStorageMultisampleNV(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_NV_framebuffer_multisample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_framebuffer_multisample.txt","GL_APPLE_framebuffer_multisample")
+cmd void glResolveMultisampleFramebufferAPPLE() {
+ requiresExtension(GL_APPLE_framebuffer_multisample)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glSamplerParameterIivOES(SamplerId sampler, GLenum pname, const GLint* param) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glSamplerParameterIuivOES(SamplerId sampler, GLenum pname, const GLuint* param) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glScissorArrayvNV(GLuint first, GLsizei count, const GLint* v) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glScissorIndexedNV(GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glScissorIndexedvNV(GLuint index, const GLint* v) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/AMD/performance_monitor.txt","GL_AMD_performance_monitor")
+cmd void glSelectPerfMonitorCountersAMD(GLuint monitor,
+ GLboolean enable,
+ GLuint group,
+ GLint numCounters,
+ GLuint* counterList) {
+ requiresExtension(GL_AMD_performance_monitor)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd void glSetFenceNV(GLuint fence, GLenum condition) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/QCOM/QCOM_tiled_rendering.txt","GL_QCOM_tiled_rendering")
+cmd void glStartTilingQCOM(GLuint x,
+ GLuint y,
+ GLuint width,
+ GLuint height,
+ GLbitfield preserveMask) {
+ requiresExtension(GL_QCOM_tiled_rendering)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilFillPathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilFillPathNV(GLuint path, GLenum fillMode, GLuint mask) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilStrokePathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilStrokePathNV(GLuint path, GLint reference, GLuint mask) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilThenCoverFillPathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLenum fillMode,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilThenCoverFillPathNV(GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilThenCoverStrokePathInstancedNV(GLsizei numPaths,
+ GLenum pathNameType,
+ const void* paths,
+ GLuint pathBase,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glStencilThenCoverStrokePathNV(GLuint path,
+ GLint reference,
+ GLuint mask,
+ GLenum coverMode) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fence.txt","GL_NV_fence")
+cmd GLboolean glTestFenceNV(GLuint fence) {
+ requiresExtension(GL_NV_fence)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt","GL_OES_texture_buffer")
+cmd void glTexBufferOES(GLenum target, GLenum internalformat, BufferId buffer) {
+ requiresExtension(GL_OES_texture_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_buffer.txt","GL_OES_texture_buffer")
+cmd void glTexBufferRangeOES(GLenum target,
+ GLenum internalformat,
+ BufferId buffer,
+ GLintptr offset,
+ GLsizeiptr size) {
+ requiresExtension(GL_OES_texture_buffer)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glTexImage3DOES(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ const void* pixels) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_sparse_texture.txt","GL_EXT_sparse_texture")
+cmd void glTexPageCommitmentARB(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLboolean commit) {
+ requiresExtension(GL_EXT_sparse_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glTexParameterIivOES(GLenum target, GLenum pname, const GLint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_border_clamp.txt","GL_OES_texture_border_clamp")
+cmd void glTexParameterIuivOES(GLenum target, GLenum pname, const GLuint* params) {
+ requiresExtension(GL_OES_texture_border_clamp)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTexStorage1DEXT(GLenum target, GLsizei levels, GLenum format, GLsizei width) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTexStorage2DEXT(GLenum target,
+ GLsizei levels,
+ GLenum format,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTexStorage3DEXT(GLenum target,
+ GLsizei levels,
+ GLenum format,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_3D.txt","GL_OES_texture_3D")
+cmd void glTexSubImage3DOES(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLenum type,
+ const void* pixels) {
+ requiresExtension(GL_OES_texture_3D)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTextureStorage1DEXT(TextureId texture,
+ GLenum target,
+ GLsizei levels,
+ GLenum format,
+ GLsizei width) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTextureStorage2DEXT(TextureId texture,
+ GLenum target,
+ GLsizei levels,
+ GLenum format,
+ GLsizei width,
+ GLsizei height) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_storage.txt","GL_EXT_texture_storage")
+cmd void glTextureStorage3DEXT(TextureId texture,
+ GLenum target,
+ GLsizei levels,
+ GLenum format,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth) {
+ requiresExtension(GL_EXT_texture_storage)
+
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_view.txt","GL_EXT_texture_view")
+cmd void glTextureViewEXT(TextureId texture,
+ GLenum target,
+ GLuint origtexture,
+ GLenum internalformat,
+ GLuint minlevel,
+ GLuint numlevels,
+ GLuint minlayer,
+ GLuint numlayers) {
+ requiresExtension(GL_EXT_texture_view)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_texture_view.txt","GL_OES_texture_view")
+cmd void glTextureViewOES(TextureId texture,
+ GLenum target,
+ GLuint origtexture,
+ GLenum internalformat,
+ GLuint minlevel,
+ GLuint numlevels,
+ GLuint minlayer,
+ GLuint numlayers) {
+ requiresExtension(GL_OES_texture_view)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glTransformPathNV(GLuint resultPath,
+ GLuint srcPath,
+ GLenum transformType,
+ const GLfloat* transformValues) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glUniformHandleui64NV(UniformLocation location, GLuint64 value) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/bindless_texture.txt","GL_NV_bindless_texture")
+cmd void glUniformHandleui64vNV(UniformLocation location, GLsizei count, const GLuint64* value) {
+ requiresExtension(GL_NV_bindless_texture)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix2x3fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix2x4fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix3x2fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix3x4fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix4x2fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_non_square_matrices.txt","GL_NV_non_square_matrices")
+cmd void glUniformMatrix4x3fvNV(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ requiresExtension(GL_NV_non_square_matrices)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/OES/OES_mapbuffer.txt","GL_OES_mapbuffer")
+cmd GLboolean glUnmapBufferOES(GLenum target) {
+ requiresExtension(GL_OES_mapbuffer)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glUseProgramStagesEXT(PipelineId pipeline, GLbitfield stages, ProgramId program) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_separate_shader_objects.txt","GL_EXT_separate_shader_objects")
+cmd void glValidateProgramPipelineEXT(PipelineId pipeline) {
+ requiresExtension(GL_EXT_separate_shader_objects)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/ANGLE/ANGLE_instanced_arrays.txt","GL_ANGLE_instanced_arrays")
+cmd void glVertexAttribDivisorANGLE(AttributeLocation index, GLuint divisor) {
+ requiresExtension(GL_ANGLE_instanced_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/EXT_instanced_arrays.txt","GL_EXT_instanced_arrays")
+cmd void glVertexAttribDivisorEXT(AttributeLocation index, GLuint divisor) {
+ requiresExtension(GL_EXT_instanced_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_instanced_arrays.txt","GL_NV_instanced_arrays")
+cmd void glVertexAttribDivisorNV(AttributeLocation index, GLuint divisor) {
+ requiresExtension(GL_NV_instanced_arrays)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glViewportArrayvNV(GLuint first, GLsizei count, const GLfloat* v) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glViewportIndexedfNV(GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/NV_viewport_array.txt","GL_NV_viewport_array")
+cmd void glViewportIndexedfvNV(GLuint index, const GLfloat* v) {
+ requiresExtension(GL_NV_viewport_array)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/APPLE/APPLE_sync.txt","GL_APPLE_sync")
+cmd void glWaitSyncAPPLE(GLsync sync, GLbitfield flags, GLuint64 timeout) {
+ requiresExtension(GL_APPLE_sync)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/path_rendering.txt","GL_NV_path_rendering")
+cmd void glWeightPathsNV(GLuint resultPath,
+ GLsizei numPaths,
+ const GLuint* paths,
+ const GLfloat* weights) {
+ requiresExtension(GL_NV_path_rendering)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+cmd void glCoverageModulationNV(GLenum components) {
+ requiresExtension(GL_NV_framebuffer_mixed_samples)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+cmd void glCoverageModulationTableNV(GLsizei n, const GLfloat* v) {
+ requiresExtension(GL_NV_framebuffer_mixed_samples)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/fragment_coverage_to_color.txt","GL_NV_fragment_coverage_to_color")
+cmd void glFragmentCoverageColorNV(GLuint color) {
+ requiresExtension(GL_NV_fragment_coverage_to_color)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+cmd void glFramebufferSampleLocationsfvNV(GLenum target,
+ GLuint start,
+ GLsizei count,
+ const GLfloat* v) {
+ requiresExtension(GL_NV_sample_locations)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+cmd void glGetCoverageModulationTableNV(GLsizei bufsize, GLfloat* v) {
+ requiresExtension(GL_NV_framebuffer_mixed_samples)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+cmd void glNamedFramebufferSampleLocationsfvNV(FramebufferId framebuffer,
+ GLuint start,
+ GLsizei count,
+ const GLfloat* v) {
+ requiresExtension(GL_NV_sample_locations)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/raster_multisample.txt","GL_EXT_raster_multisample")
+@Doc("https://www.khronos.org/registry/gles/extensions/EXT/texture_filter_minmax.txt","GL_EXT_texture_filter_minmax")
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/framebuffer_mixed_samples.txt","GL_NV_framebuffer_mixed_samples")
+cmd void glRasterSamplesEXT(GLuint samples, GLboolean fixedsamplelocations) {
+ requiresExtension(GL_EXT_raster_multisample)
+ requiresExtension(GL_EXT_texture_filter_minmax)
+ requiresExtension(GL_NV_framebuffer_mixed_samples)
+ // TODO: Multiple extensions
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/sample_locations.txt","GL_NV_sample_locations")
+cmd void glResolveDepthValuesNV() {
+ requiresExtension(GL_NV_sample_locations)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/registry/gles/extensions/NV/conservative_raster.txt","GL_NV_conservative_raster")
+cmd void glSubpixelPrecisionBiasNV(GLuint xbits, GLuint ybits) {
+ requiresExtension(GL_NV_conservative_raster)
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/fragment_operations.api b/gfxapi/gles/api/fragment_operations.api
new file mode 100644
index 000000000..ce1f329ae
--- /dev/null
+++ b/gfxapi/gles/api/fragment_operations.api
@@ -0,0 +1,339 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendColor.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlendColor.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlendColor.xhtml","OpenGL ES 3.1")
+cmd void glBlendColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Blending.BlendColor = Color(
+ Red: red,
+ Green: green,
+ Blue: blue,
+ Alpha: alpha,
+ )
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendEquation.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlendEquation.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlendEquation.xhtml","OpenGL ES 3.1")
+cmd void glBlendEquation(GLenum equation) {
+ minRequiredVersion(2, 0)
+ switch (equation) {
+ case GL_FUNC_ADD, GL_FUNC_REVERSE_SUBTRACT, GL_FUNC_SUBTRACT: {
+ // version 2.0
+ }
+ case GL_MAX, GL_MIN: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(equation)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Blending.BlendEquationRgb = equation
+ ctx.Blending.BlendEquationAlpha = equation
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendEquationSeparate.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlendEquationSeparate.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlendEquationSeparate.xhtml","OpenGL ES 3.1")
+cmd void glBlendEquationSeparate(GLenum rgb, GLenum alpha) {
+ minRequiredVersion(2, 0)
+ switch (rgb) {
+ case GL_FUNC_ADD, GL_FUNC_REVERSE_SUBTRACT, GL_FUNC_SUBTRACT: {
+ // version 2.0
+ }
+ case GL_MAX, GL_MIN: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(rgb)
+ }
+ }
+ switch (alpha) {
+ case GL_FUNC_ADD, GL_FUNC_REVERSE_SUBTRACT, GL_FUNC_SUBTRACT: {
+ // version 2.0
+ }
+ case GL_MAX, GL_MIN: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(alpha)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Blending.BlendEquationRgb = rgb
+ ctx.Blending.BlendEquationAlpha = alpha
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendFunc.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlendFunc.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlendFunc.xhtml","OpenGL ES 3.1")
+cmd void glBlendFunc(GLenum src_factor, GLenum dst_factor) {
+ minRequiredVersion(2, 0)
+ switch (src_factor) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_ALPHA_SATURATE, GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(src_factor)
+ }
+ }
+ switch (dst_factor) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(dst_factor)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Blending.SrcRgbBlendFactor = src_factor
+ ctx.Blending.SrcAlphaBlendFactor = src_factor
+ ctx.Blending.DstRgbBlendFactor = dst_factor
+ ctx.Blending.DstAlphaBlendFactor = dst_factor
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBlendFuncSeparate.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlendFuncSeparate.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlendFuncSeparate.xhtml","OpenGL ES 3.1")
+cmd void glBlendFuncSeparate(GLenum src_factor_rgb,
+ GLenum dst_factor_rgb,
+ GLenum src_factor_alpha,
+ GLenum dst_factor_alpha) {
+ minRequiredVersion(2, 0)
+ switch (src_factor_rgb) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_ALPHA_SATURATE, GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(src_factor_rgb)
+ }
+ }
+ switch (dst_factor_rgb) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(dst_factor_rgb)
+ }
+ }
+ switch (src_factor_alpha) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_ALPHA_SATURATE, GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(src_factor_alpha)
+ }
+ }
+ switch (dst_factor_alpha) {
+ case GL_CONSTANT_ALPHA, GL_CONSTANT_COLOR, GL_DST_ALPHA, GL_DST_COLOR, GL_ONE,
+ GL_ONE_MINUS_CONSTANT_ALPHA, GL_ONE_MINUS_CONSTANT_COLOR, GL_ONE_MINUS_DST_ALPHA,
+ GL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR, GL_SRC_ALPHA,
+ GL_SRC_COLOR, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(dst_factor_alpha)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Blending.SrcRgbBlendFactor = src_factor_rgb
+ ctx.Blending.DstRgbBlendFactor = dst_factor_rgb
+ ctx.Blending.SrcAlphaBlendFactor = src_factor_alpha
+ ctx.Blending.DstAlphaBlendFactor = dst_factor_alpha
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDepthFunc.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDepthFunc.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDepthFunc.xhtml","OpenGL ES 3.1")
+cmd void glDepthFunc(GLenum function) {
+ minRequiredVersion(2, 0)
+ switch (function) {
+ case GL_ALWAYS, GL_EQUAL, GL_GEQUAL, GL_GREATER, GL_LEQUAL, GL_LESS, GL_NEVER, GL_NOTEQUAL: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(function)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Rasterizing.DepthTestFunction = function
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glSampleCoverage.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glSampleCoverage.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSampleCoverage.xhtml","OpenGL ES 3.1")
+cmd void glSampleCoverage(GLfloat value, GLboolean invert) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.SampleCoverageValue = value
+ ctx.Rasterizing.SampleCoverageInvert = invert
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSampleMaski.xhtml","OpenGL ES 3.1")
+cmd void glSampleMaski(GLuint maskNumber, GLbitfield mask) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glScissor.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glScissor.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glScissor.xhtml","OpenGL ES 3.1")
+cmd void glScissor(GLint x, GLint y, GLsizei width, GLsizei height) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.Scissor = Rect(x, y, width, height)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilFunc.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilFunc.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilFunc.xhtml","OpenGL ES 3.1")
+cmd void glStencilFunc(GLenum func, GLint ref, GLuint mask) {
+ minRequiredVersion(2, 0)
+ switch (func) {
+ case GL_ALWAYS, GL_EQUAL, GL_GEQUAL, GL_GREATER, GL_LEQUAL, GL_LESS, GL_NEVER, GL_NOTEQUAL: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(func)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilFuncSeparate.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilFuncSeparate.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilFuncSeparate.xhtml","OpenGL ES 3.1")
+cmd void glStencilFuncSeparate(GLenum face, GLenum function, GLint reference_value, GLuint mask) {
+ minRequiredVersion(2, 0)
+ switch (face) {
+ case GL_BACK, GL_FRONT, GL_FRONT_AND_BACK: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(face)
+ }
+ }
+ switch (function) {
+ case GL_ALWAYS, GL_EQUAL, GL_GEQUAL, GL_GREATER, GL_LEQUAL, GL_LESS, GL_NEVER, GL_NOTEQUAL: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(function)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilOp.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilOp.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilOp.xhtml","OpenGL ES 3.1")
+cmd void glStencilOp(GLenum fail, GLenum zfail, GLenum zpass) {
+ minRequiredVersion(2, 0)
+ switch (fail) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(fail)
+ }
+ }
+ switch (zfail) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(zfail)
+ }
+ }
+ switch (zpass) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(zpass)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilOpSeparate.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilOpSeparate.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilOpSeparate.xhtml","OpenGL ES 3.1")
+cmd void glStencilOpSeparate(GLenum face,
+ GLenum stencil_fail,
+ GLenum stencil_pass_depth_fail,
+ GLenum stencil_pass_depth_pass) {
+ minRequiredVersion(2, 0)
+ switch (face) {
+ case GL_BACK, GL_FRONT, GL_FRONT_AND_BACK: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(face)
+ }
+ }
+ switch (stencil_fail) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(stencil_fail)
+ }
+ }
+ switch (stencil_pass_depth_fail) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(stencil_pass_depth_fail)
+ }
+ }
+ switch (stencil_pass_depth_pass) {
+ case GL_DECR, GL_DECR_WRAP, GL_INCR, GL_INCR_WRAP, GL_INVERT, GL_KEEP, GL_REPLACE, GL_ZERO: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(stencil_pass_depth_pass)
+ }
+ }
+
+}
+
diff --git a/gfxapi/gles/api/framebuffer.api b/gfxapi/gles/api/framebuffer.api
new file mode 100644
index 000000000..3e7e90032
--- /dev/null
+++ b/gfxapi/gles/api/framebuffer.api
@@ -0,0 +1,858 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindFramebuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindFramebuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindFramebuffer.xhtml","OpenGL ES 3.1")
+cmd void glBindFramebuffer(GLenum target, FramebufferId framebuffer) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_FRAMEBUFFER: {
+ // version 2.0
+ }
+ case GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ ctx := GetContext()
+ if !(framebuffer in ctx.Instances.Framebuffers) {
+ ctx.Instances.Framebuffers[framebuffer] = new!Framebuffer()
+ }
+ if target == GL_FRAMEBUFFER {
+ ctx.BoundFramebuffers[GL_READ_FRAMEBUFFER] = framebuffer
+ ctx.BoundFramebuffers[GL_DRAW_FRAMEBUFFER] = framebuffer
+ } else {
+ ctx.BoundFramebuffers[target] = framebuffer
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindRenderbuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindRenderbuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindRenderbuffer.xhtml","OpenGL ES 3.1")
+cmd void glBindRenderbuffer(GLenum target, RenderbufferId renderbuffer) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_RENDERBUFFER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ ctx := GetContext()
+ if !(renderbuffer in ctx.Instances.Renderbuffers) {
+ ctx.Instances.Renderbuffers[renderbuffer] = new!Renderbuffer()
+ }
+ ctx.BoundRenderbuffers[target] = renderbuffer
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBlitFramebuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBlitFramebuffer.xhtml","OpenGL ES 3.1")
+cmd void glBlitFramebuffer(GLint srcX0,
+ GLint srcY0,
+ GLint srcX1,
+ GLint srcY1,
+ GLint dstX0,
+ GLint dstY0,
+ GLint dstX1,
+ GLint dstY1,
+ GLbitfield mask,
+ GLenum filter) {
+ minRequiredVersion(3, 0)
+ supportsBits(mask, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
+ if (GL_COLOR_BUFFER_BIT in mask) {
+ }
+ if (GL_DEPTH_BUFFER_BIT in mask) {
+ }
+ if (GL_STENCIL_BUFFER_BIT in mask) {
+ }
+ switch (filter) {
+ case GL_LINEAR, GL_NEAREST: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(filter)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCheckFramebufferStatus.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCheckFramebufferStatus.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCheckFramebufferStatus.xhtml","OpenGL ES 3.1")
+cmd GLenum glCheckFramebufferStatus(GLenum target) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_FRAMEBUFFER: {
+ // version 2.0
+ }
+ case GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glClear.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClear.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClear.xhtml","OpenGL ES 3.1")
+cmd void glClear(GLbitfield mask) {
+ minRequiredVersion(2, 0)
+ supportsBits(mask, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)
+ if (GL_COLOR_BUFFER_BIT in mask) {
+ }
+ if (GL_DEPTH_BUFFER_BIT in mask) {
+ }
+ if (GL_STENCIL_BUFFER_BIT in mask) {
+ }
+
+ // TODO: use(Clearing.ClearColor) when mask[GL_COLOR_BUFFER_BIT] == true
+ if (GL_COLOR_BUFFER_BIT in mask) {
+ // color := BoundFramebuffers[GL_FRAMEBUFFER].Attachments[GL_COLOR_ATTACHMENT0]
+ // error("Attempting to clear missing color buffer") if !exists(color)
+ // modifies(color.Levels[0].Data) // COMPILATION ERROR
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearBuffer.xhtml","OpenGL ES 3.1")
+cmd void glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) {
+ minRequiredVersion(3, 0)
+ switch (buffer) {
+ case GL_DEPTH_STENCIL: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(buffer)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearBuffer.xhtml","OpenGL ES 3.1")
+cmd void glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ switch (buffer) {
+ case GL_COLOR, GL_DEPTH: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(buffer)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearBuffer.xhtml","OpenGL ES 3.1")
+cmd void glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value) {
+ minRequiredVersion(3, 0)
+ switch (buffer) {
+ case GL_COLOR, GL_STENCIL: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(buffer)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearBuffer.xhtml","OpenGL ES 3.1")
+cmd void glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value) {
+ minRequiredVersion(3, 0)
+ switch (buffer) {
+ case GL_COLOR: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(buffer)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glClearColor.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearColor.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearColor.xhtml","OpenGL ES 3.1")
+cmd void glClearColor(GLfloat r, GLfloat g, GLfloat b, GLfloat a) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Clearing.ClearColor = Color(r, g, b, a)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glClearDepthf.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearDepthf.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearDepthf.xhtml","OpenGL ES 3.1")
+cmd void glClearDepthf(GLfloat depth) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Clearing.ClearDepth = depth
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glClearStencil.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClearStencil.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClearStencil.xhtml","OpenGL ES 3.1")
+cmd void glClearStencil(GLint stencil) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Clearing.ClearStencil = stencil
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glColorMask.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glColorMask.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glColorMask.xhtml","OpenGL ES 3.1")
+cmd void glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.ColorMaskRed = red
+ ctx.Rasterizing.ColorMaskGreen = green
+ ctx.Rasterizing.ColorMaskBlue = blue
+ ctx.Rasterizing.ColorMaskAlpha = alpha
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteFramebuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteFramebuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteFramebuffers.xhtml","OpenGL ES 3.1")
+cmd void glDeleteFramebuffers(GLsizei count, const FramebufferId* framebuffers) {
+ minRequiredVersion(2, 0)
+
+ f := framebuffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Framebuffers[f[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteRenderbuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteRenderbuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteRenderbuffers.xhtml","OpenGL ES 3.1")
+cmd void glDeleteRenderbuffers(GLsizei count, const RenderbufferId* renderbuffers) {
+ minRequiredVersion(2, 0)
+
+ r := renderbuffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Renderbuffers[r[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDepthMask.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDepthMask.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDepthMask.xhtml","OpenGL ES 3.1")
+cmd void glDepthMask(GLboolean enabled) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.DepthMask = enabled
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFramebufferParameteri.xhtml","OpenGL ES 3.1")
+cmd void glFramebufferParameteri(GLenum target, GLenum pname, GLint param) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS, GL_FRAMEBUFFER_DEFAULT_HEIGHT,
+ GL_FRAMEBUFFER_DEFAULT_SAMPLES, GL_FRAMEBUFFER_DEFAULT_WIDTH: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFramebufferRenderbuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFramebufferRenderbuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFramebufferRenderbuffer.xhtml","OpenGL ES 3.1")
+cmd void glFramebufferRenderbuffer(GLenum framebuffer_target,
+ GLenum framebuffer_attachment,
+ GLenum renderbuffer_target,
+ RenderbufferId renderbuffer) {
+ minRequiredVersion(2, 0)
+ switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: {
+ // version 2.0
+ }
+ case GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(framebuffer_target)
+ }
+ }
+ switch (framebuffer_attachment) {
+ case GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT: {
+ // version 2.0
+ }
+ case GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT10, GL_COLOR_ATTACHMENT11, GL_COLOR_ATTACHMENT12,
+ GL_COLOR_ATTACHMENT13, GL_COLOR_ATTACHMENT14, GL_COLOR_ATTACHMENT15, GL_COLOR_ATTACHMENT2,
+ GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4, GL_COLOR_ATTACHMENT5, GL_COLOR_ATTACHMENT6,
+ GL_COLOR_ATTACHMENT7, GL_COLOR_ATTACHMENT8, GL_COLOR_ATTACHMENT9,
+ GL_DEPTH_STENCIL_ATTACHMENT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(framebuffer_attachment)
+ }
+ }
+ switch (renderbuffer_target) {
+ case GL_RENDERBUFFER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(renderbuffer_target)
+ }
+ }
+
+ ctx := GetContext()
+ target := switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_DRAW_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_READ_FRAMEBUFFER: as!GLenum(GL_READ_FRAMEBUFFER)
+ }
+ framebufferId := ctx.BoundFramebuffers[target]
+ framebuffer := ctx.Instances.Framebuffers[framebufferId]
+ attachment := framebuffer.Attachments[framebuffer_attachment]
+ if (renderbuffer == 0) {
+ attachment.Type = GL_NONE
+ } else {
+ attachment.Type = GL_RENDERBUFFER
+ }
+ attachment.Object = as!u32(renderbuffer)
+ attachment.TextureLevel = 0
+ attachment.CubeMapFace = GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ framebuffer.Attachments[framebuffer_attachment] = attachment
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFramebufferTexture2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFramebufferTexture2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFramebufferTexture2D.xhtml","OpenGL ES 3.1")
+cmd void glFramebufferTexture2D(GLenum framebuffer_target,
+ GLenum framebuffer_attachment,
+ GLenum texture_target,
+ TextureId texture,
+ GLint level) {
+ minRequiredVersion(2, 0)
+ switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: {
+ // version 2.0
+ }
+ case GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(framebuffer_target)
+ }
+ }
+ switch (framebuffer_attachment) {
+ case GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT: {
+ // version 2.0
+ }
+ case GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT10, GL_COLOR_ATTACHMENT11, GL_COLOR_ATTACHMENT12,
+ GL_COLOR_ATTACHMENT13, GL_COLOR_ATTACHMENT14, GL_COLOR_ATTACHMENT15, GL_COLOR_ATTACHMENT2,
+ GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4, GL_COLOR_ATTACHMENT5, GL_COLOR_ATTACHMENT6,
+ GL_COLOR_ATTACHMENT7, GL_COLOR_ATTACHMENT8, GL_COLOR_ATTACHMENT9,
+ GL_DEPTH_STENCIL_ATTACHMENT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(framebuffer_attachment)
+ }
+ }
+ switch (texture_target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(texture_target)
+ }
+ }
+
+ ctx := GetContext()
+ target := switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_DRAW_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_READ_FRAMEBUFFER: as!GLenum(GL_READ_FRAMEBUFFER)
+ }
+ framebufferId := ctx.BoundFramebuffers[target]
+ framebuffer := ctx.Instances.Framebuffers[framebufferId]
+ attachment := framebuffer.Attachments[framebuffer_attachment]
+ if (texture == 0) {
+ attachment.Type = GL_NONE
+ attachment.Object = 0
+ attachment.TextureLevel = 0
+ attachment.CubeMapFace = GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ } else {
+ attachment.Type = GL_TEXTURE
+ attachment.Object = as!u32(texture)
+ attachment.TextureLevel = level
+ attachment.CubeMapFace = switch (texture_target) {
+ case GL_TEXTURE_2D: GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X: GL_TEXTURE_CUBE_MAP_POSITIVE_X
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: GL_TEXTURE_CUBE_MAP_POSITIVE_Y
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: GL_TEXTURE_CUBE_MAP_POSITIVE_Z
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: GL_TEXTURE_CUBE_MAP_NEGATIVE_X
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
+ }
+ }
+ framebuffer.Attachments[framebuffer_attachment] = attachment
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFramebufferTextureLayer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFramebufferTextureLayer.xhtml","OpenGL ES 3.1")
+cmd void glFramebufferTextureLayer(GLenum target,
+ GLenum attachment,
+ TextureId texture,
+ GLint level,
+ GLint layer) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (attachment) {
+ case GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT10, GL_COLOR_ATTACHMENT11,
+ GL_COLOR_ATTACHMENT12, GL_COLOR_ATTACHMENT13, GL_COLOR_ATTACHMENT14, GL_COLOR_ATTACHMENT15,
+ GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4, GL_COLOR_ATTACHMENT5,
+ GL_COLOR_ATTACHMENT6, GL_COLOR_ATTACHMENT7, GL_COLOR_ATTACHMENT8, GL_COLOR_ATTACHMENT9,
+ GL_DEPTH_ATTACHMENT, GL_DEPTH_STENCIL_ATTACHMENT, GL_STENCIL_ATTACHMENT: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(attachment)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGenFramebuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenFramebuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenFramebuffers.xhtml","OpenGL ES 3.1")
+cmd void glGenFramebuffers(GLsizei count, FramebufferId* framebuffers) {
+ minRequiredVersion(2, 0)
+
+ f := framebuffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!FramebufferId(?)
+ ctx.Instances.Framebuffers[id] = new!Framebuffer()
+ f[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGenRenderbuffers.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenRenderbuffers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenRenderbuffers.xhtml","OpenGL ES 3.1")
+cmd void glGenRenderbuffers(GLsizei count, RenderbufferId* renderbuffers) {
+ minRequiredVersion(2, 0)
+
+ r := renderbuffers[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!RenderbufferId(?)
+ ctx.Instances.Renderbuffers[id] = new!Renderbuffer()
+ r[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetFramebufferAttachmentParameteriv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetFramebufferAttachmentParameteriv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetFramebufferAttachmentParameteriv.xhtml","OpenGL ES 3.1")
+cmd void glGetFramebufferAttachmentParameteriv(GLenum framebuffer_target,
+ GLenum attachment,
+ GLenum parameter,
+ GLint* value) {
+ minRequiredVersion(2, 0)
+ switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: {
+ // version 2.0
+ }
+ case GL_DRAW_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(framebuffer_target)
+ }
+ }
+ switch (attachment) {
+ case GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT, GL_STENCIL_ATTACHMENT: {
+ // version 2.0
+ }
+ case GL_BACK, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT10, GL_COLOR_ATTACHMENT11,
+ GL_COLOR_ATTACHMENT12, GL_COLOR_ATTACHMENT13, GL_COLOR_ATTACHMENT14, GL_COLOR_ATTACHMENT15,
+ GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4, GL_COLOR_ATTACHMENT5,
+ GL_COLOR_ATTACHMENT6, GL_COLOR_ATTACHMENT7, GL_COLOR_ATTACHMENT8, GL_COLOR_ATTACHMENT9,
+ GL_DEPTH, GL_DEPTH_STENCIL_ATTACHMENT, GL_STENCIL: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(attachment)
+ }
+ }
+ switch (parameter) {
+ case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: {
+ // version 2.0
+ }
+ case GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE, GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING, GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
+ GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE, GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
+ GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE, GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ target := switch (framebuffer_target) {
+ case GL_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_DRAW_FRAMEBUFFER: as!GLenum(GL_DRAW_FRAMEBUFFER)
+ case GL_READ_FRAMEBUFFER: as!GLenum(GL_READ_FRAMEBUFFER)
+ }
+ framebufferId := ctx.BoundFramebuffers[target]
+ framebuffer := ctx.Instances.Framebuffers[framebufferId]
+ a := framebuffer.Attachments[attachment]
+ value[0] = switch (parameter) {
+ case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: as!s32(a.Type)
+ case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: as!s32(a.Object)
+ case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: as!s32(a.TextureLevel)
+ case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: as!s32(a.CubeMapFace)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetFramebufferParameteriv.xhtml","OpenGL ES 3.1")
+cmd void glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_DRAW_FRAMEBUFFER, GL_FRAMEBUFFER, GL_READ_FRAMEBUFFER: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS, GL_FRAMEBUFFER_DEFAULT_HEIGHT,
+ GL_FRAMEBUFFER_DEFAULT_SAMPLES, GL_FRAMEBUFFER_DEFAULT_WIDTH: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetRenderbufferParameteriv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetRenderbufferParameteriv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetRenderbufferParameteriv.xhtml","OpenGL ES 3.1")
+cmd void glGetRenderbufferParameteriv(GLenum target, GLenum parameter, GLint* values) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_RENDERBUFFER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_RENDERBUFFER_ALPHA_SIZE, GL_RENDERBUFFER_BLUE_SIZE, GL_RENDERBUFFER_DEPTH_SIZE,
+ GL_RENDERBUFFER_GREEN_SIZE, GL_RENDERBUFFER_HEIGHT, GL_RENDERBUFFER_INTERNAL_FORMAT,
+ GL_RENDERBUFFER_RED_SIZE, GL_RENDERBUFFER_STENCIL_SIZE, GL_RENDERBUFFER_WIDTH: {
+ // version 2.0
+ }
+ case GL_RENDERBUFFER_SAMPLES: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.BoundRenderbuffers[target]
+ rb := ctx.Instances.Renderbuffers[id]
+ values[0] = switch (parameter) {
+ case GL_RENDERBUFFER_WIDTH: rb.Width
+ case GL_RENDERBUFFER_HEIGHT: rb.Height
+ case GL_RENDERBUFFER_INTERNAL_FORMAT: as!s32(rb.Format)
+ // TODO:
+ // case GL_RENDERBUFFER_RED_SIZE: ?
+ // case GL_RENDERBUFFER_GREEN_SIZE: ?
+ // case GL_RENDERBUFFER_BLUE_SIZE: ?
+ // case GL_RENDERBUFFER_ALPHA_SIZE: ?
+ // case GL_RENDERBUFFER_DEPTH_SIZE: ?
+ // case GL_RENDERBUFFER_STENCIL_SIZE: ?
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glInvalidateFramebuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glInvalidateFramebuffer.xhtml","OpenGL ES 3.1")
+cmd void glInvalidateFramebuffer(GLenum target, GLsizei count, const GLenum* attachments) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_FRAMEBUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glInvalidateSubFramebuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glInvalidateSubFramebuffer.xhtml","OpenGL ES 3.1")
+cmd void glInvalidateSubFramebuffer(GLenum target,
+ GLsizei numAttachments,
+ const GLenum* attachments,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_FRAMEBUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsFramebuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsFramebuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsFramebuffer.xhtml","OpenGL ES 3.1")
+cmd bool glIsFramebuffer(FramebufferId framebuffer) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return framebuffer in ctx.Instances.Framebuffers
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsRenderbuffer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsRenderbuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsRenderbuffer.xhtml","OpenGL ES 3.1")
+cmd bool glIsRenderbuffer(RenderbufferId renderbuffer) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return renderbuffer in ctx.Instances.Renderbuffers
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glReadBuffer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glReadBuffer.xhtml","OpenGL ES 3.1")
+cmd void glReadBuffer(GLenum src) {
+ minRequiredVersion(3, 0)
+ switch (src) {
+ case GL_BACK, GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT10,
+ GL_COLOR_ATTACHMENT11, GL_COLOR_ATTACHMENT12, GL_COLOR_ATTACHMENT13, GL_COLOR_ATTACHMENT14,
+ GL_COLOR_ATTACHMENT15, GL_COLOR_ATTACHMENT2, GL_COLOR_ATTACHMENT3, GL_COLOR_ATTACHMENT4,
+ GL_COLOR_ATTACHMENT5, GL_COLOR_ATTACHMENT6, GL_COLOR_ATTACHMENT7, GL_COLOR_ATTACHMENT8,
+ GL_COLOR_ATTACHMENT9, GL_NONE: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(src)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glReadPixels.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glReadPixels.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glReadPixels.xhtml","OpenGL ES 3.1")
+cmd void glReadPixels(GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ void* data) {
+ minRequiredVersion(2, 0)
+ switch (format) {
+ case GL_ALPHA, GL_RGB, GL_RGBA: {
+ // version 2.0
+ }
+ case GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RED, GL_RED_INTEGER, GL_RG, GL_RGBA_INTEGER,
+ GL_RGB_INTEGER, GL_RG_INTEGER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1,
+ GL_UNSIGNED_SHORT_5_6_5: {
+ // version 2.0
+ }
+ case GL_BYTE, GL_FLOAT, GL_HALF_FLOAT, GL_INT, GL_UNSIGNED_INT,
+ GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_2_10_10_10_REV,
+ GL_UNSIGNED_INT_5_9_9_9_REV: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+
+ write(data[0:imageSize(as!u32(width), as!u32(height), as!GLenum(format), type)])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glRenderbufferStorage.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glRenderbufferStorage.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glRenderbufferStorage.xhtml","OpenGL ES 3.1")
+cmd void glRenderbufferStorage(GLenum target, GLenum format, GLsizei width, GLsizei height) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_RENDERBUFFER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_DEPTH_COMPONENT16, GL_RGB565, GL_RGB5_A1, GL_RGBA4, GL_STENCIL_INDEX8: {
+ // version 2.0
+ }
+ case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32F,
+ GL_R16I, GL_R16UI, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI, GL_RG16I, GL_RG16UI,
+ GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RGB10_A2, GL_RGB10_A2UI, GL_RGB8,
+ GL_RGBA16I, GL_RGBA16UI, GL_RGBA32I, GL_RGBA32UI, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI,
+ GL_SRGB8_ALPHA8: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.BoundRenderbuffers[target]
+ rb := ctx.Instances.Renderbuffers[id]
+ rb.Format = format
+ rb.Width = width
+ rb.Height = height
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glRenderbufferStorageMultisample.xhtml","OpenGL ES 3.1")
+cmd void glRenderbufferStorageMultisample(GLenum target,
+ GLsizei samples,
+ GLenum format,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_RENDERBUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24,
+ GL_DEPTH_COMPONENT32F, GL_R16I, GL_R16UI, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI,
+ GL_RG16I, GL_RG16UI, GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RGB10_A2,
+ GL_RGB10_A2UI, GL_RGB565, GL_RGB5_A1, GL_RGB8, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32I,
+ GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI, GL_SRGB8_ALPHA8, GL_STENCIL_INDEX8:
+ {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilMask.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilMask.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilMask.xhtml","OpenGL ES 3.1")
+cmd void glStencilMask(GLuint mask) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.StencilMask[GL_FRONT] = mask
+ ctx.Rasterizing.StencilMask[GL_BACK] = mask
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glStencilMaskSeparate.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glStencilMaskSeparate.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glStencilMaskSeparate.xhtml","OpenGL ES 3.1")
+cmd void glStencilMaskSeparate(GLenum face, GLuint mask) {
+ minRequiredVersion(2, 0)
+ switch (face) {
+ case GL_BACK, GL_FRONT, GL_FRONT_AND_BACK: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(face)
+ }
+ }
+
+ ctx := GetContext()
+ switch (face) {
+ case GL_FRONT: ctx.Rasterizing.StencilMask[GL_FRONT] = mask
+ case GL_BACK: ctx.Rasterizing.StencilMask[GL_BACK] = mask
+ case GL_FRONT_AND_BACK: {
+ ctx.Rasterizing.StencilMask[GL_FRONT] = mask
+ ctx.Rasterizing.StencilMask[GL_BACK] = mask
+ }
+ }
+}
+
diff --git a/gfxapi/gles/api/glbitfield.api b/gfxapi/gles/api/glbitfield.api
new file mode 100644
index 000000000..3e57ce9a6
--- /dev/null
+++ b/gfxapi/gles/api/glbitfield.api
@@ -0,0 +1,224 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+bitfield GLbitfield {
+ GL_CURRENT_BIT = 0x00000001,
+ GL_POINT_BIT = 0x00000002,
+ GL_LINE_BIT = 0x00000004,
+ GL_POLYGON_BIT = 0x00000008,
+ GL_POLYGON_STIPPLE_BIT = 0x00000010,
+ GL_PIXEL_MODE_BIT = 0x00000020,
+ GL_LIGHTING_BIT = 0x00000040,
+ GL_FOG_BIT = 0x00000080,
+ GL_DEPTH_BUFFER_BIT = 0x00000100,
+ GL_ACCUM_BUFFER_BIT = 0x00000200,
+ GL_STENCIL_BUFFER_BIT = 0x00000400,
+ GL_VIEWPORT_BIT = 0x00000800,
+ GL_TRANSFORM_BIT = 0x00001000,
+ GL_ENABLE_BIT = 0x00002000,
+ GL_COLOR_BUFFER_BIT = 0x00004000,
+ GL_HINT_BIT = 0x00008000,
+ GL_EVAL_BIT = 0x00010000,
+ GL_LIST_BIT = 0x00020000,
+ GL_TEXTURE_BIT = 0x00040000,
+ GL_SCISSOR_BIT = 0x00080000,
+ GL_MULTISAMPLE_BIT = 0x20000000,
+ GL_MULTISAMPLE_BIT_ARB = 0x20000000,
+ GL_MULTISAMPLE_BIT_EXT = 0x20000000,
+ GL_MULTISAMPLE_BIT_3DFX = 0x20000000,
+ GL_ALL_ATTRIB_BITS = 0xFFFFFFFF,
+ GL_COVERAGE_BUFFER_BIT_NV = 0x00008000,
+ GL_CLIENT_PIXEL_STORE_BIT = 0x00000001,
+ GL_CLIENT_VERTEX_ARRAY_BIT = 0x00000002,
+ GL_CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF,
+ GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x00000001,
+ GL_CONTEXT_FLAG_DEBUG_BIT = 0x00000002,
+ GL_CONTEXT_FLAG_DEBUG_BIT_KHR = 0x00000002,
+ GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB = 0x00000004,
+ GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT = 0x00000004,
+ GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR = 0x00000008,
+ GL_CONTEXT_CORE_PROFILE_BIT = 0x00000001,
+ GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002,
+ GL_MAP_READ_BIT = 0x00000001,
+ GL_MAP_READ_BIT_EXT = 0x00000001,
+ GL_MAP_WRITE_BIT = 0x00000002,
+ GL_MAP_WRITE_BIT_EXT = 0x00000002,
+ GL_MAP_INVALIDATE_RANGE_BIT = 0x00000004,
+ GL_MAP_INVALIDATE_RANGE_BIT_EXT = 0x00000004,
+ GL_MAP_INVALIDATE_BUFFER_BIT = 0x00000008,
+ GL_MAP_INVALIDATE_BUFFER_BIT_EXT = 0x00000008,
+ GL_MAP_FLUSH_EXPLICIT_BIT = 0x00000010,
+ GL_MAP_FLUSH_EXPLICIT_BIT_EXT = 0x00000010,
+ GL_MAP_UNSYNCHRONIZED_BIT = 0x00000020,
+ GL_MAP_UNSYNCHRONIZED_BIT_EXT = 0x00000020,
+ GL_MAP_PERSISTENT_BIT = 0x00000040,
+ GL_MAP_PERSISTENT_BIT_EXT = 0x00000040,
+ GL_MAP_COHERENT_BIT = 0x00000080,
+ GL_MAP_COHERENT_BIT_EXT = 0x00000080,
+ GL_DYNAMIC_STORAGE_BIT = 0x00000100,
+ GL_DYNAMIC_STORAGE_BIT_EXT = 0x00000100,
+ GL_CLIENT_STORAGE_BIT = 0x00000200,
+ GL_CLIENT_STORAGE_BIT_EXT = 0x00000200,
+ GL_SPARSE_STORAGE_BIT_ARB = 0x00000400,
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT = 0x00000001,
+ GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT = 0x00000001,
+ GL_ELEMENT_ARRAY_BARRIER_BIT = 0x00000002,
+ GL_ELEMENT_ARRAY_BARRIER_BIT_EXT = 0x00000002,
+ GL_UNIFORM_BARRIER_BIT = 0x00000004,
+ GL_UNIFORM_BARRIER_BIT_EXT = 0x00000004,
+ GL_TEXTURE_FETCH_BARRIER_BIT = 0x00000008,
+ GL_TEXTURE_FETCH_BARRIER_BIT_EXT = 0x00000008,
+ GL_SHADER_GLOBAL_ACCESS_BARRIER_BIT_NV = 0x00000010,
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT = 0x00000020,
+ GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT = 0x00000020,
+ GL_COMMAND_BARRIER_BIT = 0x00000040,
+ GL_COMMAND_BARRIER_BIT_EXT = 0x00000040,
+ GL_PIXEL_BUFFER_BARRIER_BIT = 0x00000080,
+ GL_PIXEL_BUFFER_BARRIER_BIT_EXT = 0x00000080,
+ GL_TEXTURE_UPDATE_BARRIER_BIT = 0x00000100,
+ GL_TEXTURE_UPDATE_BARRIER_BIT_EXT = 0x00000100,
+ GL_BUFFER_UPDATE_BARRIER_BIT = 0x00000200,
+ GL_BUFFER_UPDATE_BARRIER_BIT_EXT = 0x00000200,
+ GL_FRAMEBUFFER_BARRIER_BIT = 0x00000400,
+ GL_FRAMEBUFFER_BARRIER_BIT_EXT = 0x00000400,
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT = 0x00000800,
+ GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT = 0x00000800,
+ GL_ATOMIC_COUNTER_BARRIER_BIT = 0x00001000,
+ GL_ATOMIC_COUNTER_BARRIER_BIT_EXT = 0x00001000,
+ GL_SHADER_STORAGE_BARRIER_BIT = 0x00002000,
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT = 0x00004000,
+ GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT = 0x00004000,
+ GL_QUERY_BUFFER_BARRIER_BIT = 0x00008000,
+ GL_ALL_BARRIER_BITS = 0xFFFFFFFF,
+ GL_ALL_BARRIER_BITS_EXT = 0xFFFFFFFF,
+ GL_SYNC_FLUSH_COMMANDS_BIT = 0x00000001,
+ GL_SYNC_FLUSH_COMMANDS_BIT_APPLE = 0x00000001,
+ GL_VERTEX_SHADER_BIT = 0x00000001,
+ GL_VERTEX_SHADER_BIT_EXT = 0x00000001,
+ GL_FRAGMENT_SHADER_BIT = 0x00000002,
+ GL_FRAGMENT_SHADER_BIT_EXT = 0x00000002,
+ GL_GEOMETRY_SHADER_BIT = 0x00000004,
+ GL_GEOMETRY_SHADER_BIT_EXT = 0x00000004,
+ GL_GEOMETRY_SHADER_BIT_OES = 0x00000004,
+ GL_TESS_CONTROL_SHADER_BIT = 0x00000008,
+ GL_TESS_CONTROL_SHADER_BIT_EXT = 0x00000008,
+ GL_TESS_CONTROL_SHADER_BIT_OES = 0x00000008,
+ GL_TESS_EVALUATION_SHADER_BIT = 0x00000010,
+ GL_TESS_EVALUATION_SHADER_BIT_EXT = 0x00000010,
+ GL_TESS_EVALUATION_SHADER_BIT_OES = 0x00000010,
+ GL_COMPUTE_SHADER_BIT = 0x00000020,
+ GL_ALL_SHADER_BITS = 0xFFFFFFFF,
+ GL_ALL_SHADER_BITS_EXT = 0xFFFFFFFF,
+ GL_TEXTURE_STORAGE_SPARSE_BIT_AMD = 0x00000001,
+ GL_RED_BIT_ATI = 0x00000001,
+ GL_GREEN_BIT_ATI = 0x00000002,
+ GL_BLUE_BIT_ATI = 0x00000004,
+ GL_2X_BIT_ATI = 0x00000001,
+ GL_4X_BIT_ATI = 0x00000002,
+ GL_8X_BIT_ATI = 0x00000004,
+ GL_HALF_BIT_ATI = 0x00000008,
+ GL_QUARTER_BIT_ATI = 0x00000010,
+ GL_EIGHTH_BIT_ATI = 0x00000020,
+ GL_SATURATE_BIT_ATI = 0x00000040,
+ GL_COMP_BIT_ATI = 0x00000002,
+ GL_NEGATE_BIT_ATI = 0x00000004,
+ GL_BIAS_BIT_ATI = 0x00000008,
+ GL_TRACE_OPERATIONS_BIT_MESA = 0x00000001,
+ GL_TRACE_PRIMITIVES_BIT_MESA = 0x00000002,
+ GL_TRACE_ARRAYS_BIT_MESA = 0x00000004,
+ GL_TRACE_TEXTURES_BIT_MESA = 0x00000008,
+ GL_TRACE_PIXELS_BIT_MESA = 0x00000010,
+ GL_TRACE_ERRORS_BIT_MESA = 0x00000020,
+ GL_TRACE_ALL_BITS_MESA = 0x0000FFFF,
+ GL_BOLD_BIT_NV = 0x00000001,
+ GL_ITALIC_BIT_NV = 0x00000002,
+ GL_GLYPH_WIDTH_BIT_NV = 0x00000001,
+ GL_GLYPH_HEIGHT_BIT_NV = 0x00000002,
+ GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV = 0x00000004,
+ GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV = 0x00000008,
+ GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV = 0x00000010,
+ GL_GLYPH_VERTICAL_BEARING_X_BIT_NV = 0x00000020,
+ GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV = 0x00000040,
+ GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV = 0x00000080,
+ GL_GLYPH_HAS_KERNING_BIT_NV = 0x00000100,
+ GL_FONT_X_MIN_BOUNDS_BIT_NV = 0x00010000,
+ GL_FONT_Y_MIN_BOUNDS_BIT_NV = 0x00020000,
+ GL_FONT_X_MAX_BOUNDS_BIT_NV = 0x00040000,
+ GL_FONT_Y_MAX_BOUNDS_BIT_NV = 0x00080000,
+ GL_FONT_UNITS_PER_EM_BIT_NV = 0x00100000,
+ GL_FONT_ASCENDER_BIT_NV = 0x00200000,
+ GL_FONT_DESCENDER_BIT_NV = 0x00400000,
+ GL_FONT_HEIGHT_BIT_NV = 0x00800000,
+ GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV = 0x01000000,
+ GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV = 0x02000000,
+ GL_FONT_UNDERLINE_POSITION_BIT_NV = 0x04000000,
+ GL_FONT_UNDERLINE_THICKNESS_BIT_NV = 0x08000000,
+ GL_FONT_HAS_KERNING_BIT_NV = 0x10000000,
+ GL_FONT_NUM_GLYPH_INDICES_BIT_NV = 0x20000000,
+ GL_PERFQUERY_SINGLE_CONTEXT_INTEL = 0x00000000,
+ GL_PERFQUERY_GLOBAL_CONTEXT_INTEL = 0x00000001,
+ GL_VERTEX23_BIT_PGI = 0x00000004,
+ GL_VERTEX4_BIT_PGI = 0x00000008,
+ GL_COLOR3_BIT_PGI = 0x00010000,
+ GL_COLOR4_BIT_PGI = 0x00020000,
+ GL_EDGEFLAG_BIT_PGI = 0x00040000,
+ GL_INDEX_BIT_PGI = 0x00080000,
+ GL_MAT_AMBIENT_BIT_PGI = 0x00100000,
+ GL_MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000,
+ GL_MAT_DIFFUSE_BIT_PGI = 0x00400000,
+ GL_MAT_EMISSION_BIT_PGI = 0x00800000,
+ GL_MAT_COLOR_INDEXES_BIT_PGI = 0x01000000,
+ GL_MAT_SHININESS_BIT_PGI = 0x02000000,
+ GL_MAT_SPECULAR_BIT_PGI = 0x04000000,
+ GL_NORMAL_BIT_PGI = 0x08000000,
+ GL_TEXCOORD1_BIT_PGI = 0x10000000,
+ GL_TEXCOORD2_BIT_PGI = 0x20000000,
+ GL_TEXCOORD3_BIT_PGI = 0x40000000,
+ GL_TEXCOORD4_BIT_PGI = 0x80000000,
+ GL_COLOR_BUFFER_BIT0_QCOM = 0x00000001,
+ GL_COLOR_BUFFER_BIT1_QCOM = 0x00000002,
+ GL_COLOR_BUFFER_BIT2_QCOM = 0x00000004,
+ GL_COLOR_BUFFER_BIT3_QCOM = 0x00000008,
+ GL_COLOR_BUFFER_BIT4_QCOM = 0x00000010,
+ GL_COLOR_BUFFER_BIT5_QCOM = 0x00000020,
+ GL_COLOR_BUFFER_BIT6_QCOM = 0x00000040,
+ GL_COLOR_BUFFER_BIT7_QCOM = 0x00000080,
+ GL_DEPTH_BUFFER_BIT0_QCOM = 0x00000100,
+ GL_DEPTH_BUFFER_BIT1_QCOM = 0x00000200,
+ GL_DEPTH_BUFFER_BIT2_QCOM = 0x00000400,
+ GL_DEPTH_BUFFER_BIT3_QCOM = 0x00000800,
+ GL_DEPTH_BUFFER_BIT4_QCOM = 0x00001000,
+ GL_DEPTH_BUFFER_BIT5_QCOM = 0x00002000,
+ GL_DEPTH_BUFFER_BIT6_QCOM = 0x00004000,
+ GL_DEPTH_BUFFER_BIT7_QCOM = 0x00008000,
+ GL_STENCIL_BUFFER_BIT0_QCOM = 0x00010000,
+ GL_STENCIL_BUFFER_BIT1_QCOM = 0x00020000,
+ GL_STENCIL_BUFFER_BIT2_QCOM = 0x00040000,
+ GL_STENCIL_BUFFER_BIT3_QCOM = 0x00080000,
+ GL_STENCIL_BUFFER_BIT4_QCOM = 0x00100000,
+ GL_STENCIL_BUFFER_BIT5_QCOM = 0x00200000,
+ GL_STENCIL_BUFFER_BIT6_QCOM = 0x00400000,
+ GL_STENCIL_BUFFER_BIT7_QCOM = 0x00800000,
+ GL_MULTISAMPLE_BUFFER_BIT0_QCOM = 0x01000000,
+ GL_MULTISAMPLE_BUFFER_BIT1_QCOM = 0x02000000,
+ GL_MULTISAMPLE_BUFFER_BIT2_QCOM = 0x04000000,
+ GL_MULTISAMPLE_BUFFER_BIT3_QCOM = 0x08000000,
+ GL_MULTISAMPLE_BUFFER_BIT4_QCOM = 0x10000000,
+ GL_MULTISAMPLE_BUFFER_BIT5_QCOM = 0x20000000,
+ GL_MULTISAMPLE_BUFFER_BIT6_QCOM = 0x40000000,
+ GL_MULTISAMPLE_BUFFER_BIT7_QCOM = 0x80000000,
+ GL_TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001,
+ GL_GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002,
+}
+
diff --git a/gfxapi/gles/api/glenum.api b/gfxapi/gles/api/glenum.api
new file mode 100644
index 000000000..75f4bc1d3
--- /dev/null
+++ b/gfxapi/gles/api/glenum.api
@@ -0,0 +1,5329 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+enum GLenum {
+ GL_TERMINATE_SEQUENCE_COMMAND_NV = 0x00000000,
+ GL_NOP_COMMAND_NV = 0x00000001,
+ GL_DRAW_ELEMENTS_COMMAND_NV = 0x00000002,
+ GL_DRAW_ARRAYS_COMMAND_NV = 0x00000003,
+ GL_DRAW_ELEMENTS_STRIP_COMMAND_NV = 0x00000004,
+ GL_DRAW_ARRAYS_STRIP_COMMAND_NV = 0x00000005,
+ GL_DRAW_ELEMENTS_INSTANCED_COMMAND_NV = 0x00000006,
+ GL_DRAW_ARRAYS_INSTANCED_COMMAND_NV = 0x00000007,
+ GL_ELEMENT_ADDRESS_COMMAND_NV = 0x00000008,
+ GL_ATTRIBUTE_ADDRESS_COMMAND_NV = 0x00000009,
+ GL_UNIFORM_ADDRESS_COMMAND_NV = 0x0000000A,
+ GL_BLEND_COLOR_COMMAND_NV = 0x0000000B,
+ GL_STENCIL_REF_COMMAND_NV = 0x0000000C,
+ GL_LINE_WIDTH_COMMAND_NV = 0x0000000D,
+ GL_POLYGON_OFFSET_COMMAND_NV = 0x0000000E,
+ GL_ALPHA_REF_COMMAND_NV = 0x0000000F,
+ GL_VIEWPORT_COMMAND_NV = 0x00000010,
+ GL_SCISSOR_COMMAND_NV = 0x00000011,
+ GL_FRONT_FACE_COMMAND_NV = 0x00000012,
+ GL_LAYOUT_DEFAULT_INTEL = 0x00000000,
+ GL_LAYOUT_LINEAR_INTEL = 0x00000001,
+ GL_LAYOUT_LINEAR_CPU_CACHED_INTEL = 0x00000002,
+ GL_CLOSE_PATH_NV = 0x00000000,
+ GL_MOVE_TO_NV = 0x00000002,
+ GL_RELATIVE_MOVE_TO_NV = 0x00000003,
+ GL_LINE_TO_NV = 0x00000004,
+ GL_RELATIVE_LINE_TO_NV = 0x00000005,
+ GL_HORIZONTAL_LINE_TO_NV = 0x00000006,
+ GL_RELATIVE_HORIZONTAL_LINE_TO_NV = 0x00000007,
+ GL_VERTICAL_LINE_TO_NV = 0x00000008,
+ GL_RELATIVE_VERTICAL_LINE_TO_NV = 0x00000009,
+ GL_QUADRATIC_CURVE_TO_NV = 0x0000000A,
+ GL_RELATIVE_QUADRATIC_CURVE_TO_NV = 0x0000000B,
+ GL_CUBIC_CURVE_TO_NV = 0x0000000C,
+ GL_RELATIVE_CUBIC_CURVE_TO_NV = 0x0000000D,
+ GL_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0000000E,
+ GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV = 0x0000000F,
+ GL_SMOOTH_CUBIC_CURVE_TO_NV = 0x00000010,
+ GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV = 0x00000011,
+ GL_SMALL_CCW_ARC_TO_NV = 0x00000012,
+ GL_RELATIVE_SMALL_CCW_ARC_TO_NV = 0x00000013,
+ GL_SMALL_CW_ARC_TO_NV = 0x00000014,
+ GL_RELATIVE_SMALL_CW_ARC_TO_NV = 0x00000015,
+ GL_LARGE_CCW_ARC_TO_NV = 0x00000016,
+ GL_RELATIVE_LARGE_CCW_ARC_TO_NV = 0x00000017,
+ GL_LARGE_CW_ARC_TO_NV = 0x00000018,
+ GL_RELATIVE_LARGE_CW_ARC_TO_NV = 0x00000019,
+ GL_CONIC_CURVE_TO_NV = 0x0000001A,
+ GL_RELATIVE_CONIC_CURVE_TO_NV = 0x0000001B,
+ GL_SHARED_EDGE_NV = 0x000000C0,
+ GL_ROUNDED_RECT_NV = 0x000000E8,
+ GL_RELATIVE_ROUNDED_RECT_NV = 0x000000E9,
+ GL_ROUNDED_RECT2_NV = 0x000000EA,
+ GL_RELATIVE_ROUNDED_RECT2_NV = 0x000000EB,
+ GL_ROUNDED_RECT4_NV = 0x000000EC,
+ GL_RELATIVE_ROUNDED_RECT4_NV = 0x000000ED,
+ GL_ROUNDED_RECT8_NV = 0x000000EE,
+ GL_RELATIVE_ROUNDED_RECT8_NV = 0x000000EF,
+ GL_RESTART_PATH_NV = 0x000000F0,
+ GL_DUP_FIRST_CUBIC_CURVE_TO_NV = 0x000000F2,
+ GL_DUP_LAST_CUBIC_CURVE_TO_NV = 0x000000F4,
+ GL_RECT_NV = 0x000000F6,
+ GL_RELATIVE_RECT_NV = 0x000000F7,
+ GL_CIRCULAR_CCW_ARC_TO_NV = 0x000000F8,
+ GL_CIRCULAR_CW_ARC_TO_NV = 0x000000FA,
+ GL_CIRCULAR_TANGENT_ARC_TO_NV = 0x000000FC,
+ GL_ARC_TO_NV = 0x000000FE,
+ GL_RELATIVE_ARC_TO_NV = 0x000000FF,
+ GL_NEXT_BUFFER_NV = 0xFFFFFFFE,
+ GL_SKIP_COMPONENTS4_NV = 0xFFFFFFFD,
+ GL_SKIP_COMPONENTS3_NV = 0xFFFFFFFC,
+ GL_SKIP_COMPONENTS2_NV = 0xFFFFFFFB,
+ GL_SKIP_COMPONENTS1_NV = 0xFFFFFFFA,
+ GL_RESTART_SUN = 0x00000001,
+ GL_REPLACE_MIDDLE_SUN = 0x00000002,
+ GL_REPLACE_OLDEST_SUN = 0x00000003,
+ GL_FALSE = 0x00000000,
+ GL_NO_ERROR = 0x00000000,
+ GL_ZERO = 0x00000000,
+ GL_NONE = 0x00000000,
+ GL_NONE_OES = 0x00000000,
+ GL_TRUE = 0x00000001,
+ GL_ONE = 0x00000001,
+ GL_INVALID_INDEX = 0xFFFFFFFF,
+ GL_VERSION_ES_CL_1_0 = 0x00000001,
+ GL_VERSION_ES_CM_1_1 = 0x00000001,
+ GL_VERSION_ES_CL_1_1 = 0x00000001,
+ GL_POINTS = 0x00000000,
+ GL_LINES = 0x00000001,
+ GL_LINE_LOOP = 0x00000002,
+ GL_LINE_STRIP = 0x00000003,
+ GL_TRIANGLES = 0x00000004,
+ GL_TRIANGLE_STRIP = 0x00000005,
+ GL_TRIANGLE_FAN = 0x00000006,
+ GL_QUADS = 0x00000007,
+ GL_QUADS_EXT = 0x00000007,
+ GL_QUADS_OES = 0x00000007,
+ GL_QUAD_STRIP = 0x00000008,
+ GL_POLYGON = 0x00000009,
+ GL_LINES_ADJACENCY = 0x0000000A,
+ GL_LINES_ADJACENCY_ARB = 0x0000000A,
+ GL_LINES_ADJACENCY_EXT = 0x0000000A,
+ GL_LINES_ADJACENCY_OES = 0x0000000A,
+ GL_LINE_STRIP_ADJACENCY = 0x0000000B,
+ GL_LINE_STRIP_ADJACENCY_ARB = 0x0000000B,
+ GL_LINE_STRIP_ADJACENCY_EXT = 0x0000000B,
+ GL_LINE_STRIP_ADJACENCY_OES = 0x0000000B,
+ GL_TRIANGLES_ADJACENCY = 0x0000000C,
+ GL_TRIANGLES_ADJACENCY_ARB = 0x0000000C,
+ GL_TRIANGLES_ADJACENCY_EXT = 0x0000000C,
+ GL_TRIANGLES_ADJACENCY_OES = 0x0000000C,
+ GL_TRIANGLE_STRIP_ADJACENCY = 0x0000000D,
+ GL_TRIANGLE_STRIP_ADJACENCY_ARB = 0x0000000D,
+ GL_TRIANGLE_STRIP_ADJACENCY_EXT = 0x0000000D,
+ GL_TRIANGLE_STRIP_ADJACENCY_OES = 0x0000000D,
+ GL_PATCHES = 0x0000000E,
+ GL_PATCHES_EXT = 0x0000000E,
+ GL_PATCHES_OES = 0x0000000E,
+ GL_ACCUM = 0x00000100,
+ GL_LOAD = 0x00000101,
+ GL_RETURN = 0x00000102,
+ GL_MULT = 0x00000103,
+ GL_ADD = 0x00000104,
+ GL_NEVER = 0x00000200,
+ GL_LESS = 0x00000201,
+ GL_EQUAL = 0x00000202,
+ GL_LEQUAL = 0x00000203,
+ GL_GREATER = 0x00000204,
+ GL_NOTEQUAL = 0x00000205,
+ GL_GEQUAL = 0x00000206,
+ GL_ALWAYS = 0x00000207,
+ GL_SRC_COLOR = 0x00000300,
+ GL_ONE_MINUS_SRC_COLOR = 0x00000301,
+ GL_SRC_ALPHA = 0x00000302,
+ GL_ONE_MINUS_SRC_ALPHA = 0x00000303,
+ GL_DST_ALPHA = 0x00000304,
+ GL_ONE_MINUS_DST_ALPHA = 0x00000305,
+ GL_DST_COLOR = 0x00000306,
+ GL_ONE_MINUS_DST_COLOR = 0x00000307,
+ GL_SRC_ALPHA_SATURATE = 0x00000308,
+ GL_FRONT_LEFT = 0x00000400,
+ GL_FRONT_RIGHT = 0x00000401,
+ GL_BACK_LEFT = 0x00000402,
+ GL_BACK_RIGHT = 0x00000403,
+ GL_FRONT = 0x00000404,
+ GL_BACK = 0x00000405,
+ GL_LEFT = 0x00000406,
+ GL_RIGHT = 0x00000407,
+ GL_FRONT_AND_BACK = 0x00000408,
+ GL_AUX0 = 0x00000409,
+ GL_AUX1 = 0x0000040A,
+ GL_AUX2 = 0x0000040B,
+ GL_AUX3 = 0x0000040C,
+ GL_INVALID_ENUM = 0x00000500,
+ GL_INVALID_VALUE = 0x00000501,
+ GL_INVALID_OPERATION = 0x00000502,
+ GL_STACK_OVERFLOW = 0x00000503,
+ GL_STACK_OVERFLOW_KHR = 0x00000503,
+ GL_STACK_UNDERFLOW = 0x00000504,
+ GL_STACK_UNDERFLOW_KHR = 0x00000504,
+ GL_OUT_OF_MEMORY = 0x00000505,
+ GL_INVALID_FRAMEBUFFER_OPERATION = 0x00000506,
+ GL_INVALID_FRAMEBUFFER_OPERATION_EXT = 0x00000506,
+ GL_INVALID_FRAMEBUFFER_OPERATION_OES = 0x00000506,
+ GL_CONTEXT_LOST = 0x00000507,
+ GL_CONTEXT_LOST_KHR = 0x00000507,
+ GL_2D = 0x00000600,
+ GL_3D = 0x00000601,
+ GL_3D_COLOR = 0x00000602,
+ GL_3D_COLOR_TEXTURE = 0x00000603,
+ GL_4D_COLOR_TEXTURE = 0x00000604,
+ GL_PASS_THROUGH_TOKEN = 0x00000700,
+ GL_POINT_TOKEN = 0x00000701,
+ GL_LINE_TOKEN = 0x00000702,
+ GL_POLYGON_TOKEN = 0x00000703,
+ GL_BITMAP_TOKEN = 0x00000704,
+ GL_DRAW_PIXEL_TOKEN = 0x00000705,
+ GL_COPY_PIXEL_TOKEN = 0x00000706,
+ GL_LINE_RESET_TOKEN = 0x00000707,
+ GL_EXP = 0x00000800,
+ GL_EXP2 = 0x00000801,
+ GL_CW = 0x00000900,
+ GL_CCW = 0x00000901,
+ GL_COEFF = 0x00000A00,
+ GL_ORDER = 0x00000A01,
+ GL_DOMAIN = 0x00000A02,
+ GL_CURRENT_COLOR = 0x00000B00,
+ GL_CURRENT_INDEX = 0x00000B01,
+ GL_CURRENT_NORMAL = 0x00000B02,
+ GL_CURRENT_TEXTURE_COORDS = 0x00000B03,
+ GL_CURRENT_RASTER_COLOR = 0x00000B04,
+ GL_CURRENT_RASTER_INDEX = 0x00000B05,
+ GL_CURRENT_RASTER_TEXTURE_COORDS = 0x00000B06,
+ GL_CURRENT_RASTER_POSITION = 0x00000B07,
+ GL_CURRENT_RASTER_POSITION_VALID = 0x00000B08,
+ GL_CURRENT_RASTER_DISTANCE = 0x00000B09,
+ GL_POINT_SMOOTH = 0x00000B10,
+ GL_POINT_SIZE = 0x00000B11,
+ GL_POINT_SIZE_RANGE = 0x00000B12,
+ GL_SMOOTH_POINT_SIZE_RANGE = 0x00000B12,
+ GL_POINT_SIZE_GRANULARITY = 0x00000B13,
+ GL_SMOOTH_POINT_SIZE_GRANULARITY = 0x00000B13,
+ GL_LINE_SMOOTH = 0x00000B20,
+ GL_LINE_WIDTH = 0x00000B21,
+ GL_LINE_WIDTH_RANGE = 0x00000B22,
+ GL_SMOOTH_LINE_WIDTH_RANGE = 0x00000B22,
+ GL_LINE_WIDTH_GRANULARITY = 0x00000B23,
+ GL_SMOOTH_LINE_WIDTH_GRANULARITY = 0x00000B23,
+ GL_LINE_STIPPLE = 0x00000B24,
+ GL_LINE_STIPPLE_PATTERN = 0x00000B25,
+ GL_LINE_STIPPLE_REPEAT = 0x00000B26,
+ GL_LIST_MODE = 0x00000B30,
+ GL_MAX_LIST_NESTING = 0x00000B31,
+ GL_LIST_BASE = 0x00000B32,
+ GL_LIST_INDEX = 0x00000B33,
+ GL_POLYGON_MODE = 0x00000B40,
+ GL_POLYGON_MODE_NV = 0x00000B40,
+ GL_POLYGON_SMOOTH = 0x00000B41,
+ GL_POLYGON_STIPPLE = 0x00000B42,
+ GL_EDGE_FLAG = 0x00000B43,
+ GL_CULL_FACE = 0x00000B44,
+ GL_CULL_FACE_MODE = 0x00000B45,
+ GL_FRONT_FACE = 0x00000B46,
+ GL_LIGHTING = 0x00000B50,
+ GL_LIGHT_MODEL_LOCAL_VIEWER = 0x00000B51,
+ GL_LIGHT_MODEL_TWO_SIDE = 0x00000B52,
+ GL_LIGHT_MODEL_AMBIENT = 0x00000B53,
+ GL_SHADE_MODEL = 0x00000B54,
+ GL_COLOR_MATERIAL_FACE = 0x00000B55,
+ GL_COLOR_MATERIAL_PARAMETER = 0x00000B56,
+ GL_COLOR_MATERIAL = 0x00000B57,
+ GL_FOG = 0x00000B60,
+ GL_FOG_INDEX = 0x00000B61,
+ GL_FOG_DENSITY = 0x00000B62,
+ GL_FOG_START = 0x00000B63,
+ GL_FOG_END = 0x00000B64,
+ GL_FOG_MODE = 0x00000B65,
+ GL_FOG_COLOR = 0x00000B66,
+ GL_DEPTH_RANGE = 0x00000B70,
+ GL_DEPTH_TEST = 0x00000B71,
+ GL_DEPTH_WRITEMASK = 0x00000B72,
+ GL_DEPTH_CLEAR_VALUE = 0x00000B73,
+ GL_DEPTH_FUNC = 0x00000B74,
+ GL_ACCUM_CLEAR_VALUE = 0x00000B80,
+ GL_STENCIL_TEST = 0x00000B90,
+ GL_STENCIL_CLEAR_VALUE = 0x00000B91,
+ GL_STENCIL_FUNC = 0x00000B92,
+ GL_STENCIL_VALUE_MASK = 0x00000B93,
+ GL_STENCIL_FAIL = 0x00000B94,
+ GL_STENCIL_PASS_DEPTH_FAIL = 0x00000B95,
+ GL_STENCIL_PASS_DEPTH_PASS = 0x00000B96,
+ GL_STENCIL_REF = 0x00000B97,
+ GL_STENCIL_WRITEMASK = 0x00000B98,
+ GL_MATRIX_MODE = 0x00000BA0,
+ GL_NORMALIZE = 0x00000BA1,
+ GL_VIEWPORT = 0x00000BA2,
+ GL_MODELVIEW_STACK_DEPTH = 0x00000BA3,
+ GL_MODELVIEW0_STACK_DEPTH_EXT = 0x00000BA3,
+ GL_PATH_MODELVIEW_STACK_DEPTH_NV = 0x00000BA3,
+ GL_PROJECTION_STACK_DEPTH = 0x00000BA4,
+ GL_PATH_PROJECTION_STACK_DEPTH_NV = 0x00000BA4,
+ GL_TEXTURE_STACK_DEPTH = 0x00000BA5,
+ GL_MODELVIEW_MATRIX = 0x00000BA6,
+ GL_MODELVIEW0_MATRIX_EXT = 0x00000BA6,
+ GL_PATH_MODELVIEW_MATRIX_NV = 0x00000BA6,
+ GL_PROJECTION_MATRIX = 0x00000BA7,
+ GL_PATH_PROJECTION_MATRIX_NV = 0x00000BA7,
+ GL_TEXTURE_MATRIX = 0x00000BA8,
+ GL_ATTRIB_STACK_DEPTH = 0x00000BB0,
+ GL_CLIENT_ATTRIB_STACK_DEPTH = 0x00000BB1,
+ GL_ALPHA_TEST = 0x00000BC0,
+ GL_ALPHA_TEST_QCOM = 0x00000BC0,
+ GL_ALPHA_TEST_FUNC = 0x00000BC1,
+ GL_ALPHA_TEST_FUNC_QCOM = 0x00000BC1,
+ GL_ALPHA_TEST_REF = 0x00000BC2,
+ GL_ALPHA_TEST_REF_QCOM = 0x00000BC2,
+ GL_DITHER = 0x00000BD0,
+ GL_BLEND_DST = 0x00000BE0,
+ GL_BLEND_SRC = 0x00000BE1,
+ GL_BLEND = 0x00000BE2,
+ GL_LOGIC_OP_MODE = 0x00000BF0,
+ GL_INDEX_LOGIC_OP = 0x00000BF1,
+ GL_LOGIC_OP = 0x00000BF1,
+ GL_COLOR_LOGIC_OP = 0x00000BF2,
+ GL_AUX_BUFFERS = 0x00000C00,
+ GL_DRAW_BUFFER = 0x00000C01,
+ GL_DRAW_BUFFER_EXT = 0x00000C01,
+ GL_READ_BUFFER = 0x00000C02,
+ GL_READ_BUFFER_EXT = 0x00000C02,
+ GL_READ_BUFFER_NV = 0x00000C02,
+ GL_SCISSOR_BOX = 0x00000C10,
+ GL_SCISSOR_TEST = 0x00000C11,
+ GL_INDEX_CLEAR_VALUE = 0x00000C20,
+ GL_INDEX_WRITEMASK = 0x00000C21,
+ GL_COLOR_CLEAR_VALUE = 0x00000C22,
+ GL_COLOR_WRITEMASK = 0x00000C23,
+ GL_INDEX_MODE = 0x00000C30,
+ GL_RGBA_MODE = 0x00000C31,
+ GL_DOUBLEBUFFER = 0x00000C32,
+ GL_STEREO = 0x00000C33,
+ GL_RENDER_MODE = 0x00000C40,
+ GL_PERSPECTIVE_CORRECTION_HINT = 0x00000C50,
+ GL_POINT_SMOOTH_HINT = 0x00000C51,
+ GL_LINE_SMOOTH_HINT = 0x00000C52,
+ GL_POLYGON_SMOOTH_HINT = 0x00000C53,
+ GL_FOG_HINT = 0x00000C54,
+ GL_TEXTURE_GEN_S = 0x00000C60,
+ GL_TEXTURE_GEN_T = 0x00000C61,
+ GL_TEXTURE_GEN_R = 0x00000C62,
+ GL_TEXTURE_GEN_Q = 0x00000C63,
+ GL_PIXEL_MAP_I_TO_I = 0x00000C70,
+ GL_PIXEL_MAP_S_TO_S = 0x00000C71,
+ GL_PIXEL_MAP_I_TO_R = 0x00000C72,
+ GL_PIXEL_MAP_I_TO_G = 0x00000C73,
+ GL_PIXEL_MAP_I_TO_B = 0x00000C74,
+ GL_PIXEL_MAP_I_TO_A = 0x00000C75,
+ GL_PIXEL_MAP_R_TO_R = 0x00000C76,
+ GL_PIXEL_MAP_G_TO_G = 0x00000C77,
+ GL_PIXEL_MAP_B_TO_B = 0x00000C78,
+ GL_PIXEL_MAP_A_TO_A = 0x00000C79,
+ GL_PIXEL_MAP_I_TO_I_SIZE = 0x00000CB0,
+ GL_PIXEL_MAP_S_TO_S_SIZE = 0x00000CB1,
+ GL_PIXEL_MAP_I_TO_R_SIZE = 0x00000CB2,
+ GL_PIXEL_MAP_I_TO_G_SIZE = 0x00000CB3,
+ GL_PIXEL_MAP_I_TO_B_SIZE = 0x00000CB4,
+ GL_PIXEL_MAP_I_TO_A_SIZE = 0x00000CB5,
+ GL_PIXEL_MAP_R_TO_R_SIZE = 0x00000CB6,
+ GL_PIXEL_MAP_G_TO_G_SIZE = 0x00000CB7,
+ GL_PIXEL_MAP_B_TO_B_SIZE = 0x00000CB8,
+ GL_PIXEL_MAP_A_TO_A_SIZE = 0x00000CB9,
+ GL_UNPACK_SWAP_BYTES = 0x00000CF0,
+ GL_UNPACK_LSB_FIRST = 0x00000CF1,
+ GL_UNPACK_ROW_LENGTH = 0x00000CF2,
+ GL_UNPACK_ROW_LENGTH_EXT = 0x00000CF2,
+ GL_UNPACK_SKIP_ROWS = 0x00000CF3,
+ GL_UNPACK_SKIP_ROWS_EXT = 0x00000CF3,
+ GL_UNPACK_SKIP_PIXELS = 0x00000CF4,
+ GL_UNPACK_SKIP_PIXELS_EXT = 0x00000CF4,
+ GL_UNPACK_ALIGNMENT = 0x00000CF5,
+ GL_PACK_SWAP_BYTES = 0x00000D00,
+ GL_PACK_LSB_FIRST = 0x00000D01,
+ GL_PACK_ROW_LENGTH = 0x00000D02,
+ GL_PACK_SKIP_ROWS = 0x00000D03,
+ GL_PACK_SKIP_PIXELS = 0x00000D04,
+ GL_PACK_ALIGNMENT = 0x00000D05,
+ GL_MAP_COLOR = 0x00000D10,
+ GL_MAP_STENCIL = 0x00000D11,
+ GL_INDEX_SHIFT = 0x00000D12,
+ GL_INDEX_OFFSET = 0x00000D13,
+ GL_RED_SCALE = 0x00000D14,
+ GL_RED_BIAS = 0x00000D15,
+ GL_ZOOM_X = 0x00000D16,
+ GL_ZOOM_Y = 0x00000D17,
+ GL_GREEN_SCALE = 0x00000D18,
+ GL_GREEN_BIAS = 0x00000D19,
+ GL_BLUE_SCALE = 0x00000D1A,
+ GL_BLUE_BIAS = 0x00000D1B,
+ GL_ALPHA_SCALE = 0x00000D1C,
+ GL_ALPHA_BIAS = 0x00000D1D,
+ GL_DEPTH_SCALE = 0x00000D1E,
+ GL_DEPTH_BIAS = 0x00000D1F,
+ GL_MAX_EVAL_ORDER = 0x00000D30,
+ GL_MAX_LIGHTS = 0x00000D31,
+ GL_MAX_CLIP_PLANES = 0x00000D32,
+ GL_MAX_CLIP_PLANES_IMG = 0x00000D32,
+ GL_MAX_CLIP_DISTANCES = 0x00000D32,
+ GL_MAX_CLIP_DISTANCES_APPLE = 0x00000D32,
+ GL_MAX_TEXTURE_SIZE = 0x00000D33,
+ GL_MAX_PIXEL_MAP_TABLE = 0x00000D34,
+ GL_MAX_ATTRIB_STACK_DEPTH = 0x00000D35,
+ GL_MAX_MODELVIEW_STACK_DEPTH = 0x00000D36,
+ GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV = 0x00000D36,
+ GL_MAX_NAME_STACK_DEPTH = 0x00000D37,
+ GL_MAX_PROJECTION_STACK_DEPTH = 0x00000D38,
+ GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV = 0x00000D38,
+ GL_MAX_TEXTURE_STACK_DEPTH = 0x00000D39,
+ GL_MAX_VIEWPORT_DIMS = 0x00000D3A,
+ GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 0x00000D3B,
+ GL_SUBPIXEL_BITS = 0x00000D50,
+ GL_INDEX_BITS = 0x00000D51,
+ GL_RED_BITS = 0x00000D52,
+ GL_GREEN_BITS = 0x00000D53,
+ GL_BLUE_BITS = 0x00000D54,
+ GL_ALPHA_BITS = 0x00000D55,
+ GL_DEPTH_BITS = 0x00000D56,
+ GL_STENCIL_BITS = 0x00000D57,
+ GL_ACCUM_RED_BITS = 0x00000D58,
+ GL_ACCUM_GREEN_BITS = 0x00000D59,
+ GL_ACCUM_BLUE_BITS = 0x00000D5A,
+ GL_ACCUM_ALPHA_BITS = 0x00000D5B,
+ GL_NAME_STACK_DEPTH = 0x00000D70,
+ GL_AUTO_NORMAL = 0x00000D80,
+ GL_MAP1_COLOR_4 = 0x00000D90,
+ GL_MAP1_INDEX = 0x00000D91,
+ GL_MAP1_NORMAL = 0x00000D92,
+ GL_MAP1_TEXTURE_COORD_1 = 0x00000D93,
+ GL_MAP1_TEXTURE_COORD_2 = 0x00000D94,
+ GL_MAP1_TEXTURE_COORD_3 = 0x00000D95,
+ GL_MAP1_TEXTURE_COORD_4 = 0x00000D96,
+ GL_MAP1_VERTEX_3 = 0x00000D97,
+ GL_MAP1_VERTEX_4 = 0x00000D98,
+ GL_MAP2_COLOR_4 = 0x00000DB0,
+ GL_MAP2_INDEX = 0x00000DB1,
+ GL_MAP2_NORMAL = 0x00000DB2,
+ GL_MAP2_TEXTURE_COORD_1 = 0x00000DB3,
+ GL_MAP2_TEXTURE_COORD_2 = 0x00000DB4,
+ GL_MAP2_TEXTURE_COORD_3 = 0x00000DB5,
+ GL_MAP2_TEXTURE_COORD_4 = 0x00000DB6,
+ GL_MAP2_VERTEX_3 = 0x00000DB7,
+ GL_MAP2_VERTEX_4 = 0x00000DB8,
+ GL_MAP1_GRID_DOMAIN = 0x00000DD0,
+ GL_MAP1_GRID_SEGMENTS = 0x00000DD1,
+ GL_MAP2_GRID_DOMAIN = 0x00000DD2,
+ GL_MAP2_GRID_SEGMENTS = 0x00000DD3,
+ GL_TEXTURE_1D = 0x00000DE0,
+ GL_TEXTURE_2D = 0x00000DE1,
+ GL_FEEDBACK_BUFFER_POINTER = 0x00000DF0,
+ GL_FEEDBACK_BUFFER_SIZE = 0x00000DF1,
+ GL_FEEDBACK_BUFFER_TYPE = 0x00000DF2,
+ GL_SELECTION_BUFFER_POINTER = 0x00000DF3,
+ GL_SELECTION_BUFFER_SIZE = 0x00000DF4,
+ GL_TEXTURE_WIDTH = 0x00001000,
+ GL_TEXTURE_HEIGHT = 0x00001001,
+ GL_TEXTURE_INTERNAL_FORMAT = 0x00001003,
+ GL_TEXTURE_COMPONENTS = 0x00001003,
+ GL_TEXTURE_BORDER_COLOR = 0x00001004,
+ GL_TEXTURE_BORDER_COLOR_EXT = 0x00001004,
+ GL_TEXTURE_BORDER_COLOR_NV = 0x00001004,
+ GL_TEXTURE_BORDER_COLOR_OES = 0x00001004,
+ GL_TEXTURE_BORDER = 0x00001005,
+ GL_TEXTURE_TARGET = 0x00001006,
+ GL_DONT_CARE = 0x00001100,
+ GL_FASTEST = 0x00001101,
+ GL_NICEST = 0x00001102,
+ GL_AMBIENT = 0x00001200,
+ GL_DIFFUSE = 0x00001201,
+ GL_SPECULAR = 0x00001202,
+ GL_POSITION = 0x00001203,
+ GL_SPOT_DIRECTION = 0x00001204,
+ GL_SPOT_EXPONENT = 0x00001205,
+ GL_SPOT_CUTOFF = 0x00001206,
+ GL_CONSTANT_ATTENUATION = 0x00001207,
+ GL_LINEAR_ATTENUATION = 0x00001208,
+ GL_QUADRATIC_ATTENUATION = 0x00001209,
+ GL_COMPILE = 0x00001300,
+ GL_COMPILE_AND_EXECUTE = 0x00001301,
+ GL_BYTE = 0x00001400,
+ GL_UNSIGNED_BYTE = 0x00001401,
+ GL_SHORT = 0x00001402,
+ GL_UNSIGNED_SHORT = 0x00001403,
+ GL_INT = 0x00001404,
+ GL_UNSIGNED_INT = 0x00001405,
+ GL_FLOAT = 0x00001406,
+ GL_2_BYTES = 0x00001407,
+ GL_2_BYTES_NV = 0x00001407,
+ GL_3_BYTES = 0x00001408,
+ GL_3_BYTES_NV = 0x00001408,
+ GL_4_BYTES = 0x00001409,
+ GL_4_BYTES_NV = 0x00001409,
+ GL_DOUBLE = 0x0000140A,
+ GL_DOUBLE_EXT = 0x0000140A,
+ GL_HALF_FLOAT = 0x0000140B,
+ GL_HALF_FLOAT_ARB = 0x0000140B,
+ GL_HALF_FLOAT_NV = 0x0000140B,
+ GL_HALF_APPLE = 0x0000140B,
+ GL_FIXED = 0x0000140C,
+ GL_FIXED_OES = 0x0000140C,
+ GL_INT64_NV = 0x0000140E,
+ GL_UNSIGNED_INT64_ARB = 0x0000140F,
+ GL_UNSIGNED_INT64_NV = 0x0000140F,
+ GL_CLEAR = 0x00001500,
+ GL_AND = 0x00001501,
+ GL_AND_REVERSE = 0x00001502,
+ GL_COPY = 0x00001503,
+ GL_AND_INVERTED = 0x00001504,
+ GL_NOOP = 0x00001505,
+ GL_XOR = 0x00001506,
+ GL_XOR_NV = 0x00001506,
+ GL_OR = 0x00001507,
+ GL_NOR = 0x00001508,
+ GL_EQUIV = 0x00001509,
+ GL_INVERT = 0x0000150A,
+ GL_OR_REVERSE = 0x0000150B,
+ GL_COPY_INVERTED = 0x0000150C,
+ GL_OR_INVERTED = 0x0000150D,
+ GL_NAND = 0x0000150E,
+ GL_SET = 0x0000150F,
+ GL_EMISSION = 0x00001600,
+ GL_SHININESS = 0x00001601,
+ GL_AMBIENT_AND_DIFFUSE = 0x00001602,
+ GL_COLOR_INDEXES = 0x00001603,
+ GL_MODELVIEW = 0x00001700,
+ GL_MODELVIEW0_ARB = 0x00001700,
+ GL_MODELVIEW0_EXT = 0x00001700,
+ GL_PATH_MODELVIEW_NV = 0x00001700,
+ GL_PROJECTION = 0x00001701,
+ GL_PATH_PROJECTION_NV = 0x00001701,
+ GL_TEXTURE = 0x00001702,
+ GL_COLOR = 0x00001800,
+ GL_COLOR_EXT = 0x00001800,
+ GL_DEPTH = 0x00001801,
+ GL_DEPTH_EXT = 0x00001801,
+ GL_STENCIL = 0x00001802,
+ GL_STENCIL_EXT = 0x00001802,
+ GL_COLOR_INDEX = 0x00001900,
+ GL_STENCIL_INDEX = 0x00001901,
+ GL_STENCIL_INDEX_OES = 0x00001901,
+ GL_DEPTH_COMPONENT = 0x00001902,
+ GL_RED = 0x00001903,
+ GL_RED_EXT = 0x00001903,
+ GL_RED_NV = 0x00001903,
+ GL_GREEN = 0x00001904,
+ GL_GREEN_NV = 0x00001904,
+ GL_BLUE = 0x00001905,
+ GL_BLUE_NV = 0x00001905,
+ GL_ALPHA = 0x00001906,
+ GL_RGB = 0x00001907,
+ GL_RGBA = 0x00001908,
+ GL_LUMINANCE = 0x00001909,
+ GL_LUMINANCE_ALPHA = 0x0000190A,
+ GL_BITMAP = 0x00001A00,
+ GL_POINT = 0x00001B00,
+ GL_POINT_NV = 0x00001B00,
+ GL_LINE = 0x00001B01,
+ GL_LINE_NV = 0x00001B01,
+ GL_FILL = 0x00001B02,
+ GL_FILL_NV = 0x00001B02,
+ GL_RENDER = 0x00001C00,
+ GL_FEEDBACK = 0x00001C01,
+ GL_SELECT = 0x00001C02,
+ GL_FLAT = 0x00001D00,
+ GL_SMOOTH = 0x00001D01,
+ GL_KEEP = 0x00001E00,
+ GL_REPLACE = 0x00001E01,
+ GL_INCR = 0x00001E02,
+ GL_DECR = 0x00001E03,
+ GL_VENDOR = 0x00001F00,
+ GL_RENDERER = 0x00001F01,
+ GL_VERSION = 0x00001F02,
+ GL_EXTENSIONS = 0x00001F03,
+ GL_S = 0x00002000,
+ GL_T = 0x00002001,
+ GL_R = 0x00002002,
+ GL_Q = 0x00002003,
+ GL_MODULATE = 0x00002100,
+ GL_DECAL = 0x00002101,
+ GL_TEXTURE_ENV_MODE = 0x00002200,
+ GL_TEXTURE_ENV_COLOR = 0x00002201,
+ GL_TEXTURE_ENV = 0x00002300,
+ GL_EYE_LINEAR = 0x00002400,
+ GL_EYE_LINEAR_NV = 0x00002400,
+ GL_OBJECT_LINEAR = 0x00002401,
+ GL_OBJECT_LINEAR_NV = 0x00002401,
+ GL_SPHERE_MAP = 0x00002402,
+ GL_TEXTURE_GEN_MODE = 0x00002500,
+ GL_TEXTURE_GEN_MODE_OES = 0x00002500,
+ GL_OBJECT_PLANE = 0x00002501,
+ GL_EYE_PLANE = 0x00002502,
+ GL_NEAREST = 0x00002600,
+ GL_LINEAR = 0x00002601,
+ GL_NEAREST_MIPMAP_NEAREST = 0x00002700,
+ GL_LINEAR_MIPMAP_NEAREST = 0x00002701,
+ GL_NEAREST_MIPMAP_LINEAR = 0x00002702,
+ GL_LINEAR_MIPMAP_LINEAR = 0x00002703,
+ GL_TEXTURE_MAG_FILTER = 0x00002800,
+ GL_TEXTURE_MIN_FILTER = 0x00002801,
+ GL_TEXTURE_WRAP_S = 0x00002802,
+ GL_TEXTURE_WRAP_T = 0x00002803,
+ GL_CLAMP = 0x00002900,
+ GL_REPEAT = 0x00002901,
+ GL_POLYGON_OFFSET_UNITS = 0x00002A00,
+ GL_POLYGON_OFFSET_POINT = 0x00002A01,
+ GL_POLYGON_OFFSET_POINT_NV = 0x00002A01,
+ GL_POLYGON_OFFSET_LINE = 0x00002A02,
+ GL_POLYGON_OFFSET_LINE_NV = 0x00002A02,
+ GL_R3_G3_B2 = 0x00002A10,
+ GL_V2F = 0x00002A20,
+ GL_V3F = 0x00002A21,
+ GL_C4UB_V2F = 0x00002A22,
+ GL_C4UB_V3F = 0x00002A23,
+ GL_C3F_V3F = 0x00002A24,
+ GL_N3F_V3F = 0x00002A25,
+ GL_C4F_N3F_V3F = 0x00002A26,
+ GL_T2F_V3F = 0x00002A27,
+ GL_T4F_V4F = 0x00002A28,
+ GL_T2F_C4UB_V3F = 0x00002A29,
+ GL_T2F_C3F_V3F = 0x00002A2A,
+ GL_T2F_N3F_V3F = 0x00002A2B,
+ GL_T2F_C4F_N3F_V3F = 0x00002A2C,
+ GL_T4F_C4F_N3F_V4F = 0x00002A2D,
+ GL_CLIP_PLANE0 = 0x00003000,
+ GL_CLIP_PLANE0_IMG = 0x00003000,
+ GL_CLIP_DISTANCE0 = 0x00003000,
+ GL_CLIP_DISTANCE0_APPLE = 0x00003000,
+ GL_CLIP_PLANE1 = 0x00003001,
+ GL_CLIP_PLANE1_IMG = 0x00003001,
+ GL_CLIP_DISTANCE1 = 0x00003001,
+ GL_CLIP_DISTANCE1_APPLE = 0x00003001,
+ GL_CLIP_PLANE2 = 0x00003002,
+ GL_CLIP_PLANE2_IMG = 0x00003002,
+ GL_CLIP_DISTANCE2 = 0x00003002,
+ GL_CLIP_DISTANCE2_APPLE = 0x00003002,
+ GL_CLIP_PLANE3 = 0x00003003,
+ GL_CLIP_PLANE3_IMG = 0x00003003,
+ GL_CLIP_DISTANCE3 = 0x00003003,
+ GL_CLIP_DISTANCE3_APPLE = 0x00003003,
+ GL_CLIP_PLANE4 = 0x00003004,
+ GL_CLIP_PLANE4_IMG = 0x00003004,
+ GL_CLIP_DISTANCE4 = 0x00003004,
+ GL_CLIP_DISTANCE4_APPLE = 0x00003004,
+ GL_CLIP_PLANE5 = 0x00003005,
+ GL_CLIP_PLANE5_IMG = 0x00003005,
+ GL_CLIP_DISTANCE5 = 0x00003005,
+ GL_CLIP_DISTANCE5_APPLE = 0x00003005,
+ GL_CLIP_DISTANCE6 = 0x00003006,
+ GL_CLIP_DISTANCE6_APPLE = 0x00003006,
+ GL_CLIP_DISTANCE7 = 0x00003007,
+ GL_CLIP_DISTANCE7_APPLE = 0x00003007,
+ GL_LIGHT0 = 0x00004000,
+ GL_LIGHT1 = 0x00004001,
+ GL_LIGHT2 = 0x00004002,
+ GL_LIGHT3 = 0x00004003,
+ GL_LIGHT4 = 0x00004004,
+ GL_LIGHT5 = 0x00004005,
+ GL_LIGHT6 = 0x00004006,
+ GL_LIGHT7 = 0x00004007,
+ GL_ABGR_EXT = 0x00008000,
+ GL_CONSTANT_COLOR = 0x00008001,
+ GL_CONSTANT_COLOR_EXT = 0x00008001,
+ GL_ONE_MINUS_CONSTANT_COLOR = 0x00008002,
+ GL_ONE_MINUS_CONSTANT_COLOR_EXT = 0x00008002,
+ GL_CONSTANT_ALPHA = 0x00008003,
+ GL_CONSTANT_ALPHA_EXT = 0x00008003,
+ GL_ONE_MINUS_CONSTANT_ALPHA = 0x00008004,
+ GL_ONE_MINUS_CONSTANT_ALPHA_EXT = 0x00008004,
+ GL_BLEND_COLOR = 0x00008005,
+ GL_BLEND_COLOR_EXT = 0x00008005,
+ GL_FUNC_ADD = 0x00008006,
+ GL_FUNC_ADD_EXT = 0x00008006,
+ GL_FUNC_ADD_OES = 0x00008006,
+ GL_MIN = 0x00008007,
+ GL_MIN_EXT = 0x00008007,
+ GL_MAX = 0x00008008,
+ GL_MAX_EXT = 0x00008008,
+ GL_BLEND_EQUATION = 0x00008009,
+ GL_BLEND_EQUATION_EXT = 0x00008009,
+ GL_BLEND_EQUATION_OES = 0x00008009,
+ GL_BLEND_EQUATION_RGB = 0x00008009,
+ GL_BLEND_EQUATION_RGB_EXT = 0x00008009,
+ GL_BLEND_EQUATION_RGB_OES = 0x00008009,
+ GL_FUNC_SUBTRACT = 0x0000800A,
+ GL_FUNC_SUBTRACT_EXT = 0x0000800A,
+ GL_FUNC_SUBTRACT_OES = 0x0000800A,
+ GL_FUNC_REVERSE_SUBTRACT = 0x0000800B,
+ GL_FUNC_REVERSE_SUBTRACT_EXT = 0x0000800B,
+ GL_FUNC_REVERSE_SUBTRACT_OES = 0x0000800B,
+ GL_CMYK_EXT = 0x0000800C,
+ GL_CMYKA_EXT = 0x0000800D,
+ GL_PACK_CMYK_HINT_EXT = 0x0000800E,
+ GL_UNPACK_CMYK_HINT_EXT = 0x0000800F,
+ GL_CONVOLUTION_1D = 0x00008010,
+ GL_CONVOLUTION_1D_EXT = 0x00008010,
+ GL_CONVOLUTION_2D = 0x00008011,
+ GL_CONVOLUTION_2D_EXT = 0x00008011,
+ GL_SEPARABLE_2D = 0x00008012,
+ GL_SEPARABLE_2D_EXT = 0x00008012,
+ GL_CONVOLUTION_BORDER_MODE = 0x00008013,
+ GL_CONVOLUTION_BORDER_MODE_EXT = 0x00008013,
+ GL_CONVOLUTION_FILTER_SCALE = 0x00008014,
+ GL_CONVOLUTION_FILTER_SCALE_EXT = 0x00008014,
+ GL_CONVOLUTION_FILTER_BIAS = 0x00008015,
+ GL_CONVOLUTION_FILTER_BIAS_EXT = 0x00008015,
+ GL_REDUCE = 0x00008016,
+ GL_REDUCE_EXT = 0x00008016,
+ GL_CONVOLUTION_FORMAT = 0x00008017,
+ GL_CONVOLUTION_FORMAT_EXT = 0x00008017,
+ GL_CONVOLUTION_WIDTH = 0x00008018,
+ GL_CONVOLUTION_WIDTH_EXT = 0x00008018,
+ GL_CONVOLUTION_HEIGHT = 0x00008019,
+ GL_CONVOLUTION_HEIGHT_EXT = 0x00008019,
+ GL_MAX_CONVOLUTION_WIDTH = 0x0000801A,
+ GL_MAX_CONVOLUTION_WIDTH_EXT = 0x0000801A,
+ GL_MAX_CONVOLUTION_HEIGHT = 0x0000801B,
+ GL_MAX_CONVOLUTION_HEIGHT_EXT = 0x0000801B,
+ GL_POST_CONVOLUTION_RED_SCALE = 0x0000801C,
+ GL_POST_CONVOLUTION_RED_SCALE_EXT = 0x0000801C,
+ GL_POST_CONVOLUTION_GREEN_SCALE = 0x0000801D,
+ GL_POST_CONVOLUTION_GREEN_SCALE_EXT = 0x0000801D,
+ GL_POST_CONVOLUTION_BLUE_SCALE = 0x0000801E,
+ GL_POST_CONVOLUTION_BLUE_SCALE_EXT = 0x0000801E,
+ GL_POST_CONVOLUTION_ALPHA_SCALE = 0x0000801F,
+ GL_POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x0000801F,
+ GL_POST_CONVOLUTION_RED_BIAS = 0x00008020,
+ GL_POST_CONVOLUTION_RED_BIAS_EXT = 0x00008020,
+ GL_POST_CONVOLUTION_GREEN_BIAS = 0x00008021,
+ GL_POST_CONVOLUTION_GREEN_BIAS_EXT = 0x00008021,
+ GL_POST_CONVOLUTION_BLUE_BIAS = 0x00008022,
+ GL_POST_CONVOLUTION_BLUE_BIAS_EXT = 0x00008022,
+ GL_POST_CONVOLUTION_ALPHA_BIAS = 0x00008023,
+ GL_POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x00008023,
+ GL_HISTOGRAM = 0x00008024,
+ GL_HISTOGRAM_EXT = 0x00008024,
+ GL_PROXY_HISTOGRAM = 0x00008025,
+ GL_PROXY_HISTOGRAM_EXT = 0x00008025,
+ GL_HISTOGRAM_WIDTH = 0x00008026,
+ GL_HISTOGRAM_WIDTH_EXT = 0x00008026,
+ GL_HISTOGRAM_FORMAT = 0x00008027,
+ GL_HISTOGRAM_FORMAT_EXT = 0x00008027,
+ GL_HISTOGRAM_RED_SIZE = 0x00008028,
+ GL_HISTOGRAM_RED_SIZE_EXT = 0x00008028,
+ GL_HISTOGRAM_GREEN_SIZE = 0x00008029,
+ GL_HISTOGRAM_GREEN_SIZE_EXT = 0x00008029,
+ GL_HISTOGRAM_BLUE_SIZE = 0x0000802A,
+ GL_HISTOGRAM_BLUE_SIZE_EXT = 0x0000802A,
+ GL_HISTOGRAM_ALPHA_SIZE = 0x0000802B,
+ GL_HISTOGRAM_ALPHA_SIZE_EXT = 0x0000802B,
+ GL_HISTOGRAM_LUMINANCE_SIZE = 0x0000802C,
+ GL_HISTOGRAM_LUMINANCE_SIZE_EXT = 0x0000802C,
+ GL_HISTOGRAM_SINK = 0x0000802D,
+ GL_HISTOGRAM_SINK_EXT = 0x0000802D,
+ GL_MINMAX = 0x0000802E,
+ GL_MINMAX_EXT = 0x0000802E,
+ GL_MINMAX_FORMAT = 0x0000802F,
+ GL_MINMAX_FORMAT_EXT = 0x0000802F,
+ GL_MINMAX_SINK = 0x00008030,
+ GL_MINMAX_SINK_EXT = 0x00008030,
+ GL_TABLE_TOO_LARGE_EXT = 0x00008031,
+ GL_TABLE_TOO_LARGE = 0x00008031,
+ GL_UNSIGNED_BYTE_3_3_2 = 0x00008032,
+ GL_UNSIGNED_BYTE_3_3_2_EXT = 0x00008032,
+ GL_UNSIGNED_SHORT_4_4_4_4 = 0x00008033,
+ GL_UNSIGNED_SHORT_4_4_4_4_EXT = 0x00008033,
+ GL_UNSIGNED_SHORT_5_5_5_1 = 0x00008034,
+ GL_UNSIGNED_SHORT_5_5_5_1_EXT = 0x00008034,
+ GL_UNSIGNED_INT_8_8_8_8 = 0x00008035,
+ GL_UNSIGNED_INT_8_8_8_8_EXT = 0x00008035,
+ GL_UNSIGNED_INT_10_10_10_2 = 0x00008036,
+ GL_UNSIGNED_INT_10_10_10_2_EXT = 0x00008036,
+ GL_POLYGON_OFFSET_EXT = 0x00008037,
+ GL_POLYGON_OFFSET_FILL = 0x00008037,
+ GL_POLYGON_OFFSET_FACTOR = 0x00008038,
+ GL_POLYGON_OFFSET_FACTOR_EXT = 0x00008038,
+ GL_POLYGON_OFFSET_BIAS_EXT = 0x00008039,
+ GL_RESCALE_NORMAL = 0x0000803A,
+ GL_RESCALE_NORMAL_EXT = 0x0000803A,
+ GL_ALPHA4 = 0x0000803B,
+ GL_ALPHA4_EXT = 0x0000803B,
+ GL_ALPHA8 = 0x0000803C,
+ GL_ALPHA8_EXT = 0x0000803C,
+ GL_ALPHA8_OES = 0x0000803C,
+ GL_ALPHA12 = 0x0000803D,
+ GL_ALPHA12_EXT = 0x0000803D,
+ GL_ALPHA16 = 0x0000803E,
+ GL_ALPHA16_EXT = 0x0000803E,
+ GL_LUMINANCE4 = 0x0000803F,
+ GL_LUMINANCE4_EXT = 0x0000803F,
+ GL_LUMINANCE8 = 0x00008040,
+ GL_LUMINANCE8_EXT = 0x00008040,
+ GL_LUMINANCE8_OES = 0x00008040,
+ GL_LUMINANCE12 = 0x00008041,
+ GL_LUMINANCE12_EXT = 0x00008041,
+ GL_LUMINANCE16 = 0x00008042,
+ GL_LUMINANCE16_EXT = 0x00008042,
+ GL_LUMINANCE4_ALPHA4 = 0x00008043,
+ GL_LUMINANCE4_ALPHA4_EXT = 0x00008043,
+ GL_LUMINANCE4_ALPHA4_OES = 0x00008043,
+ GL_LUMINANCE6_ALPHA2 = 0x00008044,
+ GL_LUMINANCE6_ALPHA2_EXT = 0x00008044,
+ GL_LUMINANCE8_ALPHA8 = 0x00008045,
+ GL_LUMINANCE8_ALPHA8_EXT = 0x00008045,
+ GL_LUMINANCE8_ALPHA8_OES = 0x00008045,
+ GL_LUMINANCE12_ALPHA4 = 0x00008046,
+ GL_LUMINANCE12_ALPHA4_EXT = 0x00008046,
+ GL_LUMINANCE12_ALPHA12 = 0x00008047,
+ GL_LUMINANCE12_ALPHA12_EXT = 0x00008047,
+ GL_LUMINANCE16_ALPHA16 = 0x00008048,
+ GL_LUMINANCE16_ALPHA16_EXT = 0x00008048,
+ GL_INTENSITY = 0x00008049,
+ GL_INTENSITY_EXT = 0x00008049,
+ GL_INTENSITY4 = 0x0000804A,
+ GL_INTENSITY4_EXT = 0x0000804A,
+ GL_INTENSITY8 = 0x0000804B,
+ GL_INTENSITY8_EXT = 0x0000804B,
+ GL_INTENSITY12 = 0x0000804C,
+ GL_INTENSITY12_EXT = 0x0000804C,
+ GL_INTENSITY16 = 0x0000804D,
+ GL_INTENSITY16_EXT = 0x0000804D,
+ GL_RGB2_EXT = 0x0000804E,
+ GL_RGB4 = 0x0000804F,
+ GL_RGB4_EXT = 0x0000804F,
+ GL_RGB5 = 0x00008050,
+ GL_RGB5_EXT = 0x00008050,
+ GL_RGB8 = 0x00008051,
+ GL_RGB8_EXT = 0x00008051,
+ GL_RGB8_OES = 0x00008051,
+ GL_RGB10 = 0x00008052,
+ GL_RGB10_EXT = 0x00008052,
+ GL_RGB12 = 0x00008053,
+ GL_RGB12_EXT = 0x00008053,
+ GL_RGB16 = 0x00008054,
+ GL_RGB16_EXT = 0x00008054,
+ GL_RGBA2 = 0x00008055,
+ GL_RGBA2_EXT = 0x00008055,
+ GL_RGBA4 = 0x00008056,
+ GL_RGBA4_EXT = 0x00008056,
+ GL_RGBA4_OES = 0x00008056,
+ GL_RGB5_A1 = 0x00008057,
+ GL_RGB5_A1_EXT = 0x00008057,
+ GL_RGB5_A1_OES = 0x00008057,
+ GL_RGBA8 = 0x00008058,
+ GL_RGBA8_EXT = 0x00008058,
+ GL_RGBA8_OES = 0x00008058,
+ GL_RGB10_A2 = 0x00008059,
+ GL_RGB10_A2_EXT = 0x00008059,
+ GL_RGBA12 = 0x0000805A,
+ GL_RGBA12_EXT = 0x0000805A,
+ GL_RGBA16 = 0x0000805B,
+ GL_RGBA16_EXT = 0x0000805B,
+ GL_TEXTURE_RED_SIZE = 0x0000805C,
+ GL_TEXTURE_RED_SIZE_EXT = 0x0000805C,
+ GL_TEXTURE_GREEN_SIZE = 0x0000805D,
+ GL_TEXTURE_GREEN_SIZE_EXT = 0x0000805D,
+ GL_TEXTURE_BLUE_SIZE = 0x0000805E,
+ GL_TEXTURE_BLUE_SIZE_EXT = 0x0000805E,
+ GL_TEXTURE_ALPHA_SIZE = 0x0000805F,
+ GL_TEXTURE_ALPHA_SIZE_EXT = 0x0000805F,
+ GL_TEXTURE_LUMINANCE_SIZE = 0x00008060,
+ GL_TEXTURE_LUMINANCE_SIZE_EXT = 0x00008060,
+ GL_TEXTURE_INTENSITY_SIZE = 0x00008061,
+ GL_TEXTURE_INTENSITY_SIZE_EXT = 0x00008061,
+ GL_REPLACE_EXT = 0x00008062,
+ GL_PROXY_TEXTURE_1D = 0x00008063,
+ GL_PROXY_TEXTURE_1D_EXT = 0x00008063,
+ GL_PROXY_TEXTURE_2D = 0x00008064,
+ GL_PROXY_TEXTURE_2D_EXT = 0x00008064,
+ GL_TEXTURE_TOO_LARGE_EXT = 0x00008065,
+ GL_TEXTURE_PRIORITY = 0x00008066,
+ GL_TEXTURE_PRIORITY_EXT = 0x00008066,
+ GL_TEXTURE_RESIDENT = 0x00008067,
+ GL_TEXTURE_RESIDENT_EXT = 0x00008067,
+ GL_TEXTURE_1D_BINDING_EXT = 0x00008068,
+ GL_TEXTURE_BINDING_1D = 0x00008068,
+ GL_TEXTURE_2D_BINDING_EXT = 0x00008069,
+ GL_TEXTURE_BINDING_2D = 0x00008069,
+ GL_TEXTURE_3D_BINDING_EXT = 0x0000806A,
+ GL_TEXTURE_3D_BINDING_OES = 0x0000806A,
+ GL_TEXTURE_BINDING_3D = 0x0000806A,
+ GL_TEXTURE_BINDING_3D_OES = 0x0000806A,
+ GL_PACK_SKIP_IMAGES = 0x0000806B,
+ GL_PACK_SKIP_IMAGES_EXT = 0x0000806B,
+ GL_PACK_IMAGE_HEIGHT = 0x0000806C,
+ GL_PACK_IMAGE_HEIGHT_EXT = 0x0000806C,
+ GL_UNPACK_SKIP_IMAGES = 0x0000806D,
+ GL_UNPACK_SKIP_IMAGES_EXT = 0x0000806D,
+ GL_UNPACK_IMAGE_HEIGHT = 0x0000806E,
+ GL_UNPACK_IMAGE_HEIGHT_EXT = 0x0000806E,
+ GL_TEXTURE_3D = 0x0000806F,
+ GL_TEXTURE_3D_EXT = 0x0000806F,
+ GL_TEXTURE_3D_OES = 0x0000806F,
+ GL_PROXY_TEXTURE_3D = 0x00008070,
+ GL_PROXY_TEXTURE_3D_EXT = 0x00008070,
+ GL_TEXTURE_DEPTH = 0x00008071,
+ GL_TEXTURE_DEPTH_EXT = 0x00008071,
+ GL_TEXTURE_WRAP_R = 0x00008072,
+ GL_TEXTURE_WRAP_R_EXT = 0x00008072,
+ GL_TEXTURE_WRAP_R_OES = 0x00008072,
+ GL_MAX_3D_TEXTURE_SIZE = 0x00008073,
+ GL_MAX_3D_TEXTURE_SIZE_EXT = 0x00008073,
+ GL_MAX_3D_TEXTURE_SIZE_OES = 0x00008073,
+ GL_VERTEX_ARRAY = 0x00008074,
+ GL_VERTEX_ARRAY_EXT = 0x00008074,
+ GL_VERTEX_ARRAY_KHR = 0x00008074,
+ GL_NORMAL_ARRAY = 0x00008075,
+ GL_NORMAL_ARRAY_EXT = 0x00008075,
+ GL_COLOR_ARRAY = 0x00008076,
+ GL_COLOR_ARRAY_EXT = 0x00008076,
+ GL_INDEX_ARRAY = 0x00008077,
+ GL_INDEX_ARRAY_EXT = 0x00008077,
+ GL_TEXTURE_COORD_ARRAY = 0x00008078,
+ GL_TEXTURE_COORD_ARRAY_EXT = 0x00008078,
+ GL_EDGE_FLAG_ARRAY = 0x00008079,
+ GL_EDGE_FLAG_ARRAY_EXT = 0x00008079,
+ GL_VERTEX_ARRAY_SIZE = 0x0000807A,
+ GL_VERTEX_ARRAY_SIZE_EXT = 0x0000807A,
+ GL_VERTEX_ARRAY_TYPE = 0x0000807B,
+ GL_VERTEX_ARRAY_TYPE_EXT = 0x0000807B,
+ GL_VERTEX_ARRAY_STRIDE = 0x0000807C,
+ GL_VERTEX_ARRAY_STRIDE_EXT = 0x0000807C,
+ GL_VERTEX_ARRAY_COUNT_EXT = 0x0000807D,
+ GL_NORMAL_ARRAY_TYPE = 0x0000807E,
+ GL_NORMAL_ARRAY_TYPE_EXT = 0x0000807E,
+ GL_NORMAL_ARRAY_STRIDE = 0x0000807F,
+ GL_NORMAL_ARRAY_STRIDE_EXT = 0x0000807F,
+ GL_NORMAL_ARRAY_COUNT_EXT = 0x00008080,
+ GL_COLOR_ARRAY_SIZE = 0x00008081,
+ GL_COLOR_ARRAY_SIZE_EXT = 0x00008081,
+ GL_COLOR_ARRAY_TYPE = 0x00008082,
+ GL_COLOR_ARRAY_TYPE_EXT = 0x00008082,
+ GL_COLOR_ARRAY_STRIDE = 0x00008083,
+ GL_COLOR_ARRAY_STRIDE_EXT = 0x00008083,
+ GL_COLOR_ARRAY_COUNT_EXT = 0x00008084,
+ GL_INDEX_ARRAY_TYPE = 0x00008085,
+ GL_INDEX_ARRAY_TYPE_EXT = 0x00008085,
+ GL_INDEX_ARRAY_STRIDE = 0x00008086,
+ GL_INDEX_ARRAY_STRIDE_EXT = 0x00008086,
+ GL_INDEX_ARRAY_COUNT_EXT = 0x00008087,
+ GL_TEXTURE_COORD_ARRAY_SIZE = 0x00008088,
+ GL_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x00008088,
+ GL_TEXTURE_COORD_ARRAY_TYPE = 0x00008089,
+ GL_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x00008089,
+ GL_TEXTURE_COORD_ARRAY_STRIDE = 0x0000808A,
+ GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x0000808A,
+ GL_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x0000808B,
+ GL_EDGE_FLAG_ARRAY_STRIDE = 0x0000808C,
+ GL_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x0000808C,
+ GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x0000808D,
+ GL_VERTEX_ARRAY_POINTER = 0x0000808E,
+ GL_VERTEX_ARRAY_POINTER_EXT = 0x0000808E,
+ GL_NORMAL_ARRAY_POINTER = 0x0000808F,
+ GL_NORMAL_ARRAY_POINTER_EXT = 0x0000808F,
+ GL_COLOR_ARRAY_POINTER = 0x00008090,
+ GL_COLOR_ARRAY_POINTER_EXT = 0x00008090,
+ GL_INDEX_ARRAY_POINTER = 0x00008091,
+ GL_INDEX_ARRAY_POINTER_EXT = 0x00008091,
+ GL_TEXTURE_COORD_ARRAY_POINTER = 0x00008092,
+ GL_TEXTURE_COORD_ARRAY_POINTER_EXT = 0x00008092,
+ GL_EDGE_FLAG_ARRAY_POINTER = 0x00008093,
+ GL_EDGE_FLAG_ARRAY_POINTER_EXT = 0x00008093,
+ GL_INTERLACE_SGIX = 0x00008094,
+ GL_DETAIL_TEXTURE_2D_SGIS = 0x00008095,
+ GL_DETAIL_TEXTURE_2D_BINDING_SGIS = 0x00008096,
+ GL_LINEAR_DETAIL_SGIS = 0x00008097,
+ GL_LINEAR_DETAIL_ALPHA_SGIS = 0x00008098,
+ GL_LINEAR_DETAIL_COLOR_SGIS = 0x00008099,
+ GL_DETAIL_TEXTURE_LEVEL_SGIS = 0x0000809A,
+ GL_DETAIL_TEXTURE_MODE_SGIS = 0x0000809B,
+ GL_DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x0000809C,
+ GL_MULTISAMPLE = 0x0000809D,
+ GL_MULTISAMPLE_ARB = 0x0000809D,
+ GL_MULTISAMPLE_EXT = 0x0000809D,
+ GL_MULTISAMPLE_SGIS = 0x0000809D,
+ GL_SAMPLE_ALPHA_TO_COVERAGE = 0x0000809E,
+ GL_SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x0000809E,
+ GL_SAMPLE_ALPHA_TO_MASK_EXT = 0x0000809E,
+ GL_SAMPLE_ALPHA_TO_MASK_SGIS = 0x0000809E,
+ GL_SAMPLE_ALPHA_TO_ONE = 0x0000809F,
+ GL_SAMPLE_ALPHA_TO_ONE_ARB = 0x0000809F,
+ GL_SAMPLE_ALPHA_TO_ONE_EXT = 0x0000809F,
+ GL_SAMPLE_ALPHA_TO_ONE_SGIS = 0x0000809F,
+ GL_SAMPLE_COVERAGE = 0x000080A0,
+ GL_SAMPLE_COVERAGE_ARB = 0x000080A0,
+ GL_SAMPLE_MASK_EXT = 0x000080A0,
+ GL_SAMPLE_MASK_SGIS = 0x000080A0,
+ GL_1PASS_EXT = 0x000080A1,
+ GL_1PASS_SGIS = 0x000080A1,
+ GL_2PASS_0_EXT = 0x000080A2,
+ GL_2PASS_0_SGIS = 0x000080A2,
+ GL_2PASS_1_EXT = 0x000080A3,
+ GL_2PASS_1_SGIS = 0x000080A3,
+ GL_4PASS_0_EXT = 0x000080A4,
+ GL_4PASS_0_SGIS = 0x000080A4,
+ GL_4PASS_1_EXT = 0x000080A5,
+ GL_4PASS_1_SGIS = 0x000080A5,
+ GL_4PASS_2_EXT = 0x000080A6,
+ GL_4PASS_2_SGIS = 0x000080A6,
+ GL_4PASS_3_EXT = 0x000080A7,
+ GL_4PASS_3_SGIS = 0x000080A7,
+ GL_SAMPLE_BUFFERS = 0x000080A8,
+ GL_SAMPLE_BUFFERS_ARB = 0x000080A8,
+ GL_SAMPLE_BUFFERS_EXT = 0x000080A8,
+ GL_SAMPLE_BUFFERS_SGIS = 0x000080A8,
+ GL_SAMPLES = 0x000080A9,
+ GL_SAMPLES_ARB = 0x000080A9,
+ GL_SAMPLES_EXT = 0x000080A9,
+ GL_SAMPLES_SGIS = 0x000080A9,
+ GL_SAMPLE_COVERAGE_VALUE = 0x000080AA,
+ GL_SAMPLE_COVERAGE_VALUE_ARB = 0x000080AA,
+ GL_SAMPLE_MASK_VALUE_EXT = 0x000080AA,
+ GL_SAMPLE_MASK_VALUE_SGIS = 0x000080AA,
+ GL_SAMPLE_COVERAGE_INVERT = 0x000080AB,
+ GL_SAMPLE_COVERAGE_INVERT_ARB = 0x000080AB,
+ GL_SAMPLE_MASK_INVERT_EXT = 0x000080AB,
+ GL_SAMPLE_MASK_INVERT_SGIS = 0x000080AB,
+ GL_SAMPLE_PATTERN_EXT = 0x000080AC,
+ GL_SAMPLE_PATTERN_SGIS = 0x000080AC,
+ GL_LINEAR_SHARPEN_SGIS = 0x000080AD,
+ GL_LINEAR_SHARPEN_ALPHA_SGIS = 0x000080AE,
+ GL_LINEAR_SHARPEN_COLOR_SGIS = 0x000080AF,
+ GL_SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x000080B0,
+ GL_COLOR_MATRIX = 0x000080B1,
+ GL_COLOR_MATRIX_SGI = 0x000080B1,
+ GL_COLOR_MATRIX_STACK_DEPTH = 0x000080B2,
+ GL_COLOR_MATRIX_STACK_DEPTH_SGI = 0x000080B2,
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH = 0x000080B3,
+ GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x000080B3,
+ GL_POST_COLOR_MATRIX_RED_SCALE = 0x000080B4,
+ GL_POST_COLOR_MATRIX_RED_SCALE_SGI = 0x000080B4,
+ GL_POST_COLOR_MATRIX_GREEN_SCALE = 0x000080B5,
+ GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x000080B5,
+ GL_POST_COLOR_MATRIX_BLUE_SCALE = 0x000080B6,
+ GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x000080B6,
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE = 0x000080B7,
+ GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x000080B7,
+ GL_POST_COLOR_MATRIX_RED_BIAS = 0x000080B8,
+ GL_POST_COLOR_MATRIX_RED_BIAS_SGI = 0x000080B8,
+ GL_POST_COLOR_MATRIX_GREEN_BIAS = 0x000080B9,
+ GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x000080B9,
+ GL_POST_COLOR_MATRIX_BLUE_BIAS = 0x000080BA,
+ GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x000080BA,
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS = 0x000080BB,
+ GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x000080BB,
+ GL_TEXTURE_COLOR_TABLE_SGI = 0x000080BC,
+ GL_PROXY_TEXTURE_COLOR_TABLE_SGI = 0x000080BD,
+ GL_TEXTURE_ENV_BIAS_SGIX = 0x000080BE,
+ GL_SHADOW_AMBIENT_SGIX = 0x000080BF,
+ GL_TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x000080BF,
+ GL_BLEND_DST_RGB = 0x000080C8,
+ GL_BLEND_DST_RGB_EXT = 0x000080C8,
+ GL_BLEND_DST_RGB_OES = 0x000080C8,
+ GL_BLEND_SRC_RGB = 0x000080C9,
+ GL_BLEND_SRC_RGB_EXT = 0x000080C9,
+ GL_BLEND_SRC_RGB_OES = 0x000080C9,
+ GL_BLEND_DST_ALPHA = 0x000080CA,
+ GL_BLEND_DST_ALPHA_EXT = 0x000080CA,
+ GL_BLEND_DST_ALPHA_OES = 0x000080CA,
+ GL_BLEND_SRC_ALPHA = 0x000080CB,
+ GL_BLEND_SRC_ALPHA_EXT = 0x000080CB,
+ GL_BLEND_SRC_ALPHA_OES = 0x000080CB,
+ GL_422_EXT = 0x000080CC,
+ GL_422_REV_EXT = 0x000080CD,
+ GL_422_AVERAGE_EXT = 0x000080CE,
+ GL_422_REV_AVERAGE_EXT = 0x000080CF,
+ GL_COLOR_TABLE = 0x000080D0,
+ GL_COLOR_TABLE_SGI = 0x000080D0,
+ GL_POST_CONVOLUTION_COLOR_TABLE = 0x000080D1,
+ GL_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x000080D1,
+ GL_POST_COLOR_MATRIX_COLOR_TABLE = 0x000080D2,
+ GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x000080D2,
+ GL_PROXY_COLOR_TABLE = 0x000080D3,
+ GL_PROXY_COLOR_TABLE_SGI = 0x000080D3,
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE = 0x000080D4,
+ GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x000080D4,
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE = 0x000080D5,
+ GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x000080D5,
+ GL_COLOR_TABLE_SCALE = 0x000080D6,
+ GL_COLOR_TABLE_SCALE_SGI = 0x000080D6,
+ GL_COLOR_TABLE_BIAS = 0x000080D7,
+ GL_COLOR_TABLE_BIAS_SGI = 0x000080D7,
+ GL_COLOR_TABLE_FORMAT = 0x000080D8,
+ GL_COLOR_TABLE_FORMAT_SGI = 0x000080D8,
+ GL_COLOR_TABLE_WIDTH = 0x000080D9,
+ GL_COLOR_TABLE_WIDTH_SGI = 0x000080D9,
+ GL_COLOR_TABLE_RED_SIZE = 0x000080DA,
+ GL_COLOR_TABLE_RED_SIZE_SGI = 0x000080DA,
+ GL_COLOR_TABLE_GREEN_SIZE = 0x000080DB,
+ GL_COLOR_TABLE_GREEN_SIZE_SGI = 0x000080DB,
+ GL_COLOR_TABLE_BLUE_SIZE = 0x000080DC,
+ GL_COLOR_TABLE_BLUE_SIZE_SGI = 0x000080DC,
+ GL_COLOR_TABLE_ALPHA_SIZE = 0x000080DD,
+ GL_COLOR_TABLE_ALPHA_SIZE_SGI = 0x000080DD,
+ GL_COLOR_TABLE_LUMINANCE_SIZE = 0x000080DE,
+ GL_COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x000080DE,
+ GL_COLOR_TABLE_INTENSITY_SIZE = 0x000080DF,
+ GL_COLOR_TABLE_INTENSITY_SIZE_SGI = 0x000080DF,
+ GL_BGR = 0x000080E0,
+ GL_BGR_EXT = 0x000080E0,
+ GL_BGRA = 0x000080E1,
+ GL_BGRA_EXT = 0x000080E1,
+ GL_BGRA_IMG = 0x000080E1,
+ GL_COLOR_INDEX1_EXT = 0x000080E2,
+ GL_COLOR_INDEX2_EXT = 0x000080E3,
+ GL_COLOR_INDEX4_EXT = 0x000080E4,
+ GL_COLOR_INDEX8_EXT = 0x000080E5,
+ GL_COLOR_INDEX12_EXT = 0x000080E6,
+ GL_COLOR_INDEX16_EXT = 0x000080E7,
+ GL_MAX_ELEMENTS_VERTICES = 0x000080E8,
+ GL_MAX_ELEMENTS_VERTICES_EXT = 0x000080E8,
+ GL_MAX_ELEMENTS_INDICES = 0x000080E9,
+ GL_MAX_ELEMENTS_INDICES_EXT = 0x000080E9,
+ GL_PHONG_WIN = 0x000080EA,
+ GL_PHONG_HINT_WIN = 0x000080EB,
+ GL_FOG_SPECULAR_TEXTURE_WIN = 0x000080EC,
+ GL_TEXTURE_INDEX_SIZE_EXT = 0x000080ED,
+ GL_PARAMETER_BUFFER_ARB = 0x000080EE,
+ GL_PARAMETER_BUFFER_BINDING_ARB = 0x000080EF,
+ GL_CLIP_VOLUME_CLIPPING_HINT_EXT = 0x000080F0,
+ GL_DUAL_ALPHA4_SGIS = 0x00008110,
+ GL_DUAL_ALPHA8_SGIS = 0x00008111,
+ GL_DUAL_ALPHA12_SGIS = 0x00008112,
+ GL_DUAL_ALPHA16_SGIS = 0x00008113,
+ GL_DUAL_LUMINANCE4_SGIS = 0x00008114,
+ GL_DUAL_LUMINANCE8_SGIS = 0x00008115,
+ GL_DUAL_LUMINANCE12_SGIS = 0x00008116,
+ GL_DUAL_LUMINANCE16_SGIS = 0x00008117,
+ GL_DUAL_INTENSITY4_SGIS = 0x00008118,
+ GL_DUAL_INTENSITY8_SGIS = 0x00008119,
+ GL_DUAL_INTENSITY12_SGIS = 0x0000811A,
+ GL_DUAL_INTENSITY16_SGIS = 0x0000811B,
+ GL_DUAL_LUMINANCE_ALPHA4_SGIS = 0x0000811C,
+ GL_DUAL_LUMINANCE_ALPHA8_SGIS = 0x0000811D,
+ GL_QUAD_ALPHA4_SGIS = 0x0000811E,
+ GL_QUAD_ALPHA8_SGIS = 0x0000811F,
+ GL_QUAD_LUMINANCE4_SGIS = 0x00008120,
+ GL_QUAD_LUMINANCE8_SGIS = 0x00008121,
+ GL_QUAD_INTENSITY4_SGIS = 0x00008122,
+ GL_QUAD_INTENSITY8_SGIS = 0x00008123,
+ GL_DUAL_TEXTURE_SELECT_SGIS = 0x00008124,
+ GL_QUAD_TEXTURE_SELECT_SGIS = 0x00008125,
+ GL_POINT_SIZE_MIN = 0x00008126,
+ GL_POINT_SIZE_MIN_ARB = 0x00008126,
+ GL_POINT_SIZE_MIN_EXT = 0x00008126,
+ GL_POINT_SIZE_MIN_SGIS = 0x00008126,
+ GL_POINT_SIZE_MAX = 0x00008127,
+ GL_POINT_SIZE_MAX_ARB = 0x00008127,
+ GL_POINT_SIZE_MAX_EXT = 0x00008127,
+ GL_POINT_SIZE_MAX_SGIS = 0x00008127,
+ GL_POINT_FADE_THRESHOLD_SIZE = 0x00008128,
+ GL_POINT_FADE_THRESHOLD_SIZE_ARB = 0x00008128,
+ GL_POINT_FADE_THRESHOLD_SIZE_EXT = 0x00008128,
+ GL_POINT_FADE_THRESHOLD_SIZE_SGIS = 0x00008128,
+ GL_DISTANCE_ATTENUATION_EXT = 0x00008129,
+ GL_DISTANCE_ATTENUATION_SGIS = 0x00008129,
+ GL_POINT_DISTANCE_ATTENUATION = 0x00008129,
+ GL_POINT_DISTANCE_ATTENUATION_ARB = 0x00008129,
+ GL_FOG_FUNC_SGIS = 0x0000812A,
+ GL_FOG_FUNC_POINTS_SGIS = 0x0000812B,
+ GL_MAX_FOG_FUNC_POINTS_SGIS = 0x0000812C,
+ GL_CLAMP_TO_BORDER = 0x0000812D,
+ GL_CLAMP_TO_BORDER_ARB = 0x0000812D,
+ GL_CLAMP_TO_BORDER_EXT = 0x0000812D,
+ GL_CLAMP_TO_BORDER_NV = 0x0000812D,
+ GL_CLAMP_TO_BORDER_SGIS = 0x0000812D,
+ GL_CLAMP_TO_BORDER_OES = 0x0000812D,
+ GL_TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x0000812E,
+ GL_CLAMP_TO_EDGE = 0x0000812F,
+ GL_CLAMP_TO_EDGE_SGIS = 0x0000812F,
+ GL_PACK_SKIP_VOLUMES_SGIS = 0x00008130,
+ GL_PACK_IMAGE_DEPTH_SGIS = 0x00008131,
+ GL_UNPACK_SKIP_VOLUMES_SGIS = 0x00008132,
+ GL_UNPACK_IMAGE_DEPTH_SGIS = 0x00008133,
+ GL_TEXTURE_4D_SGIS = 0x00008134,
+ GL_PROXY_TEXTURE_4D_SGIS = 0x00008135,
+ GL_TEXTURE_4DSIZE_SGIS = 0x00008136,
+ GL_TEXTURE_WRAP_Q_SGIS = 0x00008137,
+ GL_MAX_4D_TEXTURE_SIZE_SGIS = 0x00008138,
+ GL_PIXEL_TEX_GEN_SGIX = 0x00008139,
+ GL_TEXTURE_MIN_LOD = 0x0000813A,
+ GL_TEXTURE_MIN_LOD_SGIS = 0x0000813A,
+ GL_TEXTURE_MAX_LOD = 0x0000813B,
+ GL_TEXTURE_MAX_LOD_SGIS = 0x0000813B,
+ GL_TEXTURE_BASE_LEVEL = 0x0000813C,
+ GL_TEXTURE_BASE_LEVEL_SGIS = 0x0000813C,
+ GL_TEXTURE_MAX_LEVEL = 0x0000813D,
+ GL_TEXTURE_MAX_LEVEL_APPLE = 0x0000813D,
+ GL_TEXTURE_MAX_LEVEL_SGIS = 0x0000813D,
+ GL_PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x0000813E,
+ GL_PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x0000813F,
+ GL_PIXEL_TILE_WIDTH_SGIX = 0x00008140,
+ GL_PIXEL_TILE_HEIGHT_SGIX = 0x00008141,
+ GL_PIXEL_TILE_GRID_WIDTH_SGIX = 0x00008142,
+ GL_PIXEL_TILE_GRID_HEIGHT_SGIX = 0x00008143,
+ GL_PIXEL_TILE_GRID_DEPTH_SGIX = 0x00008144,
+ GL_PIXEL_TILE_CACHE_SIZE_SGIX = 0x00008145,
+ GL_FILTER4_SGIS = 0x00008146,
+ GL_TEXTURE_FILTER4_SIZE_SGIS = 0x00008147,
+ GL_SPRITE_SGIX = 0x00008148,
+ GL_SPRITE_MODE_SGIX = 0x00008149,
+ GL_SPRITE_AXIS_SGIX = 0x0000814A,
+ GL_SPRITE_TRANSLATION_SGIX = 0x0000814B,
+ GL_SPRITE_AXIAL_SGIX = 0x0000814C,
+ GL_SPRITE_OBJECT_ALIGNED_SGIX = 0x0000814D,
+ GL_SPRITE_EYE_ALIGNED_SGIX = 0x0000814E,
+ GL_TEXTURE_4D_BINDING_SGIS = 0x0000814F,
+ GL_IGNORE_BORDER_HP = 0x00008150,
+ GL_CONSTANT_BORDER = 0x00008151,
+ GL_CONSTANT_BORDER_HP = 0x00008151,
+ GL_REPLICATE_BORDER = 0x00008153,
+ GL_REPLICATE_BORDER_HP = 0x00008153,
+ GL_CONVOLUTION_BORDER_COLOR = 0x00008154,
+ GL_CONVOLUTION_BORDER_COLOR_HP = 0x00008154,
+ GL_IMAGE_SCALE_X_HP = 0x00008155,
+ GL_IMAGE_SCALE_Y_HP = 0x00008156,
+ GL_IMAGE_TRANSLATE_X_HP = 0x00008157,
+ GL_IMAGE_TRANSLATE_Y_HP = 0x00008158,
+ GL_IMAGE_ROTATE_ANGLE_HP = 0x00008159,
+ GL_IMAGE_ROTATE_ORIGIN_X_HP = 0x0000815A,
+ GL_IMAGE_ROTATE_ORIGIN_Y_HP = 0x0000815B,
+ GL_IMAGE_MAG_FILTER_HP = 0x0000815C,
+ GL_IMAGE_MIN_FILTER_HP = 0x0000815D,
+ GL_IMAGE_CUBIC_WEIGHT_HP = 0x0000815E,
+ GL_CUBIC_HP = 0x0000815F,
+ GL_AVERAGE_HP = 0x00008160,
+ GL_IMAGE_TRANSFORM_2D_HP = 0x00008161,
+ GL_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x00008162,
+ GL_PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x00008163,
+ GL_OCCLUSION_TEST_HP = 0x00008165,
+ GL_OCCLUSION_TEST_RESULT_HP = 0x00008166,
+ GL_TEXTURE_LIGHTING_MODE_HP = 0x00008167,
+ GL_TEXTURE_POST_SPECULAR_HP = 0x00008168,
+ GL_TEXTURE_PRE_SPECULAR_HP = 0x00008169,
+ GL_LINEAR_CLIPMAP_LINEAR_SGIX = 0x00008170,
+ GL_TEXTURE_CLIPMAP_CENTER_SGIX = 0x00008171,
+ GL_TEXTURE_CLIPMAP_FRAME_SGIX = 0x00008172,
+ GL_TEXTURE_CLIPMAP_OFFSET_SGIX = 0x00008173,
+ GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x00008174,
+ GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x00008175,
+ GL_TEXTURE_CLIPMAP_DEPTH_SGIX = 0x00008176,
+ GL_MAX_CLIPMAP_DEPTH_SGIX = 0x00008177,
+ GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x00008178,
+ GL_POST_TEXTURE_FILTER_BIAS_SGIX = 0x00008179,
+ GL_POST_TEXTURE_FILTER_SCALE_SGIX = 0x0000817A,
+ GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x0000817B,
+ GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x0000817C,
+ GL_REFERENCE_PLANE_SGIX = 0x0000817D,
+ GL_REFERENCE_PLANE_EQUATION_SGIX = 0x0000817E,
+ GL_IR_INSTRUMENT1_SGIX = 0x0000817F,
+ GL_INSTRUMENT_BUFFER_POINTER_SGIX = 0x00008180,
+ GL_INSTRUMENT_MEASUREMENTS_SGIX = 0x00008181,
+ GL_LIST_PRIORITY_SGIX = 0x00008182,
+ GL_CALLIGRAPHIC_FRAGMENT_SGIX = 0x00008183,
+ GL_PIXEL_TEX_GEN_Q_CEILING_SGIX = 0x00008184,
+ GL_PIXEL_TEX_GEN_Q_ROUND_SGIX = 0x00008185,
+ GL_PIXEL_TEX_GEN_Q_FLOOR_SGIX = 0x00008186,
+ GL_PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = 0x00008187,
+ GL_PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = 0x00008188,
+ GL_PIXEL_TEX_GEN_ALPHA_LS_SGIX = 0x00008189,
+ GL_PIXEL_TEX_GEN_ALPHA_MS_SGIX = 0x0000818A,
+ GL_FRAMEZOOM_SGIX = 0x0000818B,
+ GL_FRAMEZOOM_FACTOR_SGIX = 0x0000818C,
+ GL_MAX_FRAMEZOOM_FACTOR_SGIX = 0x0000818D,
+ GL_TEXTURE_LOD_BIAS_S_SGIX = 0x0000818E,
+ GL_TEXTURE_LOD_BIAS_T_SGIX = 0x0000818F,
+ GL_TEXTURE_LOD_BIAS_R_SGIX = 0x00008190,
+ GL_GENERATE_MIPMAP = 0x00008191,
+ GL_GENERATE_MIPMAP_SGIS = 0x00008191,
+ GL_GENERATE_MIPMAP_HINT = 0x00008192,
+ GL_GENERATE_MIPMAP_HINT_SGIS = 0x00008192,
+ GL_GEOMETRY_DEFORMATION_SGIX = 0x00008194,
+ GL_TEXTURE_DEFORMATION_SGIX = 0x00008195,
+ GL_DEFORMATIONS_MASK_SGIX = 0x00008196,
+ GL_MAX_DEFORMATION_ORDER_SGIX = 0x00008197,
+ GL_FOG_OFFSET_SGIX = 0x00008198,
+ GL_FOG_OFFSET_VALUE_SGIX = 0x00008199,
+ GL_TEXTURE_COMPARE_SGIX = 0x0000819A,
+ GL_TEXTURE_COMPARE_OPERATOR_SGIX = 0x0000819B,
+ GL_TEXTURE_LEQUAL_R_SGIX = 0x0000819C,
+ GL_TEXTURE_GEQUAL_R_SGIX = 0x0000819D,
+ GL_DEPTH_COMPONENT16 = 0x000081A5,
+ GL_DEPTH_COMPONENT16_ARB = 0x000081A5,
+ GL_DEPTH_COMPONENT16_OES = 0x000081A5,
+ GL_DEPTH_COMPONENT16_SGIX = 0x000081A5,
+ GL_DEPTH_COMPONENT24 = 0x000081A6,
+ GL_DEPTH_COMPONENT24_ARB = 0x000081A6,
+ GL_DEPTH_COMPONENT24_OES = 0x000081A6,
+ GL_DEPTH_COMPONENT24_SGIX = 0x000081A6,
+ GL_DEPTH_COMPONENT32 = 0x000081A7,
+ GL_DEPTH_COMPONENT32_ARB = 0x000081A7,
+ GL_DEPTH_COMPONENT32_OES = 0x000081A7,
+ GL_DEPTH_COMPONENT32_SGIX = 0x000081A7,
+ GL_ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x000081A8,
+ GL_ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x000081A9,
+ GL_CULL_VERTEX_EXT = 0x000081AA,
+ GL_CULL_VERTEX_EYE_POSITION_EXT = 0x000081AB,
+ GL_CULL_VERTEX_OBJECT_POSITION_EXT = 0x000081AC,
+ GL_IUI_V2F_EXT = 0x000081AD,
+ GL_IUI_V3F_EXT = 0x000081AE,
+ GL_IUI_N3F_V2F_EXT = 0x000081AF,
+ GL_IUI_N3F_V3F_EXT = 0x000081B0,
+ GL_T2F_IUI_V2F_EXT = 0x000081B1,
+ GL_T2F_IUI_V3F_EXT = 0x000081B2,
+ GL_T2F_IUI_N3F_V2F_EXT = 0x000081B3,
+ GL_T2F_IUI_N3F_V3F_EXT = 0x000081B4,
+ GL_INDEX_TEST_EXT = 0x000081B5,
+ GL_INDEX_TEST_FUNC_EXT = 0x000081B6,
+ GL_INDEX_TEST_REF_EXT = 0x000081B7,
+ GL_INDEX_MATERIAL_EXT = 0x000081B8,
+ GL_INDEX_MATERIAL_PARAMETER_EXT = 0x000081B9,
+ GL_INDEX_MATERIAL_FACE_EXT = 0x000081BA,
+ GL_YCRCB_422_SGIX = 0x000081BB,
+ GL_YCRCB_444_SGIX = 0x000081BC,
+ GL_WRAP_BORDER_SUN = 0x000081D4,
+ GL_UNPACK_CONSTANT_DATA_SUNX = 0x000081D5,
+ GL_TEXTURE_CONSTANT_DATA_SUNX = 0x000081D6,
+ GL_TRIANGLE_LIST_SUN = 0x000081D7,
+ GL_REPLACEMENT_CODE_SUN = 0x000081D8,
+ GL_GLOBAL_ALPHA_SUN = 0x000081D9,
+ GL_GLOBAL_ALPHA_FACTOR_SUN = 0x000081DA,
+ GL_TEXTURE_COLOR_WRITEMASK_SGIS = 0x000081EF,
+ GL_EYE_DISTANCE_TO_POINT_SGIS = 0x000081F0,
+ GL_OBJECT_DISTANCE_TO_POINT_SGIS = 0x000081F1,
+ GL_EYE_DISTANCE_TO_LINE_SGIS = 0x000081F2,
+ GL_OBJECT_DISTANCE_TO_LINE_SGIS = 0x000081F3,
+ GL_EYE_POINT_SGIS = 0x000081F4,
+ GL_OBJECT_POINT_SGIS = 0x000081F5,
+ GL_EYE_LINE_SGIS = 0x000081F6,
+ GL_OBJECT_LINE_SGIS = 0x000081F7,
+ GL_LIGHT_MODEL_COLOR_CONTROL = 0x000081F8,
+ GL_LIGHT_MODEL_COLOR_CONTROL_EXT = 0x000081F8,
+ GL_SINGLE_COLOR = 0x000081F9,
+ GL_SINGLE_COLOR_EXT = 0x000081F9,
+ GL_SEPARATE_SPECULAR_COLOR = 0x000081FA,
+ GL_SEPARATE_SPECULAR_COLOR_EXT = 0x000081FA,
+ GL_SHARED_TEXTURE_PALETTE_EXT = 0x000081FB,
+ GL_TEXT_FRAGMENT_SHADER_ATI = 0x00008200,
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x00008210,
+ GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x00008210,
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x00008211,
+ GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x00008211,
+ GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x00008212,
+ GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x00008213,
+ GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x00008214,
+ GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x00008215,
+ GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x00008216,
+ GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x00008217,
+ GL_FRAMEBUFFER_DEFAULT = 0x00008218,
+ GL_FRAMEBUFFER_UNDEFINED = 0x00008219,
+ GL_FRAMEBUFFER_UNDEFINED_OES = 0x00008219,
+ GL_DEPTH_STENCIL_ATTACHMENT = 0x0000821A,
+ GL_MAJOR_VERSION = 0x0000821B,
+ GL_MINOR_VERSION = 0x0000821C,
+ GL_NUM_EXTENSIONS = 0x0000821D,
+ GL_CONTEXT_FLAGS = 0x0000821E,
+ GL_BUFFER_IMMUTABLE_STORAGE = 0x0000821F,
+ GL_BUFFER_IMMUTABLE_STORAGE_EXT = 0x0000821F,
+ GL_BUFFER_STORAGE_FLAGS = 0x00008220,
+ GL_BUFFER_STORAGE_FLAGS_EXT = 0x00008220,
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED = 0x00008221,
+ GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES = 0x00008221,
+ GL_INDEX = 0x00008222,
+ GL_COMPRESSED_RED = 0x00008225,
+ GL_COMPRESSED_RG = 0x00008226,
+ GL_RG = 0x00008227,
+ GL_RG_EXT = 0x00008227,
+ GL_RG_INTEGER = 0x00008228,
+ GL_R8 = 0x00008229,
+ GL_R8_EXT = 0x00008229,
+ GL_R16 = 0x0000822A,
+ GL_R16_EXT = 0x0000822A,
+ GL_RG8 = 0x0000822B,
+ GL_RG8_EXT = 0x0000822B,
+ GL_RG16 = 0x0000822C,
+ GL_RG16_EXT = 0x0000822C,
+ GL_R16F = 0x0000822D,
+ GL_R16F_EXT = 0x0000822D,
+ GL_R32F = 0x0000822E,
+ GL_R32F_EXT = 0x0000822E,
+ GL_RG16F = 0x0000822F,
+ GL_RG16F_EXT = 0x0000822F,
+ GL_RG32F = 0x00008230,
+ GL_RG32F_EXT = 0x00008230,
+ GL_R8I = 0x00008231,
+ GL_R8UI = 0x00008232,
+ GL_R16I = 0x00008233,
+ GL_R16UI = 0x00008234,
+ GL_R32I = 0x00008235,
+ GL_R32UI = 0x00008236,
+ GL_RG8I = 0x00008237,
+ GL_RG8UI = 0x00008238,
+ GL_RG16I = 0x00008239,
+ GL_RG16UI = 0x0000823A,
+ GL_RG32I = 0x0000823B,
+ GL_RG32UI = 0x0000823C,
+ GL_SYNC_CL_EVENT_ARB = 0x00008240,
+ GL_SYNC_CL_EVENT_COMPLETE_ARB = 0x00008241,
+ GL_DEBUG_OUTPUT_SYNCHRONOUS = 0x00008242,
+ GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB = 0x00008242,
+ GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR = 0x00008242,
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x00008243,
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB = 0x00008243,
+ GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR = 0x00008243,
+ GL_DEBUG_CALLBACK_FUNCTION = 0x00008244,
+ GL_DEBUG_CALLBACK_FUNCTION_ARB = 0x00008244,
+ GL_DEBUG_CALLBACK_FUNCTION_KHR = 0x00008244,
+ GL_DEBUG_CALLBACK_USER_PARAM = 0x00008245,
+ GL_DEBUG_CALLBACK_USER_PARAM_ARB = 0x00008245,
+ GL_DEBUG_CALLBACK_USER_PARAM_KHR = 0x00008245,
+ GL_DEBUG_SOURCE_API = 0x00008246,
+ GL_DEBUG_SOURCE_API_ARB = 0x00008246,
+ GL_DEBUG_SOURCE_API_KHR = 0x00008246,
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM = 0x00008247,
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB = 0x00008247,
+ GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR = 0x00008247,
+ GL_DEBUG_SOURCE_SHADER_COMPILER = 0x00008248,
+ GL_DEBUG_SOURCE_SHADER_COMPILER_ARB = 0x00008248,
+ GL_DEBUG_SOURCE_SHADER_COMPILER_KHR = 0x00008248,
+ GL_DEBUG_SOURCE_THIRD_PARTY = 0x00008249,
+ GL_DEBUG_SOURCE_THIRD_PARTY_ARB = 0x00008249,
+ GL_DEBUG_SOURCE_THIRD_PARTY_KHR = 0x00008249,
+ GL_DEBUG_SOURCE_APPLICATION = 0x0000824A,
+ GL_DEBUG_SOURCE_APPLICATION_ARB = 0x0000824A,
+ GL_DEBUG_SOURCE_APPLICATION_KHR = 0x0000824A,
+ GL_DEBUG_SOURCE_OTHER = 0x0000824B,
+ GL_DEBUG_SOURCE_OTHER_ARB = 0x0000824B,
+ GL_DEBUG_SOURCE_OTHER_KHR = 0x0000824B,
+ GL_DEBUG_TYPE_ERROR = 0x0000824C,
+ GL_DEBUG_TYPE_ERROR_ARB = 0x0000824C,
+ GL_DEBUG_TYPE_ERROR_KHR = 0x0000824C,
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x0000824D,
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB = 0x0000824D,
+ GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR = 0x0000824D,
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x0000824E,
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB = 0x0000824E,
+ GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR = 0x0000824E,
+ GL_DEBUG_TYPE_PORTABILITY = 0x0000824F,
+ GL_DEBUG_TYPE_PORTABILITY_ARB = 0x0000824F,
+ GL_DEBUG_TYPE_PORTABILITY_KHR = 0x0000824F,
+ GL_DEBUG_TYPE_PERFORMANCE = 0x00008250,
+ GL_DEBUG_TYPE_PERFORMANCE_ARB = 0x00008250,
+ GL_DEBUG_TYPE_PERFORMANCE_KHR = 0x00008250,
+ GL_DEBUG_TYPE_OTHER = 0x00008251,
+ GL_DEBUG_TYPE_OTHER_ARB = 0x00008251,
+ GL_DEBUG_TYPE_OTHER_KHR = 0x00008251,
+ GL_LOSE_CONTEXT_ON_RESET = 0x00008252,
+ GL_LOSE_CONTEXT_ON_RESET_ARB = 0x00008252,
+ GL_LOSE_CONTEXT_ON_RESET_EXT = 0x00008252,
+ GL_LOSE_CONTEXT_ON_RESET_KHR = 0x00008252,
+ GL_GUILTY_CONTEXT_RESET = 0x00008253,
+ GL_GUILTY_CONTEXT_RESET_ARB = 0x00008253,
+ GL_GUILTY_CONTEXT_RESET_EXT = 0x00008253,
+ GL_GUILTY_CONTEXT_RESET_KHR = 0x00008253,
+ GL_INNOCENT_CONTEXT_RESET = 0x00008254,
+ GL_INNOCENT_CONTEXT_RESET_ARB = 0x00008254,
+ GL_INNOCENT_CONTEXT_RESET_EXT = 0x00008254,
+ GL_INNOCENT_CONTEXT_RESET_KHR = 0x00008254,
+ GL_UNKNOWN_CONTEXT_RESET = 0x00008255,
+ GL_UNKNOWN_CONTEXT_RESET_ARB = 0x00008255,
+ GL_UNKNOWN_CONTEXT_RESET_EXT = 0x00008255,
+ GL_UNKNOWN_CONTEXT_RESET_KHR = 0x00008255,
+ GL_RESET_NOTIFICATION_STRATEGY = 0x00008256,
+ GL_RESET_NOTIFICATION_STRATEGY_ARB = 0x00008256,
+ GL_RESET_NOTIFICATION_STRATEGY_EXT = 0x00008256,
+ GL_RESET_NOTIFICATION_STRATEGY_KHR = 0x00008256,
+ GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 0x00008257,
+ GL_PROGRAM_SEPARABLE = 0x00008258,
+ GL_PROGRAM_SEPARABLE_EXT = 0x00008258,
+ GL_ACTIVE_PROGRAM = 0x00008259,
+ GL_ACTIVE_PROGRAM_EXT = 0x00008259,
+ GL_PROGRAM_PIPELINE_BINDING = 0x0000825A,
+ GL_PROGRAM_PIPELINE_BINDING_EXT = 0x0000825A,
+ GL_MAX_VIEWPORTS = 0x0000825B,
+ GL_MAX_VIEWPORTS_NV = 0x0000825B,
+ GL_VIEWPORT_SUBPIXEL_BITS = 0x0000825C,
+ GL_VIEWPORT_SUBPIXEL_BITS_EXT = 0x0000825C,
+ GL_VIEWPORT_SUBPIXEL_BITS_NV = 0x0000825C,
+ GL_VIEWPORT_BOUNDS_RANGE = 0x0000825D,
+ GL_VIEWPORT_BOUNDS_RANGE_EXT = 0x0000825D,
+ GL_VIEWPORT_BOUNDS_RANGE_NV = 0x0000825D,
+ GL_LAYER_PROVOKING_VERTEX = 0x0000825E,
+ GL_LAYER_PROVOKING_VERTEX_EXT = 0x0000825E,
+ GL_LAYER_PROVOKING_VERTEX_OES = 0x0000825E,
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 0x0000825F,
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_EXT = 0x0000825F,
+ GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV = 0x0000825F,
+ GL_UNDEFINED_VERTEX = 0x00008260,
+ GL_UNDEFINED_VERTEX_EXT = 0x00008260,
+ GL_UNDEFINED_VERTEX_OES = 0x00008260,
+ GL_NO_RESET_NOTIFICATION = 0x00008261,
+ GL_NO_RESET_NOTIFICATION_ARB = 0x00008261,
+ GL_NO_RESET_NOTIFICATION_EXT = 0x00008261,
+ GL_NO_RESET_NOTIFICATION_KHR = 0x00008261,
+ GL_MAX_COMPUTE_SHARED_MEMORY_SIZE = 0x00008262,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS = 0x00008263,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS = 0x00008264,
+ GL_MAX_COMPUTE_ATOMIC_COUNTERS = 0x00008265,
+ GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS = 0x00008266,
+ GL_COMPUTE_WORK_GROUP_SIZE = 0x00008267,
+ GL_DEBUG_TYPE_MARKER = 0x00008268,
+ GL_DEBUG_TYPE_MARKER_KHR = 0x00008268,
+ GL_DEBUG_TYPE_PUSH_GROUP = 0x00008269,
+ GL_DEBUG_TYPE_PUSH_GROUP_KHR = 0x00008269,
+ GL_DEBUG_TYPE_POP_GROUP = 0x0000826A,
+ GL_DEBUG_TYPE_POP_GROUP_KHR = 0x0000826A,
+ GL_DEBUG_SEVERITY_NOTIFICATION = 0x0000826B,
+ GL_DEBUG_SEVERITY_NOTIFICATION_KHR = 0x0000826B,
+ GL_MAX_DEBUG_GROUP_STACK_DEPTH = 0x0000826C,
+ GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR = 0x0000826C,
+ GL_DEBUG_GROUP_STACK_DEPTH = 0x0000826D,
+ GL_DEBUG_GROUP_STACK_DEPTH_KHR = 0x0000826D,
+ GL_MAX_UNIFORM_LOCATIONS = 0x0000826E,
+ GL_INTERNALFORMAT_SUPPORTED = 0x0000826F,
+ GL_INTERNALFORMAT_PREFERRED = 0x00008270,
+ GL_INTERNALFORMAT_RED_SIZE = 0x00008271,
+ GL_INTERNALFORMAT_GREEN_SIZE = 0x00008272,
+ GL_INTERNALFORMAT_BLUE_SIZE = 0x00008273,
+ GL_INTERNALFORMAT_ALPHA_SIZE = 0x00008274,
+ GL_INTERNALFORMAT_DEPTH_SIZE = 0x00008275,
+ GL_INTERNALFORMAT_STENCIL_SIZE = 0x00008276,
+ GL_INTERNALFORMAT_SHARED_SIZE = 0x00008277,
+ GL_INTERNALFORMAT_RED_TYPE = 0x00008278,
+ GL_INTERNALFORMAT_GREEN_TYPE = 0x00008279,
+ GL_INTERNALFORMAT_BLUE_TYPE = 0x0000827A,
+ GL_INTERNALFORMAT_ALPHA_TYPE = 0x0000827B,
+ GL_INTERNALFORMAT_DEPTH_TYPE = 0x0000827C,
+ GL_INTERNALFORMAT_STENCIL_TYPE = 0x0000827D,
+ GL_MAX_WIDTH = 0x0000827E,
+ GL_MAX_HEIGHT = 0x0000827F,
+ GL_MAX_DEPTH = 0x00008280,
+ GL_MAX_LAYERS = 0x00008281,
+ GL_MAX_COMBINED_DIMENSIONS = 0x00008282,
+ GL_COLOR_COMPONENTS = 0x00008283,
+ GL_DEPTH_COMPONENTS = 0x00008284,
+ GL_STENCIL_COMPONENTS = 0x00008285,
+ GL_COLOR_RENDERABLE = 0x00008286,
+ GL_DEPTH_RENDERABLE = 0x00008287,
+ GL_STENCIL_RENDERABLE = 0x00008288,
+ GL_FRAMEBUFFER_RENDERABLE = 0x00008289,
+ GL_FRAMEBUFFER_RENDERABLE_LAYERED = 0x0000828A,
+ GL_FRAMEBUFFER_BLEND = 0x0000828B,
+ GL_READ_PIXELS = 0x0000828C,
+ GL_READ_PIXELS_FORMAT = 0x0000828D,
+ GL_READ_PIXELS_TYPE = 0x0000828E,
+ GL_TEXTURE_IMAGE_FORMAT = 0x0000828F,
+ GL_TEXTURE_IMAGE_TYPE = 0x00008290,
+ GL_GET_TEXTURE_IMAGE_FORMAT = 0x00008291,
+ GL_GET_TEXTURE_IMAGE_TYPE = 0x00008292,
+ GL_MIPMAP = 0x00008293,
+ GL_MANUAL_GENERATE_MIPMAP = 0x00008294,
+ GL_AUTO_GENERATE_MIPMAP = 0x00008295,
+ GL_COLOR_ENCODING = 0x00008296,
+ GL_SRGB_READ = 0x00008297,
+ GL_SRGB_WRITE = 0x00008298,
+ GL_SRGB_DECODE_ARB = 0x00008299,
+ GL_FILTER = 0x0000829A,
+ GL_VERTEX_TEXTURE = 0x0000829B,
+ GL_TESS_CONTROL_TEXTURE = 0x0000829C,
+ GL_TESS_EVALUATION_TEXTURE = 0x0000829D,
+ GL_GEOMETRY_TEXTURE = 0x0000829E,
+ GL_FRAGMENT_TEXTURE = 0x0000829F,
+ GL_COMPUTE_TEXTURE = 0x000082A0,
+ GL_TEXTURE_SHADOW = 0x000082A1,
+ GL_TEXTURE_GATHER = 0x000082A2,
+ GL_TEXTURE_GATHER_SHADOW = 0x000082A3,
+ GL_SHADER_IMAGE_LOAD = 0x000082A4,
+ GL_SHADER_IMAGE_STORE = 0x000082A5,
+ GL_SHADER_IMAGE_ATOMIC = 0x000082A6,
+ GL_IMAGE_TEXEL_SIZE = 0x000082A7,
+ GL_IMAGE_COMPATIBILITY_CLASS = 0x000082A8,
+ GL_IMAGE_PIXEL_FORMAT = 0x000082A9,
+ GL_IMAGE_PIXEL_TYPE = 0x000082AA,
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_TEST = 0x000082AC,
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_TEST = 0x000082AD,
+ GL_SIMULTANEOUS_TEXTURE_AND_DEPTH_WRITE = 0x000082AE,
+ GL_SIMULTANEOUS_TEXTURE_AND_STENCIL_WRITE = 0x000082AF,
+ GL_TEXTURE_COMPRESSED_BLOCK_WIDTH = 0x000082B1,
+ GL_TEXTURE_COMPRESSED_BLOCK_HEIGHT = 0x000082B2,
+ GL_TEXTURE_COMPRESSED_BLOCK_SIZE = 0x000082B3,
+ GL_CLEAR_BUFFER = 0x000082B4,
+ GL_TEXTURE_VIEW = 0x000082B5,
+ GL_VIEW_COMPATIBILITY_CLASS = 0x000082B6,
+ GL_FULL_SUPPORT = 0x000082B7,
+ GL_CAVEAT_SUPPORT = 0x000082B8,
+ GL_IMAGE_CLASS_4_X_32 = 0x000082B9,
+ GL_IMAGE_CLASS_2_X_32 = 0x000082BA,
+ GL_IMAGE_CLASS_1_X_32 = 0x000082BB,
+ GL_IMAGE_CLASS_4_X_16 = 0x000082BC,
+ GL_IMAGE_CLASS_2_X_16 = 0x000082BD,
+ GL_IMAGE_CLASS_1_X_16 = 0x000082BE,
+ GL_IMAGE_CLASS_4_X_8 = 0x000082BF,
+ GL_IMAGE_CLASS_2_X_8 = 0x000082C0,
+ GL_IMAGE_CLASS_1_X_8 = 0x000082C1,
+ GL_IMAGE_CLASS_11_11_10 = 0x000082C2,
+ GL_IMAGE_CLASS_10_10_10_2 = 0x000082C3,
+ GL_VIEW_CLASS_128_BITS = 0x000082C4,
+ GL_VIEW_CLASS_96_BITS = 0x000082C5,
+ GL_VIEW_CLASS_64_BITS = 0x000082C6,
+ GL_VIEW_CLASS_48_BITS = 0x000082C7,
+ GL_VIEW_CLASS_32_BITS = 0x000082C8,
+ GL_VIEW_CLASS_24_BITS = 0x000082C9,
+ GL_VIEW_CLASS_16_BITS = 0x000082CA,
+ GL_VIEW_CLASS_8_BITS = 0x000082CB,
+ GL_VIEW_CLASS_S3TC_DXT1_RGB = 0x000082CC,
+ GL_VIEW_CLASS_S3TC_DXT1_RGBA = 0x000082CD,
+ GL_VIEW_CLASS_S3TC_DXT3_RGBA = 0x000082CE,
+ GL_VIEW_CLASS_S3TC_DXT5_RGBA = 0x000082CF,
+ GL_VIEW_CLASS_RGTC1_RED = 0x000082D0,
+ GL_VIEW_CLASS_RGTC2_RG = 0x000082D1,
+ GL_VIEW_CLASS_BPTC_UNORM = 0x000082D2,
+ GL_VIEW_CLASS_BPTC_FLOAT = 0x000082D3,
+ GL_VERTEX_ATTRIB_BINDING = 0x000082D4,
+ GL_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x000082D5,
+ GL_VERTEX_BINDING_DIVISOR = 0x000082D6,
+ GL_VERTEX_BINDING_OFFSET = 0x000082D7,
+ GL_VERTEX_BINDING_STRIDE = 0x000082D8,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET = 0x000082D9,
+ GL_MAX_VERTEX_ATTRIB_BINDINGS = 0x000082DA,
+ GL_TEXTURE_VIEW_MIN_LEVEL = 0x000082DB,
+ GL_TEXTURE_VIEW_MIN_LEVEL_EXT = 0x000082DB,
+ GL_TEXTURE_VIEW_MIN_LEVEL_OES = 0x000082DB,
+ GL_TEXTURE_VIEW_NUM_LEVELS = 0x000082DC,
+ GL_TEXTURE_VIEW_NUM_LEVELS_EXT = 0x000082DC,
+ GL_TEXTURE_VIEW_NUM_LEVELS_OES = 0x000082DC,
+ GL_TEXTURE_VIEW_MIN_LAYER = 0x000082DD,
+ GL_TEXTURE_VIEW_MIN_LAYER_EXT = 0x000082DD,
+ GL_TEXTURE_VIEW_MIN_LAYER_OES = 0x000082DD,
+ GL_TEXTURE_VIEW_NUM_LAYERS = 0x000082DE,
+ GL_TEXTURE_VIEW_NUM_LAYERS_EXT = 0x000082DE,
+ GL_TEXTURE_VIEW_NUM_LAYERS_OES = 0x000082DE,
+ GL_TEXTURE_IMMUTABLE_LEVELS = 0x000082DF,
+ GL_BUFFER = 0x000082E0,
+ GL_BUFFER_KHR = 0x000082E0,
+ GL_SHADER = 0x000082E1,
+ GL_SHADER_KHR = 0x000082E1,
+ GL_PROGRAM = 0x000082E2,
+ GL_PROGRAM_KHR = 0x000082E2,
+ GL_QUERY = 0x000082E3,
+ GL_QUERY_KHR = 0x000082E3,
+ GL_PROGRAM_PIPELINE = 0x000082E4,
+ GL_PROGRAM_PIPELINE_KHR = 0x000082E4,
+ GL_MAX_VERTEX_ATTRIB_STRIDE = 0x000082E5,
+ GL_SAMPLER = 0x000082E6,
+ GL_SAMPLER_KHR = 0x000082E6,
+ GL_DISPLAY_LIST = 0x000082E7,
+ GL_MAX_LABEL_LENGTH = 0x000082E8,
+ GL_MAX_LABEL_LENGTH_KHR = 0x000082E8,
+ GL_NUM_SHADING_LANGUAGE_VERSIONS = 0x000082E9,
+ GL_QUERY_TARGET = 0x000082EA,
+ GL_TRANSFORM_FEEDBACK_OVERFLOW_ARB = 0x000082EC,
+ GL_TRANSFORM_FEEDBACK_STREAM_OVERFLOW_ARB = 0x000082ED,
+ GL_VERTICES_SUBMITTED_ARB = 0x000082EE,
+ GL_PRIMITIVES_SUBMITTED_ARB = 0x000082EF,
+ GL_VERTEX_SHADER_INVOCATIONS_ARB = 0x000082F0,
+ GL_TESS_CONTROL_SHADER_PATCHES_ARB = 0x000082F1,
+ GL_TESS_EVALUATION_SHADER_INVOCATIONS_ARB = 0x000082F2,
+ GL_GEOMETRY_SHADER_PRIMITIVES_EMITTED_ARB = 0x000082F3,
+ GL_FRAGMENT_SHADER_INVOCATIONS_ARB = 0x000082F4,
+ GL_COMPUTE_SHADER_INVOCATIONS_ARB = 0x000082F5,
+ GL_CLIPPING_INPUT_PRIMITIVES_ARB = 0x000082F6,
+ GL_CLIPPING_OUTPUT_PRIMITIVES_ARB = 0x000082F7,
+ GL_SPARSE_BUFFER_PAGE_SIZE_ARB = 0x000082F8,
+ GL_MAX_CULL_DISTANCES = 0x000082F9,
+ GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES = 0x000082FA,
+ GL_CONTEXT_RELEASE_BEHAVIOR = 0x000082FB,
+ GL_CONTEXT_RELEASE_BEHAVIOR_KHR = 0x000082FB,
+ GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x000082FC,
+ GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR = 0x000082FC,
+ GL_DEPTH_PASS_INSTRUMENT_SGIX = 0x00008310,
+ GL_DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = 0x00008311,
+ GL_DEPTH_PASS_INSTRUMENT_MAX_SGIX = 0x00008312,
+ GL_FRAGMENTS_INSTRUMENT_SGIX = 0x00008313,
+ GL_FRAGMENTS_INSTRUMENT_COUNTERS_SGIX = 0x00008314,
+ GL_FRAGMENTS_INSTRUMENT_MAX_SGIX = 0x00008315,
+ GL_CONVOLUTION_HINT_SGIX = 0x00008316,
+ GL_YCRCB_SGIX = 0x00008318,
+ GL_YCRCBA_SGIX = 0x00008319,
+ GL_UNPACK_COMPRESSED_SIZE_SGIX = 0x0000831A,
+ GL_PACK_MAX_COMPRESSED_SIZE_SGIX = 0x0000831B,
+ GL_PACK_COMPRESSED_SIZE_SGIX = 0x0000831C,
+ GL_SLIM8U_SGIX = 0x0000831D,
+ GL_SLIM10U_SGIX = 0x0000831E,
+ GL_SLIM12S_SGIX = 0x0000831F,
+ GL_ALPHA_MIN_SGIX = 0x00008320,
+ GL_ALPHA_MAX_SGIX = 0x00008321,
+ GL_SCALEBIAS_HINT_SGIX = 0x00008322,
+ GL_ASYNC_MARKER_SGIX = 0x00008329,
+ GL_PIXEL_TEX_GEN_MODE_SGIX = 0x0000832B,
+ GL_ASYNC_HISTOGRAM_SGIX = 0x0000832C,
+ GL_MAX_ASYNC_HISTOGRAM_SGIX = 0x0000832D,
+ GL_PIXEL_TRANSFORM_2D_EXT = 0x00008330,
+ GL_PIXEL_MAG_FILTER_EXT = 0x00008331,
+ GL_PIXEL_MIN_FILTER_EXT = 0x00008332,
+ GL_PIXEL_CUBIC_WEIGHT_EXT = 0x00008333,
+ GL_CUBIC_EXT = 0x00008334,
+ GL_AVERAGE_EXT = 0x00008335,
+ GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x00008336,
+ GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x00008337,
+ GL_PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x00008338,
+ GL_FRAGMENT_MATERIAL_EXT = 0x00008349,
+ GL_FRAGMENT_NORMAL_EXT = 0x0000834A,
+ GL_FRAGMENT_COLOR_EXT = 0x0000834C,
+ GL_ATTENUATION_EXT = 0x0000834D,
+ GL_SHADOW_ATTENUATION_EXT = 0x0000834E,
+ GL_TEXTURE_APPLICATION_MODE_EXT = 0x0000834F,
+ GL_TEXTURE_LIGHT_EXT = 0x00008350,
+ GL_TEXTURE_MATERIAL_FACE_EXT = 0x00008351,
+ GL_TEXTURE_MATERIAL_PARAMETER_EXT = 0x00008352,
+ GL_PIXEL_TEXTURE_SGIS = 0x00008353,
+ GL_PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x00008354,
+ GL_PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x00008355,
+ GL_PIXEL_GROUP_COLOR_SGIS = 0x00008356,
+ GL_LINE_QUALITY_HINT_SGIX = 0x0000835B,
+ GL_ASYNC_TEX_IMAGE_SGIX = 0x0000835C,
+ GL_ASYNC_DRAW_PIXELS_SGIX = 0x0000835D,
+ GL_ASYNC_READ_PIXELS_SGIX = 0x0000835E,
+ GL_MAX_ASYNC_TEX_IMAGE_SGIX = 0x0000835F,
+ GL_MAX_ASYNC_DRAW_PIXELS_SGIX = 0x00008360,
+ GL_MAX_ASYNC_READ_PIXELS_SGIX = 0x00008361,
+ GL_UNSIGNED_BYTE_2_3_3_REV = 0x00008362,
+ GL_UNSIGNED_BYTE_2_3_3_REV_EXT = 0x00008362,
+ GL_UNSIGNED_SHORT_5_6_5 = 0x00008363,
+ GL_UNSIGNED_SHORT_5_6_5_EXT = 0x00008363,
+ GL_UNSIGNED_SHORT_5_6_5_REV = 0x00008364,
+ GL_UNSIGNED_SHORT_5_6_5_REV_EXT = 0x00008364,
+ GL_UNSIGNED_SHORT_4_4_4_4_REV = 0x00008365,
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x00008365,
+ GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG = 0x00008365,
+ GL_UNSIGNED_SHORT_1_5_5_5_REV = 0x00008366,
+ GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x00008366,
+ GL_UNSIGNED_INT_8_8_8_8_REV = 0x00008367,
+ GL_UNSIGNED_INT_8_8_8_8_REV_EXT = 0x00008367,
+ GL_UNSIGNED_INT_2_10_10_10_REV = 0x00008368,
+ GL_UNSIGNED_INT_2_10_10_10_REV_EXT = 0x00008368,
+ GL_TEXTURE_MAX_CLAMP_S_SGIX = 0x00008369,
+ GL_TEXTURE_MAX_CLAMP_T_SGIX = 0x0000836A,
+ GL_TEXTURE_MAX_CLAMP_R_SGIX = 0x0000836B,
+ GL_MIRRORED_REPEAT = 0x00008370,
+ GL_MIRRORED_REPEAT_ARB = 0x00008370,
+ GL_MIRRORED_REPEAT_IBM = 0x00008370,
+ GL_MIRRORED_REPEAT_OES = 0x00008370,
+ GL_RGB_S3TC = 0x000083A0,
+ GL_RGB4_S3TC = 0x000083A1,
+ GL_RGBA_S3TC = 0x000083A2,
+ GL_RGBA4_S3TC = 0x000083A3,
+ GL_RGBA_DXT5_S3TC = 0x000083A4,
+ GL_RGBA4_DXT5_S3TC = 0x000083A5,
+ GL_VERTEX_PRECLIP_SGIX = 0x000083EE,
+ GL_VERTEX_PRECLIP_HINT_SGIX = 0x000083EF,
+ GL_COMPRESSED_RGB_S3TC_DXT1_EXT = 0x000083F0,
+ GL_COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x000083F1,
+ GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE = 0x000083F2,
+ GL_COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x000083F2,
+ GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE = 0x000083F3,
+ GL_COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x000083F3,
+ GL_PARALLEL_ARRAYS_INTEL = 0x000083F4,
+ GL_VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x000083F5,
+ GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x000083F6,
+ GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x000083F7,
+ GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x000083F8,
+ GL_PERFQUERY_DONOT_FLUSH_INTEL = 0x000083F9,
+ GL_PERFQUERY_FLUSH_INTEL = 0x000083FA,
+ GL_PERFQUERY_WAIT_INTEL = 0x000083FB,
+ GL_TEXTURE_MEMORY_LAYOUT_INTEL = 0x000083FF,
+ GL_FRAGMENT_LIGHTING_SGIX = 0x00008400,
+ GL_FRAGMENT_COLOR_MATERIAL_SGIX = 0x00008401,
+ GL_FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x00008402,
+ GL_FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x00008403,
+ GL_MAX_FRAGMENT_LIGHTS_SGIX = 0x00008404,
+ GL_MAX_ACTIVE_LIGHTS_SGIX = 0x00008405,
+ GL_CURRENT_RASTER_NORMAL_SGIX = 0x00008406,
+ GL_LIGHT_ENV_MODE_SGIX = 0x00008407,
+ GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x00008408,
+ GL_FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x00008409,
+ GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x0000840A,
+ GL_FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x0000840B,
+ GL_FRAGMENT_LIGHT0_SGIX = 0x0000840C,
+ GL_FRAGMENT_LIGHT1_SGIX = 0x0000840D,
+ GL_FRAGMENT_LIGHT2_SGIX = 0x0000840E,
+ GL_FRAGMENT_LIGHT3_SGIX = 0x0000840F,
+ GL_FRAGMENT_LIGHT4_SGIX = 0x00008410,
+ GL_FRAGMENT_LIGHT5_SGIX = 0x00008411,
+ GL_FRAGMENT_LIGHT6_SGIX = 0x00008412,
+ GL_FRAGMENT_LIGHT7_SGIX = 0x00008413,
+ GL_PACK_RESAMPLE_SGIX = 0x0000842E,
+ GL_UNPACK_RESAMPLE_SGIX = 0x0000842F,
+ GL_RESAMPLE_DECIMATE_SGIX = 0x00008430,
+ GL_RESAMPLE_REPLICATE_SGIX = 0x00008433,
+ GL_RESAMPLE_ZERO_FILL_SGIX = 0x00008434,
+ GL_TANGENT_ARRAY_EXT = 0x00008439,
+ GL_BINORMAL_ARRAY_EXT = 0x0000843A,
+ GL_CURRENT_TANGENT_EXT = 0x0000843B,
+ GL_CURRENT_BINORMAL_EXT = 0x0000843C,
+ GL_TANGENT_ARRAY_TYPE_EXT = 0x0000843E,
+ GL_TANGENT_ARRAY_STRIDE_EXT = 0x0000843F,
+ GL_BINORMAL_ARRAY_TYPE_EXT = 0x00008440,
+ GL_BINORMAL_ARRAY_STRIDE_EXT = 0x00008441,
+ GL_TANGENT_ARRAY_POINTER_EXT = 0x00008442,
+ GL_BINORMAL_ARRAY_POINTER_EXT = 0x00008443,
+ GL_MAP1_TANGENT_EXT = 0x00008444,
+ GL_MAP2_TANGENT_EXT = 0x00008445,
+ GL_MAP1_BINORMAL_EXT = 0x00008446,
+ GL_MAP2_BINORMAL_EXT = 0x00008447,
+ GL_NEAREST_CLIPMAP_NEAREST_SGIX = 0x0000844D,
+ GL_NEAREST_CLIPMAP_LINEAR_SGIX = 0x0000844E,
+ GL_LINEAR_CLIPMAP_NEAREST_SGIX = 0x0000844F,
+ GL_FOG_COORDINATE_SOURCE = 0x00008450,
+ GL_FOG_COORDINATE_SOURCE_EXT = 0x00008450,
+ GL_FOG_COORD_SRC = 0x00008450,
+ GL_FOG_COORDINATE = 0x00008451,
+ GL_FOG_COORD = 0x00008451,
+ GL_FOG_COORDINATE_EXT = 0x00008451,
+ GL_FRAGMENT_DEPTH = 0x00008452,
+ GL_FRAGMENT_DEPTH_EXT = 0x00008452,
+ GL_CURRENT_FOG_COORDINATE = 0x00008453,
+ GL_CURRENT_FOG_COORD = 0x00008453,
+ GL_CURRENT_FOG_COORDINATE_EXT = 0x00008453,
+ GL_FOG_COORDINATE_ARRAY_TYPE = 0x00008454,
+ GL_FOG_COORDINATE_ARRAY_TYPE_EXT = 0x00008454,
+ GL_FOG_COORD_ARRAY_TYPE = 0x00008454,
+ GL_FOG_COORDINATE_ARRAY_STRIDE = 0x00008455,
+ GL_FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x00008455,
+ GL_FOG_COORD_ARRAY_STRIDE = 0x00008455,
+ GL_FOG_COORDINATE_ARRAY_POINTER = 0x00008456,
+ GL_FOG_COORDINATE_ARRAY_POINTER_EXT = 0x00008456,
+ GL_FOG_COORD_ARRAY_POINTER = 0x00008456,
+ GL_FOG_COORDINATE_ARRAY = 0x00008457,
+ GL_FOG_COORDINATE_ARRAY_EXT = 0x00008457,
+ GL_FOG_COORD_ARRAY = 0x00008457,
+ GL_COLOR_SUM = 0x00008458,
+ GL_COLOR_SUM_ARB = 0x00008458,
+ GL_COLOR_SUM_EXT = 0x00008458,
+ GL_CURRENT_SECONDARY_COLOR = 0x00008459,
+ GL_CURRENT_SECONDARY_COLOR_EXT = 0x00008459,
+ GL_SECONDARY_COLOR_ARRAY_SIZE = 0x0000845A,
+ GL_SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x0000845A,
+ GL_SECONDARY_COLOR_ARRAY_TYPE = 0x0000845B,
+ GL_SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x0000845B,
+ GL_SECONDARY_COLOR_ARRAY_STRIDE = 0x0000845C,
+ GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x0000845C,
+ GL_SECONDARY_COLOR_ARRAY_POINTER = 0x0000845D,
+ GL_SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x0000845D,
+ GL_SECONDARY_COLOR_ARRAY = 0x0000845E,
+ GL_SECONDARY_COLOR_ARRAY_EXT = 0x0000845E,
+ GL_CURRENT_RASTER_SECONDARY_COLOR = 0x0000845F,
+ GL_ALIASED_POINT_SIZE_RANGE = 0x0000846D,
+ GL_ALIASED_LINE_WIDTH_RANGE = 0x0000846E,
+ GL_SCREEN_COORDINATES_REND = 0x00008490,
+ GL_INVERTED_SCREEN_W_REND = 0x00008491,
+ GL_TEXTURE0 = 0x000084C0,
+ GL_TEXTURE0_ARB = 0x000084C0,
+ GL_TEXTURE1 = 0x000084C1,
+ GL_TEXTURE1_ARB = 0x000084C1,
+ GL_TEXTURE2 = 0x000084C2,
+ GL_TEXTURE2_ARB = 0x000084C2,
+ GL_TEXTURE3 = 0x000084C3,
+ GL_TEXTURE3_ARB = 0x000084C3,
+ GL_TEXTURE4 = 0x000084C4,
+ GL_TEXTURE4_ARB = 0x000084C4,
+ GL_TEXTURE5 = 0x000084C5,
+ GL_TEXTURE5_ARB = 0x000084C5,
+ GL_TEXTURE6 = 0x000084C6,
+ GL_TEXTURE6_ARB = 0x000084C6,
+ GL_TEXTURE7 = 0x000084C7,
+ GL_TEXTURE7_ARB = 0x000084C7,
+ GL_TEXTURE8 = 0x000084C8,
+ GL_TEXTURE8_ARB = 0x000084C8,
+ GL_TEXTURE9 = 0x000084C9,
+ GL_TEXTURE9_ARB = 0x000084C9,
+ GL_TEXTURE10 = 0x000084CA,
+ GL_TEXTURE10_ARB = 0x000084CA,
+ GL_TEXTURE11 = 0x000084CB,
+ GL_TEXTURE11_ARB = 0x000084CB,
+ GL_TEXTURE12 = 0x000084CC,
+ GL_TEXTURE12_ARB = 0x000084CC,
+ GL_TEXTURE13 = 0x000084CD,
+ GL_TEXTURE13_ARB = 0x000084CD,
+ GL_TEXTURE14 = 0x000084CE,
+ GL_TEXTURE14_ARB = 0x000084CE,
+ GL_TEXTURE15 = 0x000084CF,
+ GL_TEXTURE15_ARB = 0x000084CF,
+ GL_TEXTURE16 = 0x000084D0,
+ GL_TEXTURE16_ARB = 0x000084D0,
+ GL_TEXTURE17 = 0x000084D1,
+ GL_TEXTURE17_ARB = 0x000084D1,
+ GL_TEXTURE18 = 0x000084D2,
+ GL_TEXTURE18_ARB = 0x000084D2,
+ GL_TEXTURE19 = 0x000084D3,
+ GL_TEXTURE19_ARB = 0x000084D3,
+ GL_TEXTURE20 = 0x000084D4,
+ GL_TEXTURE20_ARB = 0x000084D4,
+ GL_TEXTURE21 = 0x000084D5,
+ GL_TEXTURE21_ARB = 0x000084D5,
+ GL_TEXTURE22 = 0x000084D6,
+ GL_TEXTURE22_ARB = 0x000084D6,
+ GL_TEXTURE23 = 0x000084D7,
+ GL_TEXTURE23_ARB = 0x000084D7,
+ GL_TEXTURE24 = 0x000084D8,
+ GL_TEXTURE24_ARB = 0x000084D8,
+ GL_TEXTURE25 = 0x000084D9,
+ GL_TEXTURE25_ARB = 0x000084D9,
+ GL_TEXTURE26 = 0x000084DA,
+ GL_TEXTURE26_ARB = 0x000084DA,
+ GL_TEXTURE27 = 0x000084DB,
+ GL_TEXTURE27_ARB = 0x000084DB,
+ GL_TEXTURE28 = 0x000084DC,
+ GL_TEXTURE28_ARB = 0x000084DC,
+ GL_TEXTURE29 = 0x000084DD,
+ GL_TEXTURE29_ARB = 0x000084DD,
+ GL_TEXTURE30 = 0x000084DE,
+ GL_TEXTURE30_ARB = 0x000084DE,
+ GL_TEXTURE31 = 0x000084DF,
+ GL_TEXTURE31_ARB = 0x000084DF,
+ GL_ACTIVE_TEXTURE = 0x000084E0,
+ GL_ACTIVE_TEXTURE_ARB = 0x000084E0,
+ GL_CLIENT_ACTIVE_TEXTURE = 0x000084E1,
+ GL_CLIENT_ACTIVE_TEXTURE_ARB = 0x000084E1,
+ GL_MAX_TEXTURE_UNITS = 0x000084E2,
+ GL_MAX_TEXTURE_UNITS_ARB = 0x000084E2,
+ GL_TRANSPOSE_MODELVIEW_MATRIX = 0x000084E3,
+ GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x000084E3,
+ GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV = 0x000084E3,
+ GL_TRANSPOSE_PROJECTION_MATRIX = 0x000084E4,
+ GL_TRANSPOSE_PROJECTION_MATRIX_ARB = 0x000084E4,
+ GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV = 0x000084E4,
+ GL_TRANSPOSE_TEXTURE_MATRIX = 0x000084E5,
+ GL_TRANSPOSE_TEXTURE_MATRIX_ARB = 0x000084E5,
+ GL_TRANSPOSE_COLOR_MATRIX = 0x000084E6,
+ GL_TRANSPOSE_COLOR_MATRIX_ARB = 0x000084E6,
+ GL_SUBTRACT = 0x000084E7,
+ GL_SUBTRACT_ARB = 0x000084E7,
+ GL_MAX_RENDERBUFFER_SIZE = 0x000084E8,
+ GL_MAX_RENDERBUFFER_SIZE_EXT = 0x000084E8,
+ GL_MAX_RENDERBUFFER_SIZE_OES = 0x000084E8,
+ GL_COMPRESSED_ALPHA = 0x000084E9,
+ GL_COMPRESSED_ALPHA_ARB = 0x000084E9,
+ GL_COMPRESSED_LUMINANCE = 0x000084EA,
+ GL_COMPRESSED_LUMINANCE_ARB = 0x000084EA,
+ GL_COMPRESSED_LUMINANCE_ALPHA = 0x000084EB,
+ GL_COMPRESSED_LUMINANCE_ALPHA_ARB = 0x000084EB,
+ GL_COMPRESSED_INTENSITY = 0x000084EC,
+ GL_COMPRESSED_INTENSITY_ARB = 0x000084EC,
+ GL_COMPRESSED_RGB = 0x000084ED,
+ GL_COMPRESSED_RGB_ARB = 0x000084ED,
+ GL_COMPRESSED_RGBA = 0x000084EE,
+ GL_COMPRESSED_RGBA_ARB = 0x000084EE,
+ GL_TEXTURE_COMPRESSION_HINT = 0x000084EF,
+ GL_TEXTURE_COMPRESSION_HINT_ARB = 0x000084EF,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x000084F0,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x000084F1,
+ GL_ALL_COMPLETED_NV = 0x000084F2,
+ GL_FENCE_STATUS_NV = 0x000084F3,
+ GL_FENCE_CONDITION_NV = 0x000084F4,
+ GL_TEXTURE_RECTANGLE = 0x000084F5,
+ GL_TEXTURE_RECTANGLE_ARB = 0x000084F5,
+ GL_TEXTURE_RECTANGLE_NV = 0x000084F5,
+ GL_TEXTURE_BINDING_RECTANGLE = 0x000084F6,
+ GL_TEXTURE_BINDING_RECTANGLE_ARB = 0x000084F6,
+ GL_TEXTURE_BINDING_RECTANGLE_NV = 0x000084F6,
+ GL_PROXY_TEXTURE_RECTANGLE = 0x000084F7,
+ GL_PROXY_TEXTURE_RECTANGLE_ARB = 0x000084F7,
+ GL_PROXY_TEXTURE_RECTANGLE_NV = 0x000084F7,
+ GL_MAX_RECTANGLE_TEXTURE_SIZE = 0x000084F8,
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x000084F8,
+ GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x000084F8,
+ GL_DEPTH_STENCIL = 0x000084F9,
+ GL_DEPTH_STENCIL_EXT = 0x000084F9,
+ GL_DEPTH_STENCIL_NV = 0x000084F9,
+ GL_DEPTH_STENCIL_OES = 0x000084F9,
+ GL_UNSIGNED_INT_24_8 = 0x000084FA,
+ GL_UNSIGNED_INT_24_8_EXT = 0x000084FA,
+ GL_UNSIGNED_INT_24_8_NV = 0x000084FA,
+ GL_UNSIGNED_INT_24_8_OES = 0x000084FA,
+ GL_MAX_TEXTURE_LOD_BIAS = 0x000084FD,
+ GL_MAX_TEXTURE_LOD_BIAS_EXT = 0x000084FD,
+ GL_TEXTURE_MAX_ANISOTROPY_EXT = 0x000084FE,
+ GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x000084FF,
+ GL_TEXTURE_FILTER_CONTROL = 0x00008500,
+ GL_TEXTURE_FILTER_CONTROL_EXT = 0x00008500,
+ GL_TEXTURE_LOD_BIAS = 0x00008501,
+ GL_TEXTURE_LOD_BIAS_EXT = 0x00008501,
+ GL_MODELVIEW1_STACK_DEPTH_EXT = 0x00008502,
+ GL_COMBINE4_NV = 0x00008503,
+ GL_MAX_SHININESS_NV = 0x00008504,
+ GL_MAX_SPOT_EXPONENT_NV = 0x00008505,
+ GL_MODELVIEW1_MATRIX_EXT = 0x00008506,
+ GL_INCR_WRAP = 0x00008507,
+ GL_INCR_WRAP_EXT = 0x00008507,
+ GL_INCR_WRAP_OES = 0x00008507,
+ GL_DECR_WRAP = 0x00008508,
+ GL_DECR_WRAP_EXT = 0x00008508,
+ GL_DECR_WRAP_OES = 0x00008508,
+ GL_VERTEX_WEIGHTING_EXT = 0x00008509,
+ GL_MODELVIEW1_ARB = 0x0000850A,
+ GL_MODELVIEW1_EXT = 0x0000850A,
+ GL_CURRENT_VERTEX_WEIGHT_EXT = 0x0000850B,
+ GL_VERTEX_WEIGHT_ARRAY_EXT = 0x0000850C,
+ GL_VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x0000850D,
+ GL_VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x0000850E,
+ GL_VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x0000850F,
+ GL_VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x00008510,
+ GL_NORMAL_MAP = 0x00008511,
+ GL_NORMAL_MAP_ARB = 0x00008511,
+ GL_NORMAL_MAP_EXT = 0x00008511,
+ GL_NORMAL_MAP_NV = 0x00008511,
+ GL_NORMAL_MAP_OES = 0x00008511,
+ GL_REFLECTION_MAP = 0x00008512,
+ GL_REFLECTION_MAP_ARB = 0x00008512,
+ GL_REFLECTION_MAP_EXT = 0x00008512,
+ GL_REFLECTION_MAP_NV = 0x00008512,
+ GL_REFLECTION_MAP_OES = 0x00008512,
+ GL_TEXTURE_CUBE_MAP = 0x00008513,
+ GL_TEXTURE_CUBE_MAP_ARB = 0x00008513,
+ GL_TEXTURE_CUBE_MAP_EXT = 0x00008513,
+ GL_TEXTURE_CUBE_MAP_OES = 0x00008513,
+ GL_TEXTURE_BINDING_CUBE_MAP = 0x00008514,
+ GL_TEXTURE_BINDING_CUBE_MAP_ARB = 0x00008514,
+ GL_TEXTURE_BINDING_CUBE_MAP_EXT = 0x00008514,
+ GL_TEXTURE_BINDING_CUBE_MAP_OES = 0x00008514,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x00008515,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x00008515,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x00008515,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES = 0x00008515,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x00008516,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x00008516,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x00008516,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 0x00008516,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x00008517,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x00008517,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x00008517,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 0x00008517,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x00008518,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x00008518,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x00008518,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 0x00008518,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x00008519,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x00008519,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x00008519,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 0x00008519,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x0000851A,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x0000851A,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x0000851A,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 0x0000851A,
+ GL_PROXY_TEXTURE_CUBE_MAP = 0x0000851B,
+ GL_PROXY_TEXTURE_CUBE_MAP_ARB = 0x0000851B,
+ GL_PROXY_TEXTURE_CUBE_MAP_EXT = 0x0000851B,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x0000851C,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x0000851C,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x0000851C,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES = 0x0000851C,
+ GL_VERTEX_ARRAY_RANGE_APPLE = 0x0000851D,
+ GL_VERTEX_ARRAY_RANGE_NV = 0x0000851D,
+ GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x0000851E,
+ GL_VERTEX_ARRAY_RANGE_LENGTH_NV = 0x0000851E,
+ GL_VERTEX_ARRAY_RANGE_VALID_NV = 0x0000851F,
+ GL_VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x0000851F,
+ GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x00008520,
+ GL_VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x00008521,
+ GL_VERTEX_ARRAY_RANGE_POINTER_NV = 0x00008521,
+ GL_REGISTER_COMBINERS_NV = 0x00008522,
+ GL_VARIABLE_A_NV = 0x00008523,
+ GL_VARIABLE_B_NV = 0x00008524,
+ GL_VARIABLE_C_NV = 0x00008525,
+ GL_VARIABLE_D_NV = 0x00008526,
+ GL_VARIABLE_E_NV = 0x00008527,
+ GL_VARIABLE_F_NV = 0x00008528,
+ GL_VARIABLE_G_NV = 0x00008529,
+ GL_CONSTANT_COLOR0_NV = 0x0000852A,
+ GL_CONSTANT_COLOR1_NV = 0x0000852B,
+ GL_PRIMARY_COLOR_NV = 0x0000852C,
+ GL_SECONDARY_COLOR_NV = 0x0000852D,
+ GL_SPARE0_NV = 0x0000852E,
+ GL_SPARE1_NV = 0x0000852F,
+ GL_DISCARD_NV = 0x00008530,
+ GL_E_TIMES_F_NV = 0x00008531,
+ GL_SPARE0_PLUS_SECONDARY_COLOR_NV = 0x00008532,
+ GL_VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x00008533,
+ GL_MULTISAMPLE_FILTER_HINT_NV = 0x00008534,
+ GL_PER_STAGE_CONSTANTS_NV = 0x00008535,
+ GL_UNSIGNED_IDENTITY_NV = 0x00008536,
+ GL_UNSIGNED_INVERT_NV = 0x00008537,
+ GL_EXPAND_NORMAL_NV = 0x00008538,
+ GL_EXPAND_NEGATE_NV = 0x00008539,
+ GL_HALF_BIAS_NORMAL_NV = 0x0000853A,
+ GL_HALF_BIAS_NEGATE_NV = 0x0000853B,
+ GL_SIGNED_IDENTITY_NV = 0x0000853C,
+ GL_SIGNED_NEGATE_NV = 0x0000853D,
+ GL_SCALE_BY_TWO_NV = 0x0000853E,
+ GL_SCALE_BY_FOUR_NV = 0x0000853F,
+ GL_SCALE_BY_ONE_HALF_NV = 0x00008540,
+ GL_BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x00008541,
+ GL_COMBINER_INPUT_NV = 0x00008542,
+ GL_COMBINER_MAPPING_NV = 0x00008543,
+ GL_COMBINER_COMPONENT_USAGE_NV = 0x00008544,
+ GL_COMBINER_AB_DOT_PRODUCT_NV = 0x00008545,
+ GL_COMBINER_CD_DOT_PRODUCT_NV = 0x00008546,
+ GL_COMBINER_MUX_SUM_NV = 0x00008547,
+ GL_COMBINER_SCALE_NV = 0x00008548,
+ GL_COMBINER_BIAS_NV = 0x00008549,
+ GL_COMBINER_AB_OUTPUT_NV = 0x0000854A,
+ GL_COMBINER_CD_OUTPUT_NV = 0x0000854B,
+ GL_COMBINER_SUM_OUTPUT_NV = 0x0000854C,
+ GL_MAX_GENERAL_COMBINERS_NV = 0x0000854D,
+ GL_NUM_GENERAL_COMBINERS_NV = 0x0000854E,
+ GL_COLOR_SUM_CLAMP_NV = 0x0000854F,
+ GL_COMBINER0_NV = 0x00008550,
+ GL_COMBINER1_NV = 0x00008551,
+ GL_COMBINER2_NV = 0x00008552,
+ GL_COMBINER3_NV = 0x00008553,
+ GL_COMBINER4_NV = 0x00008554,
+ GL_COMBINER5_NV = 0x00008555,
+ GL_COMBINER6_NV = 0x00008556,
+ GL_COMBINER7_NV = 0x00008557,
+ GL_PRIMITIVE_RESTART_NV = 0x00008558,
+ GL_PRIMITIVE_RESTART_INDEX_NV = 0x00008559,
+ GL_FOG_DISTANCE_MODE_NV = 0x0000855A,
+ GL_EYE_RADIAL_NV = 0x0000855B,
+ GL_EYE_PLANE_ABSOLUTE_NV = 0x0000855C,
+ GL_EMBOSS_LIGHT_NV = 0x0000855D,
+ GL_EMBOSS_CONSTANT_NV = 0x0000855E,
+ GL_EMBOSS_MAP_NV = 0x0000855F,
+ GL_RED_MIN_CLAMP_INGR = 0x00008560,
+ GL_GREEN_MIN_CLAMP_INGR = 0x00008561,
+ GL_BLUE_MIN_CLAMP_INGR = 0x00008562,
+ GL_ALPHA_MIN_CLAMP_INGR = 0x00008563,
+ GL_RED_MAX_CLAMP_INGR = 0x00008564,
+ GL_GREEN_MAX_CLAMP_INGR = 0x00008565,
+ GL_BLUE_MAX_CLAMP_INGR = 0x00008566,
+ GL_ALPHA_MAX_CLAMP_INGR = 0x00008567,
+ GL_INTERLACE_READ_INGR = 0x00008568,
+ GL_COMBINE = 0x00008570,
+ GL_COMBINE_ARB = 0x00008570,
+ GL_COMBINE_EXT = 0x00008570,
+ GL_COMBINE_RGB = 0x00008571,
+ GL_COMBINE_RGB_ARB = 0x00008571,
+ GL_COMBINE_RGB_EXT = 0x00008571,
+ GL_COMBINE_ALPHA = 0x00008572,
+ GL_COMBINE_ALPHA_ARB = 0x00008572,
+ GL_COMBINE_ALPHA_EXT = 0x00008572,
+ GL_RGB_SCALE = 0x00008573,
+ GL_RGB_SCALE_ARB = 0x00008573,
+ GL_RGB_SCALE_EXT = 0x00008573,
+ GL_ADD_SIGNED = 0x00008574,
+ GL_ADD_SIGNED_ARB = 0x00008574,
+ GL_ADD_SIGNED_EXT = 0x00008574,
+ GL_INTERPOLATE = 0x00008575,
+ GL_INTERPOLATE_ARB = 0x00008575,
+ GL_INTERPOLATE_EXT = 0x00008575,
+ GL_CONSTANT = 0x00008576,
+ GL_CONSTANT_ARB = 0x00008576,
+ GL_CONSTANT_EXT = 0x00008576,
+ GL_CONSTANT_NV = 0x00008576,
+ GL_PRIMARY_COLOR = 0x00008577,
+ GL_PRIMARY_COLOR_ARB = 0x00008577,
+ GL_PRIMARY_COLOR_EXT = 0x00008577,
+ GL_PREVIOUS = 0x00008578,
+ GL_PREVIOUS_ARB = 0x00008578,
+ GL_PREVIOUS_EXT = 0x00008578,
+ GL_SOURCE0_RGB = 0x00008580,
+ GL_SOURCE0_RGB_ARB = 0x00008580,
+ GL_SOURCE0_RGB_EXT = 0x00008580,
+ GL_SRC0_RGB = 0x00008580,
+ GL_SOURCE1_RGB = 0x00008581,
+ GL_SOURCE1_RGB_ARB = 0x00008581,
+ GL_SOURCE1_RGB_EXT = 0x00008581,
+ GL_SRC1_RGB = 0x00008581,
+ GL_SOURCE2_RGB = 0x00008582,
+ GL_SOURCE2_RGB_ARB = 0x00008582,
+ GL_SOURCE2_RGB_EXT = 0x00008582,
+ GL_SRC2_RGB = 0x00008582,
+ GL_SOURCE3_RGB_NV = 0x00008583,
+ GL_SOURCE0_ALPHA = 0x00008588,
+ GL_SOURCE0_ALPHA_ARB = 0x00008588,
+ GL_SOURCE0_ALPHA_EXT = 0x00008588,
+ GL_SRC0_ALPHA = 0x00008588,
+ GL_SOURCE1_ALPHA = 0x00008589,
+ GL_SOURCE1_ALPHA_ARB = 0x00008589,
+ GL_SOURCE1_ALPHA_EXT = 0x00008589,
+ GL_SRC1_ALPHA = 0x00008589,
+ GL_SOURCE2_ALPHA = 0x0000858A,
+ GL_SOURCE2_ALPHA_ARB = 0x0000858A,
+ GL_SOURCE2_ALPHA_EXT = 0x0000858A,
+ GL_SRC2_ALPHA = 0x0000858A,
+ GL_SOURCE3_ALPHA_NV = 0x0000858B,
+ GL_OPERAND0_RGB = 0x00008590,
+ GL_OPERAND0_RGB_ARB = 0x00008590,
+ GL_OPERAND0_RGB_EXT = 0x00008590,
+ GL_OPERAND1_RGB = 0x00008591,
+ GL_OPERAND1_RGB_ARB = 0x00008591,
+ GL_OPERAND1_RGB_EXT = 0x00008591,
+ GL_OPERAND2_RGB = 0x00008592,
+ GL_OPERAND2_RGB_ARB = 0x00008592,
+ GL_OPERAND2_RGB_EXT = 0x00008592,
+ GL_OPERAND3_RGB_NV = 0x00008593,
+ GL_OPERAND0_ALPHA = 0x00008598,
+ GL_OPERAND0_ALPHA_ARB = 0x00008598,
+ GL_OPERAND0_ALPHA_EXT = 0x00008598,
+ GL_OPERAND1_ALPHA = 0x00008599,
+ GL_OPERAND1_ALPHA_ARB = 0x00008599,
+ GL_OPERAND1_ALPHA_EXT = 0x00008599,
+ GL_OPERAND2_ALPHA = 0x0000859A,
+ GL_OPERAND2_ALPHA_ARB = 0x0000859A,
+ GL_OPERAND2_ALPHA_EXT = 0x0000859A,
+ GL_OPERAND3_ALPHA_NV = 0x0000859B,
+ GL_PACK_SUBSAMPLE_RATE_SGIX = 0x000085A0,
+ GL_UNPACK_SUBSAMPLE_RATE_SGIX = 0x000085A1,
+ GL_PIXEL_SUBSAMPLE_4444_SGIX = 0x000085A2,
+ GL_PIXEL_SUBSAMPLE_2424_SGIX = 0x000085A3,
+ GL_PIXEL_SUBSAMPLE_4242_SGIX = 0x000085A4,
+ GL_PERTURB_EXT = 0x000085AE,
+ GL_TEXTURE_NORMAL_EXT = 0x000085AF,
+ GL_LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x000085B0,
+ GL_TRANSFORM_HINT_APPLE = 0x000085B1,
+ GL_UNPACK_CLIENT_STORAGE_APPLE = 0x000085B2,
+ GL_BUFFER_OBJECT_APPLE = 0x000085B3,
+ GL_STORAGE_CLIENT_APPLE = 0x000085B4,
+ GL_VERTEX_ARRAY_BINDING = 0x000085B5,
+ GL_VERTEX_ARRAY_BINDING_APPLE = 0x000085B5,
+ GL_VERTEX_ARRAY_BINDING_OES = 0x000085B5,
+ GL_TEXTURE_RANGE_LENGTH_APPLE = 0x000085B7,
+ GL_TEXTURE_RANGE_POINTER_APPLE = 0x000085B8,
+ GL_YCBCR_422_APPLE = 0x000085B9,
+ GL_UNSIGNED_SHORT_8_8_APPLE = 0x000085BA,
+ GL_UNSIGNED_SHORT_8_8_MESA = 0x000085BA,
+ GL_UNSIGNED_SHORT_8_8_REV_APPLE = 0x000085BB,
+ GL_UNSIGNED_SHORT_8_8_REV_MESA = 0x000085BB,
+ GL_TEXTURE_STORAGE_HINT_APPLE = 0x000085BC,
+ GL_STORAGE_PRIVATE_APPLE = 0x000085BD,
+ GL_STORAGE_CACHED_APPLE = 0x000085BE,
+ GL_STORAGE_SHARED_APPLE = 0x000085BF,
+ GL_REPLACEMENT_CODE_ARRAY_SUN = 0x000085C0,
+ GL_REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x000085C1,
+ GL_REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x000085C2,
+ GL_REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x000085C3,
+ GL_R1UI_V3F_SUN = 0x000085C4,
+ GL_R1UI_C4UB_V3F_SUN = 0x000085C5,
+ GL_R1UI_C3F_V3F_SUN = 0x000085C6,
+ GL_R1UI_N3F_V3F_SUN = 0x000085C7,
+ GL_R1UI_C4F_N3F_V3F_SUN = 0x000085C8,
+ GL_R1UI_T2F_V3F_SUN = 0x000085C9,
+ GL_R1UI_T2F_N3F_V3F_SUN = 0x000085CA,
+ GL_R1UI_T2F_C4F_N3F_V3F_SUN = 0x000085CB,
+ GL_SLICE_ACCUM_SUN = 0x000085CC,
+ GL_QUAD_MESH_SUN = 0x00008614,
+ GL_TRIANGLE_MESH_SUN = 0x00008615,
+ GL_VERTEX_PROGRAM_ARB = 0x00008620,
+ GL_VERTEX_PROGRAM_NV = 0x00008620,
+ GL_VERTEX_STATE_PROGRAM_NV = 0x00008621,
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x00008622,
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x00008622,
+ GL_ATTRIB_ARRAY_SIZE_NV = 0x00008623,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x00008623,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x00008623,
+ GL_ATTRIB_ARRAY_STRIDE_NV = 0x00008624,
+ GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x00008624,
+ GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x00008624,
+ GL_ATTRIB_ARRAY_TYPE_NV = 0x00008625,
+ GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x00008625,
+ GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x00008625,
+ GL_CURRENT_ATTRIB_NV = 0x00008626,
+ GL_CURRENT_VERTEX_ATTRIB = 0x00008626,
+ GL_CURRENT_VERTEX_ATTRIB_ARB = 0x00008626,
+ GL_PROGRAM_LENGTH_ARB = 0x00008627,
+ GL_PROGRAM_LENGTH_NV = 0x00008627,
+ GL_PROGRAM_STRING_ARB = 0x00008628,
+ GL_PROGRAM_STRING_NV = 0x00008628,
+ GL_MODELVIEW_PROJECTION_NV = 0x00008629,
+ GL_IDENTITY_NV = 0x0000862A,
+ GL_INVERSE_NV = 0x0000862B,
+ GL_TRANSPOSE_NV = 0x0000862C,
+ GL_INVERSE_TRANSPOSE_NV = 0x0000862D,
+ GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x0000862E,
+ GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x0000862E,
+ GL_MAX_PROGRAM_MATRICES_ARB = 0x0000862F,
+ GL_MAX_TRACK_MATRICES_NV = 0x0000862F,
+ GL_MATRIX0_NV = 0x00008630,
+ GL_MATRIX1_NV = 0x00008631,
+ GL_MATRIX2_NV = 0x00008632,
+ GL_MATRIX3_NV = 0x00008633,
+ GL_MATRIX4_NV = 0x00008634,
+ GL_MATRIX5_NV = 0x00008635,
+ GL_MATRIX6_NV = 0x00008636,
+ GL_MATRIX7_NV = 0x00008637,
+ GL_CURRENT_MATRIX_STACK_DEPTH_ARB = 0x00008640,
+ GL_CURRENT_MATRIX_STACK_DEPTH_NV = 0x00008640,
+ GL_CURRENT_MATRIX_ARB = 0x00008641,
+ GL_CURRENT_MATRIX_NV = 0x00008641,
+ GL_VERTEX_PROGRAM_POINT_SIZE = 0x00008642,
+ GL_VERTEX_PROGRAM_POINT_SIZE_ARB = 0x00008642,
+ GL_VERTEX_PROGRAM_POINT_SIZE_NV = 0x00008642,
+ GL_PROGRAM_POINT_SIZE = 0x00008642,
+ GL_PROGRAM_POINT_SIZE_ARB = 0x00008642,
+ GL_PROGRAM_POINT_SIZE_EXT = 0x00008642,
+ GL_VERTEX_PROGRAM_TWO_SIDE = 0x00008643,
+ GL_VERTEX_PROGRAM_TWO_SIDE_ARB = 0x00008643,
+ GL_VERTEX_PROGRAM_TWO_SIDE_NV = 0x00008643,
+ GL_PROGRAM_PARAMETER_NV = 0x00008644,
+ GL_ATTRIB_ARRAY_POINTER_NV = 0x00008645,
+ GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x00008645,
+ GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x00008645,
+ GL_PROGRAM_TARGET_NV = 0x00008646,
+ GL_PROGRAM_RESIDENT_NV = 0x00008647,
+ GL_TRACK_MATRIX_NV = 0x00008648,
+ GL_TRACK_MATRIX_TRANSFORM_NV = 0x00008649,
+ GL_VERTEX_PROGRAM_BINDING_NV = 0x0000864A,
+ GL_PROGRAM_ERROR_POSITION_ARB = 0x0000864B,
+ GL_PROGRAM_ERROR_POSITION_NV = 0x0000864B,
+ GL_OFFSET_TEXTURE_RECTANGLE_NV = 0x0000864C,
+ GL_OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x0000864D,
+ GL_DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x0000864E,
+ GL_DEPTH_CLAMP = 0x0000864F,
+ GL_DEPTH_CLAMP_NV = 0x0000864F,
+ GL_VERTEX_ATTRIB_ARRAY0_NV = 0x00008650,
+ GL_VERTEX_ATTRIB_ARRAY1_NV = 0x00008651,
+ GL_VERTEX_ATTRIB_ARRAY2_NV = 0x00008652,
+ GL_VERTEX_ATTRIB_ARRAY3_NV = 0x00008653,
+ GL_VERTEX_ATTRIB_ARRAY4_NV = 0x00008654,
+ GL_VERTEX_ATTRIB_ARRAY5_NV = 0x00008655,
+ GL_VERTEX_ATTRIB_ARRAY6_NV = 0x00008656,
+ GL_VERTEX_ATTRIB_ARRAY7_NV = 0x00008657,
+ GL_VERTEX_ATTRIB_ARRAY8_NV = 0x00008658,
+ GL_VERTEX_ATTRIB_ARRAY9_NV = 0x00008659,
+ GL_VERTEX_ATTRIB_ARRAY10_NV = 0x0000865A,
+ GL_VERTEX_ATTRIB_ARRAY11_NV = 0x0000865B,
+ GL_VERTEX_ATTRIB_ARRAY12_NV = 0x0000865C,
+ GL_VERTEX_ATTRIB_ARRAY13_NV = 0x0000865D,
+ GL_VERTEX_ATTRIB_ARRAY14_NV = 0x0000865E,
+ GL_VERTEX_ATTRIB_ARRAY15_NV = 0x0000865F,
+ GL_MAP1_VERTEX_ATTRIB0_4_NV = 0x00008660,
+ GL_MAP1_VERTEX_ATTRIB1_4_NV = 0x00008661,
+ GL_MAP1_VERTEX_ATTRIB2_4_NV = 0x00008662,
+ GL_MAP1_VERTEX_ATTRIB3_4_NV = 0x00008663,
+ GL_MAP1_VERTEX_ATTRIB4_4_NV = 0x00008664,
+ GL_MAP1_VERTEX_ATTRIB5_4_NV = 0x00008665,
+ GL_MAP1_VERTEX_ATTRIB6_4_NV = 0x00008666,
+ GL_MAP1_VERTEX_ATTRIB7_4_NV = 0x00008667,
+ GL_MAP1_VERTEX_ATTRIB8_4_NV = 0x00008668,
+ GL_MAP1_VERTEX_ATTRIB9_4_NV = 0x00008669,
+ GL_MAP1_VERTEX_ATTRIB10_4_NV = 0x0000866A,
+ GL_MAP1_VERTEX_ATTRIB11_4_NV = 0x0000866B,
+ GL_MAP1_VERTEX_ATTRIB12_4_NV = 0x0000866C,
+ GL_MAP1_VERTEX_ATTRIB13_4_NV = 0x0000866D,
+ GL_MAP1_VERTEX_ATTRIB14_4_NV = 0x0000866E,
+ GL_MAP1_VERTEX_ATTRIB15_4_NV = 0x0000866F,
+ GL_MAP2_VERTEX_ATTRIB0_4_NV = 0x00008670,
+ GL_MAP2_VERTEX_ATTRIB1_4_NV = 0x00008671,
+ GL_MAP2_VERTEX_ATTRIB2_4_NV = 0x00008672,
+ GL_MAP2_VERTEX_ATTRIB3_4_NV = 0x00008673,
+ GL_MAP2_VERTEX_ATTRIB4_4_NV = 0x00008674,
+ GL_MAP2_VERTEX_ATTRIB5_4_NV = 0x00008675,
+ GL_MAP2_VERTEX_ATTRIB6_4_NV = 0x00008676,
+ GL_MAP2_VERTEX_ATTRIB7_4_NV = 0x00008677,
+ GL_PROGRAM_BINDING_ARB = 0x00008677,
+ GL_MAP2_VERTEX_ATTRIB8_4_NV = 0x00008678,
+ GL_MAP2_VERTEX_ATTRIB9_4_NV = 0x00008679,
+ GL_MAP2_VERTEX_ATTRIB10_4_NV = 0x0000867A,
+ GL_MAP2_VERTEX_ATTRIB11_4_NV = 0x0000867B,
+ GL_MAP2_VERTEX_ATTRIB12_4_NV = 0x0000867C,
+ GL_MAP2_VERTEX_ATTRIB13_4_NV = 0x0000867D,
+ GL_MAP2_VERTEX_ATTRIB14_4_NV = 0x0000867E,
+ GL_MAP2_VERTEX_ATTRIB15_4_NV = 0x0000867F,
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 0x000086A0,
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x000086A0,
+ GL_TEXTURE_COMPRESSED = 0x000086A1,
+ GL_TEXTURE_COMPRESSED_ARB = 0x000086A1,
+ GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x000086A2,
+ GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x000086A2,
+ GL_COMPRESSED_TEXTURE_FORMATS = 0x000086A3,
+ GL_COMPRESSED_TEXTURE_FORMATS_ARB = 0x000086A3,
+ GL_MAX_VERTEX_UNITS_ARB = 0x000086A4,
+ GL_MAX_VERTEX_UNITS_OES = 0x000086A4,
+ GL_ACTIVE_VERTEX_UNITS_ARB = 0x000086A5,
+ GL_WEIGHT_SUM_UNITY_ARB = 0x000086A6,
+ GL_VERTEX_BLEND_ARB = 0x000086A7,
+ GL_CURRENT_WEIGHT_ARB = 0x000086A8,
+ GL_WEIGHT_ARRAY_TYPE_ARB = 0x000086A9,
+ GL_WEIGHT_ARRAY_TYPE_OES = 0x000086A9,
+ GL_WEIGHT_ARRAY_STRIDE_ARB = 0x000086AA,
+ GL_WEIGHT_ARRAY_STRIDE_OES = 0x000086AA,
+ GL_WEIGHT_ARRAY_SIZE_ARB = 0x000086AB,
+ GL_WEIGHT_ARRAY_SIZE_OES = 0x000086AB,
+ GL_WEIGHT_ARRAY_POINTER_ARB = 0x000086AC,
+ GL_WEIGHT_ARRAY_POINTER_OES = 0x000086AC,
+ GL_WEIGHT_ARRAY_ARB = 0x000086AD,
+ GL_WEIGHT_ARRAY_OES = 0x000086AD,
+ GL_DOT3_RGB = 0x000086AE,
+ GL_DOT3_RGB_ARB = 0x000086AE,
+ GL_DOT3_RGBA = 0x000086AF,
+ GL_DOT3_RGBA_ARB = 0x000086AF,
+ GL_DOT3_RGBA_IMG = 0x000086AF,
+ GL_COMPRESSED_RGB_FXT1_3DFX = 0x000086B0,
+ GL_COMPRESSED_RGBA_FXT1_3DFX = 0x000086B1,
+ GL_MULTISAMPLE_3DFX = 0x000086B2,
+ GL_SAMPLE_BUFFERS_3DFX = 0x000086B3,
+ GL_SAMPLES_3DFX = 0x000086B4,
+ GL_EVAL_2D_NV = 0x000086C0,
+ GL_EVAL_TRIANGULAR_2D_NV = 0x000086C1,
+ GL_MAP_TESSELLATION_NV = 0x000086C2,
+ GL_MAP_ATTRIB_U_ORDER_NV = 0x000086C3,
+ GL_MAP_ATTRIB_V_ORDER_NV = 0x000086C4,
+ GL_EVAL_FRACTIONAL_TESSELLATION_NV = 0x000086C5,
+ GL_EVAL_VERTEX_ATTRIB0_NV = 0x000086C6,
+ GL_EVAL_VERTEX_ATTRIB1_NV = 0x000086C7,
+ GL_EVAL_VERTEX_ATTRIB2_NV = 0x000086C8,
+ GL_EVAL_VERTEX_ATTRIB3_NV = 0x000086C9,
+ GL_EVAL_VERTEX_ATTRIB4_NV = 0x000086CA,
+ GL_EVAL_VERTEX_ATTRIB5_NV = 0x000086CB,
+ GL_EVAL_VERTEX_ATTRIB6_NV = 0x000086CC,
+ GL_EVAL_VERTEX_ATTRIB7_NV = 0x000086CD,
+ GL_EVAL_VERTEX_ATTRIB8_NV = 0x000086CE,
+ GL_EVAL_VERTEX_ATTRIB9_NV = 0x000086CF,
+ GL_EVAL_VERTEX_ATTRIB10_NV = 0x000086D0,
+ GL_EVAL_VERTEX_ATTRIB11_NV = 0x000086D1,
+ GL_EVAL_VERTEX_ATTRIB12_NV = 0x000086D2,
+ GL_EVAL_VERTEX_ATTRIB13_NV = 0x000086D3,
+ GL_EVAL_VERTEX_ATTRIB14_NV = 0x000086D4,
+ GL_EVAL_VERTEX_ATTRIB15_NV = 0x000086D5,
+ GL_MAX_MAP_TESSELLATION_NV = 0x000086D6,
+ GL_MAX_RATIONAL_EVAL_ORDER_NV = 0x000086D7,
+ GL_MAX_PROGRAM_PATCH_ATTRIBS_NV = 0x000086D8,
+ GL_RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x000086D9,
+ GL_UNSIGNED_INT_S8_S8_8_8_NV = 0x000086DA,
+ GL_UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x000086DB,
+ GL_DSDT_MAG_INTENSITY_NV = 0x000086DC,
+ GL_SHADER_CONSISTENT_NV = 0x000086DD,
+ GL_TEXTURE_SHADER_NV = 0x000086DE,
+ GL_SHADER_OPERATION_NV = 0x000086DF,
+ GL_CULL_MODES_NV = 0x000086E0,
+ GL_OFFSET_TEXTURE_MATRIX_NV = 0x000086E1,
+ GL_OFFSET_TEXTURE_2D_MATRIX_NV = 0x000086E1,
+ GL_OFFSET_TEXTURE_SCALE_NV = 0x000086E2,
+ GL_OFFSET_TEXTURE_2D_SCALE_NV = 0x000086E2,
+ GL_OFFSET_TEXTURE_BIAS_NV = 0x000086E3,
+ GL_OFFSET_TEXTURE_2D_BIAS_NV = 0x000086E3,
+ GL_PREVIOUS_TEXTURE_INPUT_NV = 0x000086E4,
+ GL_CONST_EYE_NV = 0x000086E5,
+ GL_PASS_THROUGH_NV = 0x000086E6,
+ GL_CULL_FRAGMENT_NV = 0x000086E7,
+ GL_OFFSET_TEXTURE_2D_NV = 0x000086E8,
+ GL_DEPENDENT_AR_TEXTURE_2D_NV = 0x000086E9,
+ GL_DEPENDENT_GB_TEXTURE_2D_NV = 0x000086EA,
+ GL_SURFACE_STATE_NV = 0x000086EB,
+ GL_DOT_PRODUCT_NV = 0x000086EC,
+ GL_DOT_PRODUCT_DEPTH_REPLACE_NV = 0x000086ED,
+ GL_DOT_PRODUCT_TEXTURE_2D_NV = 0x000086EE,
+ GL_DOT_PRODUCT_TEXTURE_3D_NV = 0x000086EF,
+ GL_DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x000086F0,
+ GL_DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x000086F1,
+ GL_DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x000086F2,
+ GL_DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x000086F3,
+ GL_HILO_NV = 0x000086F4,
+ GL_DSDT_NV = 0x000086F5,
+ GL_DSDT_MAG_NV = 0x000086F6,
+ GL_DSDT_MAG_VIB_NV = 0x000086F7,
+ GL_HILO16_NV = 0x000086F8,
+ GL_SIGNED_HILO_NV = 0x000086F9,
+ GL_SIGNED_HILO16_NV = 0x000086FA,
+ GL_SIGNED_RGBA_NV = 0x000086FB,
+ GL_SIGNED_RGBA8_NV = 0x000086FC,
+ GL_SURFACE_REGISTERED_NV = 0x000086FD,
+ GL_SIGNED_RGB_NV = 0x000086FE,
+ GL_SIGNED_RGB8_NV = 0x000086FF,
+ GL_SURFACE_MAPPED_NV = 0x00008700,
+ GL_SIGNED_LUMINANCE_NV = 0x00008701,
+ GL_SIGNED_LUMINANCE8_NV = 0x00008702,
+ GL_SIGNED_LUMINANCE_ALPHA_NV = 0x00008703,
+ GL_SIGNED_LUMINANCE8_ALPHA8_NV = 0x00008704,
+ GL_SIGNED_ALPHA_NV = 0x00008705,
+ GL_SIGNED_ALPHA8_NV = 0x00008706,
+ GL_SIGNED_INTENSITY_NV = 0x00008707,
+ GL_SIGNED_INTENSITY8_NV = 0x00008708,
+ GL_DSDT8_NV = 0x00008709,
+ GL_DSDT8_MAG8_NV = 0x0000870A,
+ GL_DSDT8_MAG8_INTENSITY8_NV = 0x0000870B,
+ GL_SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x0000870C,
+ GL_SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x0000870D,
+ GL_HI_SCALE_NV = 0x0000870E,
+ GL_LO_SCALE_NV = 0x0000870F,
+ GL_DS_SCALE_NV = 0x00008710,
+ GL_DT_SCALE_NV = 0x00008711,
+ GL_MAGNITUDE_SCALE_NV = 0x00008712,
+ GL_VIBRANCE_SCALE_NV = 0x00008713,
+ GL_HI_BIAS_NV = 0x00008714,
+ GL_LO_BIAS_NV = 0x00008715,
+ GL_DS_BIAS_NV = 0x00008716,
+ GL_DT_BIAS_NV = 0x00008717,
+ GL_MAGNITUDE_BIAS_NV = 0x00008718,
+ GL_VIBRANCE_BIAS_NV = 0x00008719,
+ GL_TEXTURE_BORDER_VALUES_NV = 0x0000871A,
+ GL_TEXTURE_HI_SIZE_NV = 0x0000871B,
+ GL_TEXTURE_LO_SIZE_NV = 0x0000871C,
+ GL_TEXTURE_DS_SIZE_NV = 0x0000871D,
+ GL_TEXTURE_DT_SIZE_NV = 0x0000871E,
+ GL_TEXTURE_MAG_SIZE_NV = 0x0000871F,
+ GL_MODELVIEW2_ARB = 0x00008722,
+ GL_MODELVIEW3_ARB = 0x00008723,
+ GL_MODELVIEW4_ARB = 0x00008724,
+ GL_MODELVIEW5_ARB = 0x00008725,
+ GL_MODELVIEW6_ARB = 0x00008726,
+ GL_MODELVIEW7_ARB = 0x00008727,
+ GL_MODELVIEW8_ARB = 0x00008728,
+ GL_MODELVIEW9_ARB = 0x00008729,
+ GL_MODELVIEW10_ARB = 0x0000872A,
+ GL_MODELVIEW11_ARB = 0x0000872B,
+ GL_MODELVIEW12_ARB = 0x0000872C,
+ GL_MODELVIEW13_ARB = 0x0000872D,
+ GL_MODELVIEW14_ARB = 0x0000872E,
+ GL_MODELVIEW15_ARB = 0x0000872F,
+ GL_MODELVIEW16_ARB = 0x00008730,
+ GL_MODELVIEW17_ARB = 0x00008731,
+ GL_MODELVIEW18_ARB = 0x00008732,
+ GL_MODELVIEW19_ARB = 0x00008733,
+ GL_MODELVIEW20_ARB = 0x00008734,
+ GL_MODELVIEW21_ARB = 0x00008735,
+ GL_MODELVIEW22_ARB = 0x00008736,
+ GL_MODELVIEW23_ARB = 0x00008737,
+ GL_MODELVIEW24_ARB = 0x00008738,
+ GL_MODELVIEW25_ARB = 0x00008739,
+ GL_MODELVIEW26_ARB = 0x0000873A,
+ GL_MODELVIEW27_ARB = 0x0000873B,
+ GL_MODELVIEW28_ARB = 0x0000873C,
+ GL_MODELVIEW29_ARB = 0x0000873D,
+ GL_MODELVIEW30_ARB = 0x0000873E,
+ GL_MODELVIEW31_ARB = 0x0000873F,
+ GL_DOT3_RGB_EXT = 0x00008740,
+ GL_Z400_BINARY_AMD = 0x00008740,
+ GL_DOT3_RGBA_EXT = 0x00008741,
+ GL_PROGRAM_BINARY_LENGTH_OES = 0x00008741,
+ GL_PROGRAM_BINARY_LENGTH = 0x00008741,
+ GL_MIRROR_CLAMP_ATI = 0x00008742,
+ GL_MIRROR_CLAMP_EXT = 0x00008742,
+ GL_MIRROR_CLAMP_TO_EDGE = 0x00008743,
+ GL_MIRROR_CLAMP_TO_EDGE_ATI = 0x00008743,
+ GL_MIRROR_CLAMP_TO_EDGE_EXT = 0x00008743,
+ GL_MODULATE_ADD_ATI = 0x00008744,
+ GL_MODULATE_SIGNED_ADD_ATI = 0x00008745,
+ GL_MODULATE_SUBTRACT_ATI = 0x00008746,
+ GL_SET_AMD = 0x0000874A,
+ GL_REPLACE_VALUE_AMD = 0x0000874B,
+ GL_STENCIL_OP_VALUE_AMD = 0x0000874C,
+ GL_STENCIL_BACK_OP_VALUE_AMD = 0x0000874D,
+ GL_VERTEX_ATTRIB_ARRAY_LONG = 0x0000874E,
+ GL_OCCLUSION_QUERY_EVENT_MASK_AMD = 0x0000874F,
+ GL_DEPTH_STENCIL_MESA = 0x00008750,
+ GL_UNSIGNED_INT_24_8_MESA = 0x00008751,
+ GL_UNSIGNED_INT_8_24_REV_MESA = 0x00008752,
+ GL_UNSIGNED_SHORT_15_1_MESA = 0x00008753,
+ GL_UNSIGNED_SHORT_1_15_REV_MESA = 0x00008754,
+ GL_TRACE_MASK_MESA = 0x00008755,
+ GL_TRACE_NAME_MESA = 0x00008756,
+ GL_YCBCR_MESA = 0x00008757,
+ GL_PACK_INVERT_MESA = 0x00008758,
+ GL_DEBUG_OBJECT_MESA = 0x00008759,
+ GL_TEXTURE_1D_STACK_MESAX = 0x00008759,
+ GL_DEBUG_PRINT_MESA = 0x0000875A,
+ GL_TEXTURE_2D_STACK_MESAX = 0x0000875A,
+ GL_DEBUG_ASSERT_MESA = 0x0000875B,
+ GL_PROXY_TEXTURE_1D_STACK_MESAX = 0x0000875B,
+ GL_PROXY_TEXTURE_2D_STACK_MESAX = 0x0000875C,
+ GL_TEXTURE_1D_STACK_BINDING_MESAX = 0x0000875D,
+ GL_TEXTURE_2D_STACK_BINDING_MESAX = 0x0000875E,
+ GL_STATIC_ATI = 0x00008760,
+ GL_DYNAMIC_ATI = 0x00008761,
+ GL_PRESERVE_ATI = 0x00008762,
+ GL_DISCARD_ATI = 0x00008763,
+ GL_BUFFER_SIZE = 0x00008764,
+ GL_BUFFER_SIZE_ARB = 0x00008764,
+ GL_OBJECT_BUFFER_SIZE_ATI = 0x00008764,
+ GL_BUFFER_USAGE = 0x00008765,
+ GL_BUFFER_USAGE_ARB = 0x00008765,
+ GL_OBJECT_BUFFER_USAGE_ATI = 0x00008765,
+ GL_ARRAY_OBJECT_BUFFER_ATI = 0x00008766,
+ GL_ARRAY_OBJECT_OFFSET_ATI = 0x00008767,
+ GL_ELEMENT_ARRAY_ATI = 0x00008768,
+ GL_ELEMENT_ARRAY_TYPE_ATI = 0x00008769,
+ GL_ELEMENT_ARRAY_POINTER_ATI = 0x0000876A,
+ GL_MAX_VERTEX_STREAMS_ATI = 0x0000876B,
+ GL_VERTEX_STREAM0_ATI = 0x0000876C,
+ GL_VERTEX_STREAM1_ATI = 0x0000876D,
+ GL_VERTEX_STREAM2_ATI = 0x0000876E,
+ GL_VERTEX_STREAM3_ATI = 0x0000876F,
+ GL_VERTEX_STREAM4_ATI = 0x00008770,
+ GL_VERTEX_STREAM5_ATI = 0x00008771,
+ GL_VERTEX_STREAM6_ATI = 0x00008772,
+ GL_VERTEX_STREAM7_ATI = 0x00008773,
+ GL_VERTEX_SOURCE_ATI = 0x00008774,
+ GL_BUMP_ROT_MATRIX_ATI = 0x00008775,
+ GL_BUMP_ROT_MATRIX_SIZE_ATI = 0x00008776,
+ GL_BUMP_NUM_TEX_UNITS_ATI = 0x00008777,
+ GL_BUMP_TEX_UNITS_ATI = 0x00008778,
+ GL_DUDV_ATI = 0x00008779,
+ GL_DU8DV8_ATI = 0x0000877A,
+ GL_BUMP_ENVMAP_ATI = 0x0000877B,
+ GL_BUMP_TARGET_ATI = 0x0000877C,
+ GL_VERTEX_SHADER_EXT = 0x00008780,
+ GL_VERTEX_SHADER_BINDING_EXT = 0x00008781,
+ GL_OP_INDEX_EXT = 0x00008782,
+ GL_OP_NEGATE_EXT = 0x00008783,
+ GL_OP_DOT3_EXT = 0x00008784,
+ GL_OP_DOT4_EXT = 0x00008785,
+ GL_OP_MUL_EXT = 0x00008786,
+ GL_OP_ADD_EXT = 0x00008787,
+ GL_OP_MADD_EXT = 0x00008788,
+ GL_OP_FRAC_EXT = 0x00008789,
+ GL_OP_MAX_EXT = 0x0000878A,
+ GL_OP_MIN_EXT = 0x0000878B,
+ GL_OP_SET_GE_EXT = 0x0000878C,
+ GL_OP_SET_LT_EXT = 0x0000878D,
+ GL_OP_CLAMP_EXT = 0x0000878E,
+ GL_OP_FLOOR_EXT = 0x0000878F,
+ GL_OP_ROUND_EXT = 0x00008790,
+ GL_OP_EXP_BASE_2_EXT = 0x00008791,
+ GL_OP_LOG_BASE_2_EXT = 0x00008792,
+ GL_OP_POWER_EXT = 0x00008793,
+ GL_OP_RECIP_EXT = 0x00008794,
+ GL_OP_RECIP_SQRT_EXT = 0x00008795,
+ GL_OP_SUB_EXT = 0x00008796,
+ GL_OP_CROSS_PRODUCT_EXT = 0x00008797,
+ GL_OP_MULTIPLY_MATRIX_EXT = 0x00008798,
+ GL_OP_MOV_EXT = 0x00008799,
+ GL_OUTPUT_VERTEX_EXT = 0x0000879A,
+ GL_OUTPUT_COLOR0_EXT = 0x0000879B,
+ GL_OUTPUT_COLOR1_EXT = 0x0000879C,
+ GL_OUTPUT_TEXTURE_COORD0_EXT = 0x0000879D,
+ GL_OUTPUT_TEXTURE_COORD1_EXT = 0x0000879E,
+ GL_OUTPUT_TEXTURE_COORD2_EXT = 0x0000879F,
+ GL_OUTPUT_TEXTURE_COORD3_EXT = 0x000087A0,
+ GL_OUTPUT_TEXTURE_COORD4_EXT = 0x000087A1,
+ GL_OUTPUT_TEXTURE_COORD5_EXT = 0x000087A2,
+ GL_OUTPUT_TEXTURE_COORD6_EXT = 0x000087A3,
+ GL_OUTPUT_TEXTURE_COORD7_EXT = 0x000087A4,
+ GL_OUTPUT_TEXTURE_COORD8_EXT = 0x000087A5,
+ GL_OUTPUT_TEXTURE_COORD9_EXT = 0x000087A6,
+ GL_OUTPUT_TEXTURE_COORD10_EXT = 0x000087A7,
+ GL_OUTPUT_TEXTURE_COORD11_EXT = 0x000087A8,
+ GL_OUTPUT_TEXTURE_COORD12_EXT = 0x000087A9,
+ GL_OUTPUT_TEXTURE_COORD13_EXT = 0x000087AA,
+ GL_OUTPUT_TEXTURE_COORD14_EXT = 0x000087AB,
+ GL_OUTPUT_TEXTURE_COORD15_EXT = 0x000087AC,
+ GL_OUTPUT_TEXTURE_COORD16_EXT = 0x000087AD,
+ GL_OUTPUT_TEXTURE_COORD17_EXT = 0x000087AE,
+ GL_OUTPUT_TEXTURE_COORD18_EXT = 0x000087AF,
+ GL_OUTPUT_TEXTURE_COORD19_EXT = 0x000087B0,
+ GL_OUTPUT_TEXTURE_COORD20_EXT = 0x000087B1,
+ GL_OUTPUT_TEXTURE_COORD21_EXT = 0x000087B2,
+ GL_OUTPUT_TEXTURE_COORD22_EXT = 0x000087B3,
+ GL_OUTPUT_TEXTURE_COORD23_EXT = 0x000087B4,
+ GL_OUTPUT_TEXTURE_COORD24_EXT = 0x000087B5,
+ GL_OUTPUT_TEXTURE_COORD25_EXT = 0x000087B6,
+ GL_OUTPUT_TEXTURE_COORD26_EXT = 0x000087B7,
+ GL_OUTPUT_TEXTURE_COORD27_EXT = 0x000087B8,
+ GL_OUTPUT_TEXTURE_COORD28_EXT = 0x000087B9,
+ GL_OUTPUT_TEXTURE_COORD29_EXT = 0x000087BA,
+ GL_OUTPUT_TEXTURE_COORD30_EXT = 0x000087BB,
+ GL_OUTPUT_TEXTURE_COORD31_EXT = 0x000087BC,
+ GL_OUTPUT_FOG_EXT = 0x000087BD,
+ GL_SCALAR_EXT = 0x000087BE,
+ GL_VECTOR_EXT = 0x000087BF,
+ GL_MATRIX_EXT = 0x000087C0,
+ GL_VARIANT_EXT = 0x000087C1,
+ GL_INVARIANT_EXT = 0x000087C2,
+ GL_LOCAL_CONSTANT_EXT = 0x000087C3,
+ GL_LOCAL_EXT = 0x000087C4,
+ GL_MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x000087C5,
+ GL_MAX_VERTEX_SHADER_VARIANTS_EXT = 0x000087C6,
+ GL_MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x000087C7,
+ GL_MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x000087C8,
+ GL_MAX_VERTEX_SHADER_LOCALS_EXT = 0x000087C9,
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x000087CA,
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x000087CB,
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x000087CC,
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x000087CD,
+ GL_MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x000087CE,
+ GL_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x000087CF,
+ GL_VERTEX_SHADER_VARIANTS_EXT = 0x000087D0,
+ GL_VERTEX_SHADER_INVARIANTS_EXT = 0x000087D1,
+ GL_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x000087D2,
+ GL_VERTEX_SHADER_LOCALS_EXT = 0x000087D3,
+ GL_VERTEX_SHADER_OPTIMIZED_EXT = 0x000087D4,
+ GL_X_EXT = 0x000087D5,
+ GL_Y_EXT = 0x000087D6,
+ GL_Z_EXT = 0x000087D7,
+ GL_W_EXT = 0x000087D8,
+ GL_NEGATIVE_X_EXT = 0x000087D9,
+ GL_NEGATIVE_Y_EXT = 0x000087DA,
+ GL_NEGATIVE_Z_EXT = 0x000087DB,
+ GL_NEGATIVE_W_EXT = 0x000087DC,
+ GL_ZERO_EXT = 0x000087DD,
+ GL_ONE_EXT = 0x000087DE,
+ GL_NEGATIVE_ONE_EXT = 0x000087DF,
+ GL_NORMALIZED_RANGE_EXT = 0x000087E0,
+ GL_FULL_RANGE_EXT = 0x000087E1,
+ GL_CURRENT_VERTEX_EXT = 0x000087E2,
+ GL_MVP_MATRIX_EXT = 0x000087E3,
+ GL_VARIANT_VALUE_EXT = 0x000087E4,
+ GL_VARIANT_DATATYPE_EXT = 0x000087E5,
+ GL_VARIANT_ARRAY_STRIDE_EXT = 0x000087E6,
+ GL_VARIANT_ARRAY_TYPE_EXT = 0x000087E7,
+ GL_VARIANT_ARRAY_EXT = 0x000087E8,
+ GL_VARIANT_ARRAY_POINTER_EXT = 0x000087E9,
+ GL_INVARIANT_VALUE_EXT = 0x000087EA,
+ GL_INVARIANT_DATATYPE_EXT = 0x000087EB,
+ GL_LOCAL_CONSTANT_VALUE_EXT = 0x000087EC,
+ GL_LOCAL_CONSTANT_DATATYPE_EXT = 0x000087ED,
+ GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x000087EE,
+ GL_PN_TRIANGLES_ATI = 0x000087F0,
+ GL_MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x000087F1,
+ GL_PN_TRIANGLES_POINT_MODE_ATI = 0x000087F2,
+ GL_PN_TRIANGLES_NORMAL_MODE_ATI = 0x000087F3,
+ GL_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x000087F4,
+ GL_PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x000087F5,
+ GL_PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x000087F6,
+ GL_PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x000087F7,
+ GL_PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x000087F8,
+ GL_3DC_X_AMD = 0x000087F9,
+ GL_3DC_XY_AMD = 0x000087FA,
+ GL_VBO_FREE_MEMORY_ATI = 0x000087FB,
+ GL_TEXTURE_FREE_MEMORY_ATI = 0x000087FC,
+ GL_RENDERBUFFER_FREE_MEMORY_ATI = 0x000087FD,
+ GL_NUM_PROGRAM_BINARY_FORMATS = 0x000087FE,
+ GL_NUM_PROGRAM_BINARY_FORMATS_OES = 0x000087FE,
+ GL_PROGRAM_BINARY_FORMATS = 0x000087FF,
+ GL_PROGRAM_BINARY_FORMATS_OES = 0x000087FF,
+ GL_STENCIL_BACK_FUNC = 0x00008800,
+ GL_STENCIL_BACK_FUNC_ATI = 0x00008800,
+ GL_STENCIL_BACK_FAIL = 0x00008801,
+ GL_STENCIL_BACK_FAIL_ATI = 0x00008801,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x00008802,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x00008802,
+ GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x00008803,
+ GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x00008803,
+ GL_FRAGMENT_PROGRAM_ARB = 0x00008804,
+ GL_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x00008805,
+ GL_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x00008806,
+ GL_PROGRAM_TEX_INDIRECTIONS_ARB = 0x00008807,
+ GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x00008808,
+ GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x00008809,
+ GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x0000880A,
+ GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x0000880B,
+ GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x0000880C,
+ GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x0000880D,
+ GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x0000880E,
+ GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x0000880F,
+ GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x00008810,
+ GL_RGBA32F = 0x00008814,
+ GL_RGBA32F_ARB = 0x00008814,
+ GL_RGBA32F_EXT = 0x00008814,
+ GL_RGBA_FLOAT32_APPLE = 0x00008814,
+ GL_RGBA_FLOAT32_ATI = 0x00008814,
+ GL_RGB32F = 0x00008815,
+ GL_RGB32F_ARB = 0x00008815,
+ GL_RGB32F_EXT = 0x00008815,
+ GL_RGB_FLOAT32_APPLE = 0x00008815,
+ GL_RGB_FLOAT32_ATI = 0x00008815,
+ GL_ALPHA32F_ARB = 0x00008816,
+ GL_ALPHA32F_EXT = 0x00008816,
+ GL_ALPHA_FLOAT32_APPLE = 0x00008816,
+ GL_ALPHA_FLOAT32_ATI = 0x00008816,
+ GL_INTENSITY32F_ARB = 0x00008817,
+ GL_INTENSITY_FLOAT32_APPLE = 0x00008817,
+ GL_INTENSITY_FLOAT32_ATI = 0x00008817,
+ GL_LUMINANCE32F_ARB = 0x00008818,
+ GL_LUMINANCE32F_EXT = 0x00008818,
+ GL_LUMINANCE_FLOAT32_APPLE = 0x00008818,
+ GL_LUMINANCE_FLOAT32_ATI = 0x00008818,
+ GL_LUMINANCE_ALPHA32F_ARB = 0x00008819,
+ GL_LUMINANCE_ALPHA32F_EXT = 0x00008819,
+ GL_LUMINANCE_ALPHA_FLOAT32_APPLE = 0x00008819,
+ GL_LUMINANCE_ALPHA_FLOAT32_ATI = 0x00008819,
+ GL_RGBA16F = 0x0000881A,
+ GL_RGBA16F_ARB = 0x0000881A,
+ GL_RGBA16F_EXT = 0x0000881A,
+ GL_RGBA_FLOAT16_APPLE = 0x0000881A,
+ GL_RGBA_FLOAT16_ATI = 0x0000881A,
+ GL_RGB16F = 0x0000881B,
+ GL_RGB16F_ARB = 0x0000881B,
+ GL_RGB16F_EXT = 0x0000881B,
+ GL_RGB_FLOAT16_APPLE = 0x0000881B,
+ GL_RGB_FLOAT16_ATI = 0x0000881B,
+ GL_ALPHA16F_ARB = 0x0000881C,
+ GL_ALPHA16F_EXT = 0x0000881C,
+ GL_ALPHA_FLOAT16_APPLE = 0x0000881C,
+ GL_ALPHA_FLOAT16_ATI = 0x0000881C,
+ GL_INTENSITY16F_ARB = 0x0000881D,
+ GL_INTENSITY_FLOAT16_APPLE = 0x0000881D,
+ GL_INTENSITY_FLOAT16_ATI = 0x0000881D,
+ GL_LUMINANCE16F_ARB = 0x0000881E,
+ GL_LUMINANCE16F_EXT = 0x0000881E,
+ GL_LUMINANCE_FLOAT16_APPLE = 0x0000881E,
+ GL_LUMINANCE_FLOAT16_ATI = 0x0000881E,
+ GL_LUMINANCE_ALPHA16F_ARB = 0x0000881F,
+ GL_LUMINANCE_ALPHA16F_EXT = 0x0000881F,
+ GL_LUMINANCE_ALPHA_FLOAT16_APPLE = 0x0000881F,
+ GL_LUMINANCE_ALPHA_FLOAT16_ATI = 0x0000881F,
+ GL_RGBA_FLOAT_MODE_ARB = 0x00008820,
+ GL_RGBA_FLOAT_MODE_ATI = 0x00008820,
+ GL_WRITEONLY_RENDERING_QCOM = 0x00008823,
+ GL_MAX_DRAW_BUFFERS = 0x00008824,
+ GL_MAX_DRAW_BUFFERS_ARB = 0x00008824,
+ GL_MAX_DRAW_BUFFERS_ATI = 0x00008824,
+ GL_MAX_DRAW_BUFFERS_EXT = 0x00008824,
+ GL_MAX_DRAW_BUFFERS_NV = 0x00008824,
+ GL_DRAW_BUFFER0 = 0x00008825,
+ GL_DRAW_BUFFER0_ARB = 0x00008825,
+ GL_DRAW_BUFFER0_ATI = 0x00008825,
+ GL_DRAW_BUFFER0_EXT = 0x00008825,
+ GL_DRAW_BUFFER0_NV = 0x00008825,
+ GL_DRAW_BUFFER1 = 0x00008826,
+ GL_DRAW_BUFFER1_ARB = 0x00008826,
+ GL_DRAW_BUFFER1_ATI = 0x00008826,
+ GL_DRAW_BUFFER1_EXT = 0x00008826,
+ GL_DRAW_BUFFER1_NV = 0x00008826,
+ GL_DRAW_BUFFER2 = 0x00008827,
+ GL_DRAW_BUFFER2_ARB = 0x00008827,
+ GL_DRAW_BUFFER2_ATI = 0x00008827,
+ GL_DRAW_BUFFER2_EXT = 0x00008827,
+ GL_DRAW_BUFFER2_NV = 0x00008827,
+ GL_DRAW_BUFFER3 = 0x00008828,
+ GL_DRAW_BUFFER3_ARB = 0x00008828,
+ GL_DRAW_BUFFER3_ATI = 0x00008828,
+ GL_DRAW_BUFFER3_EXT = 0x00008828,
+ GL_DRAW_BUFFER3_NV = 0x00008828,
+ GL_DRAW_BUFFER4 = 0x00008829,
+ GL_DRAW_BUFFER4_ARB = 0x00008829,
+ GL_DRAW_BUFFER4_ATI = 0x00008829,
+ GL_DRAW_BUFFER4_EXT = 0x00008829,
+ GL_DRAW_BUFFER4_NV = 0x00008829,
+ GL_DRAW_BUFFER5 = 0x0000882A,
+ GL_DRAW_BUFFER5_ARB = 0x0000882A,
+ GL_DRAW_BUFFER5_ATI = 0x0000882A,
+ GL_DRAW_BUFFER5_EXT = 0x0000882A,
+ GL_DRAW_BUFFER5_NV = 0x0000882A,
+ GL_DRAW_BUFFER6 = 0x0000882B,
+ GL_DRAW_BUFFER6_ARB = 0x0000882B,
+ GL_DRAW_BUFFER6_ATI = 0x0000882B,
+ GL_DRAW_BUFFER6_EXT = 0x0000882B,
+ GL_DRAW_BUFFER6_NV = 0x0000882B,
+ GL_DRAW_BUFFER7 = 0x0000882C,
+ GL_DRAW_BUFFER7_ARB = 0x0000882C,
+ GL_DRAW_BUFFER7_ATI = 0x0000882C,
+ GL_DRAW_BUFFER7_EXT = 0x0000882C,
+ GL_DRAW_BUFFER7_NV = 0x0000882C,
+ GL_DRAW_BUFFER8 = 0x0000882D,
+ GL_DRAW_BUFFER8_ARB = 0x0000882D,
+ GL_DRAW_BUFFER8_ATI = 0x0000882D,
+ GL_DRAW_BUFFER8_EXT = 0x0000882D,
+ GL_DRAW_BUFFER8_NV = 0x0000882D,
+ GL_DRAW_BUFFER9 = 0x0000882E,
+ GL_DRAW_BUFFER9_ARB = 0x0000882E,
+ GL_DRAW_BUFFER9_ATI = 0x0000882E,
+ GL_DRAW_BUFFER9_EXT = 0x0000882E,
+ GL_DRAW_BUFFER9_NV = 0x0000882E,
+ GL_DRAW_BUFFER10 = 0x0000882F,
+ GL_DRAW_BUFFER10_ARB = 0x0000882F,
+ GL_DRAW_BUFFER10_ATI = 0x0000882F,
+ GL_DRAW_BUFFER10_EXT = 0x0000882F,
+ GL_DRAW_BUFFER10_NV = 0x0000882F,
+ GL_DRAW_BUFFER11 = 0x00008830,
+ GL_DRAW_BUFFER11_ARB = 0x00008830,
+ GL_DRAW_BUFFER11_ATI = 0x00008830,
+ GL_DRAW_BUFFER11_EXT = 0x00008830,
+ GL_DRAW_BUFFER11_NV = 0x00008830,
+ GL_DRAW_BUFFER12 = 0x00008831,
+ GL_DRAW_BUFFER12_ARB = 0x00008831,
+ GL_DRAW_BUFFER12_ATI = 0x00008831,
+ GL_DRAW_BUFFER12_EXT = 0x00008831,
+ GL_DRAW_BUFFER12_NV = 0x00008831,
+ GL_DRAW_BUFFER13 = 0x00008832,
+ GL_DRAW_BUFFER13_ARB = 0x00008832,
+ GL_DRAW_BUFFER13_ATI = 0x00008832,
+ GL_DRAW_BUFFER13_EXT = 0x00008832,
+ GL_DRAW_BUFFER13_NV = 0x00008832,
+ GL_DRAW_BUFFER14 = 0x00008833,
+ GL_DRAW_BUFFER14_ARB = 0x00008833,
+ GL_DRAW_BUFFER14_ATI = 0x00008833,
+ GL_DRAW_BUFFER14_EXT = 0x00008833,
+ GL_DRAW_BUFFER14_NV = 0x00008833,
+ GL_DRAW_BUFFER15 = 0x00008834,
+ GL_DRAW_BUFFER15_ARB = 0x00008834,
+ GL_DRAW_BUFFER15_ATI = 0x00008834,
+ GL_DRAW_BUFFER15_EXT = 0x00008834,
+ GL_DRAW_BUFFER15_NV = 0x00008834,
+ GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x00008835,
+ GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI = 0x00008837,
+ GL_BLEND_EQUATION_ALPHA = 0x0000883D,
+ GL_BLEND_EQUATION_ALPHA_EXT = 0x0000883D,
+ GL_BLEND_EQUATION_ALPHA_OES = 0x0000883D,
+ GL_SUBSAMPLE_DISTANCE_AMD = 0x0000883F,
+ GL_MATRIX_PALETTE_ARB = 0x00008840,
+ GL_MATRIX_PALETTE_OES = 0x00008840,
+ GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x00008841,
+ GL_MAX_PALETTE_MATRICES_ARB = 0x00008842,
+ GL_MAX_PALETTE_MATRICES_OES = 0x00008842,
+ GL_CURRENT_PALETTE_MATRIX_ARB = 0x00008843,
+ GL_CURRENT_PALETTE_MATRIX_OES = 0x00008843,
+ GL_MATRIX_INDEX_ARRAY_ARB = 0x00008844,
+ GL_MATRIX_INDEX_ARRAY_OES = 0x00008844,
+ GL_CURRENT_MATRIX_INDEX_ARB = 0x00008845,
+ GL_MATRIX_INDEX_ARRAY_SIZE_ARB = 0x00008846,
+ GL_MATRIX_INDEX_ARRAY_SIZE_OES = 0x00008846,
+ GL_MATRIX_INDEX_ARRAY_TYPE_ARB = 0x00008847,
+ GL_MATRIX_INDEX_ARRAY_TYPE_OES = 0x00008847,
+ GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x00008848,
+ GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x00008848,
+ GL_MATRIX_INDEX_ARRAY_POINTER_ARB = 0x00008849,
+ GL_MATRIX_INDEX_ARRAY_POINTER_OES = 0x00008849,
+ GL_TEXTURE_DEPTH_SIZE = 0x0000884A,
+ GL_TEXTURE_DEPTH_SIZE_ARB = 0x0000884A,
+ GL_DEPTH_TEXTURE_MODE = 0x0000884B,
+ GL_DEPTH_TEXTURE_MODE_ARB = 0x0000884B,
+ GL_TEXTURE_COMPARE_MODE = 0x0000884C,
+ GL_TEXTURE_COMPARE_MODE_ARB = 0x0000884C,
+ GL_TEXTURE_COMPARE_MODE_EXT = 0x0000884C,
+ GL_TEXTURE_COMPARE_FUNC = 0x0000884D,
+ GL_TEXTURE_COMPARE_FUNC_ARB = 0x0000884D,
+ GL_TEXTURE_COMPARE_FUNC_EXT = 0x0000884D,
+ GL_COMPARE_R_TO_TEXTURE = 0x0000884E,
+ GL_COMPARE_R_TO_TEXTURE_ARB = 0x0000884E,
+ GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x0000884E,
+ GL_COMPARE_REF_TO_TEXTURE = 0x0000884E,
+ GL_COMPARE_REF_TO_TEXTURE_EXT = 0x0000884E,
+ GL_TEXTURE_CUBE_MAP_SEAMLESS = 0x0000884F,
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x00008850,
+ GL_OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x00008851,
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x00008852,
+ GL_OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x00008853,
+ GL_OFFSET_HILO_TEXTURE_2D_NV = 0x00008854,
+ GL_OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x00008855,
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x00008856,
+ GL_OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x00008857,
+ GL_DEPENDENT_HILO_TEXTURE_2D_NV = 0x00008858,
+ GL_DEPENDENT_RGB_TEXTURE_3D_NV = 0x00008859,
+ GL_DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x0000885A,
+ GL_DOT_PRODUCT_PASS_THROUGH_NV = 0x0000885B,
+ GL_DOT_PRODUCT_TEXTURE_1D_NV = 0x0000885C,
+ GL_DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x0000885D,
+ GL_HILO8_NV = 0x0000885E,
+ GL_SIGNED_HILO8_NV = 0x0000885F,
+ GL_FORCE_BLUE_TO_ONE_NV = 0x00008860,
+ GL_POINT_SPRITE = 0x00008861,
+ GL_POINT_SPRITE_ARB = 0x00008861,
+ GL_POINT_SPRITE_NV = 0x00008861,
+ GL_POINT_SPRITE_OES = 0x00008861,
+ GL_COORD_REPLACE = 0x00008862,
+ GL_COORD_REPLACE_ARB = 0x00008862,
+ GL_COORD_REPLACE_NV = 0x00008862,
+ GL_COORD_REPLACE_OES = 0x00008862,
+ GL_POINT_SPRITE_R_MODE_NV = 0x00008863,
+ GL_PIXEL_COUNTER_BITS_NV = 0x00008864,
+ GL_QUERY_COUNTER_BITS = 0x00008864,
+ GL_QUERY_COUNTER_BITS_ARB = 0x00008864,
+ GL_QUERY_COUNTER_BITS_EXT = 0x00008864,
+ GL_CURRENT_OCCLUSION_QUERY_ID_NV = 0x00008865,
+ GL_CURRENT_QUERY = 0x00008865,
+ GL_CURRENT_QUERY_ARB = 0x00008865,
+ GL_CURRENT_QUERY_EXT = 0x00008865,
+ GL_PIXEL_COUNT_NV = 0x00008866,
+ GL_QUERY_RESULT = 0x00008866,
+ GL_QUERY_RESULT_ARB = 0x00008866,
+ GL_QUERY_RESULT_EXT = 0x00008866,
+ GL_PIXEL_COUNT_AVAILABLE_NV = 0x00008867,
+ GL_QUERY_RESULT_AVAILABLE = 0x00008867,
+ GL_QUERY_RESULT_AVAILABLE_ARB = 0x00008867,
+ GL_QUERY_RESULT_AVAILABLE_EXT = 0x00008867,
+ GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x00008868,
+ GL_MAX_VERTEX_ATTRIBS = 0x00008869,
+ GL_MAX_VERTEX_ATTRIBS_ARB = 0x00008869,
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x0000886A,
+ GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x0000886A,
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x0000886C,
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT = 0x0000886C,
+ GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES = 0x0000886C,
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x0000886D,
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT = 0x0000886D,
+ GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES = 0x0000886D,
+ GL_DEPTH_STENCIL_TO_RGBA_NV = 0x0000886E,
+ GL_DEPTH_STENCIL_TO_BGRA_NV = 0x0000886F,
+ GL_FRAGMENT_PROGRAM_NV = 0x00008870,
+ GL_MAX_TEXTURE_COORDS = 0x00008871,
+ GL_MAX_TEXTURE_COORDS_ARB = 0x00008871,
+ GL_MAX_TEXTURE_COORDS_NV = 0x00008871,
+ GL_MAX_TEXTURE_IMAGE_UNITS = 0x00008872,
+ GL_MAX_TEXTURE_IMAGE_UNITS_ARB = 0x00008872,
+ GL_MAX_TEXTURE_IMAGE_UNITS_NV = 0x00008872,
+ GL_FRAGMENT_PROGRAM_BINDING_NV = 0x00008873,
+ GL_PROGRAM_ERROR_STRING_ARB = 0x00008874,
+ GL_PROGRAM_ERROR_STRING_NV = 0x00008874,
+ GL_PROGRAM_FORMAT_ASCII_ARB = 0x00008875,
+ GL_PROGRAM_FORMAT_ARB = 0x00008876,
+ GL_WRITE_PIXEL_DATA_RANGE_NV = 0x00008878,
+ GL_READ_PIXEL_DATA_RANGE_NV = 0x00008879,
+ GL_WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x0000887A,
+ GL_READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x0000887B,
+ GL_WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x0000887C,
+ GL_READ_PIXEL_DATA_RANGE_POINTER_NV = 0x0000887D,
+ GL_GEOMETRY_SHADER_INVOCATIONS = 0x0000887F,
+ GL_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x0000887F,
+ GL_GEOMETRY_SHADER_INVOCATIONS_OES = 0x0000887F,
+ GL_FLOAT_R_NV = 0x00008880,
+ GL_FLOAT_RG_NV = 0x00008881,
+ GL_FLOAT_RGB_NV = 0x00008882,
+ GL_FLOAT_RGBA_NV = 0x00008883,
+ GL_FLOAT_R16_NV = 0x00008884,
+ GL_FLOAT_R32_NV = 0x00008885,
+ GL_FLOAT_RG16_NV = 0x00008886,
+ GL_FLOAT_RG32_NV = 0x00008887,
+ GL_FLOAT_RGB16_NV = 0x00008888,
+ GL_FLOAT_RGB32_NV = 0x00008889,
+ GL_FLOAT_RGBA16_NV = 0x0000888A,
+ GL_FLOAT_RGBA32_NV = 0x0000888B,
+ GL_TEXTURE_FLOAT_COMPONENTS_NV = 0x0000888C,
+ GL_FLOAT_CLEAR_COLOR_VALUE_NV = 0x0000888D,
+ GL_FLOAT_RGBA_MODE_NV = 0x0000888E,
+ GL_TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x0000888F,
+ GL_DEPTH_BOUNDS_TEST_EXT = 0x00008890,
+ GL_DEPTH_BOUNDS_EXT = 0x00008891,
+ GL_ARRAY_BUFFER = 0x00008892,
+ GL_ARRAY_BUFFER_ARB = 0x00008892,
+ GL_ELEMENT_ARRAY_BUFFER = 0x00008893,
+ GL_ELEMENT_ARRAY_BUFFER_ARB = 0x00008893,
+ GL_ARRAY_BUFFER_BINDING = 0x00008894,
+ GL_ARRAY_BUFFER_BINDING_ARB = 0x00008894,
+ GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x00008895,
+ GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x00008895,
+ GL_VERTEX_ARRAY_BUFFER_BINDING = 0x00008896,
+ GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x00008896,
+ GL_NORMAL_ARRAY_BUFFER_BINDING = 0x00008897,
+ GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x00008897,
+ GL_COLOR_ARRAY_BUFFER_BINDING = 0x00008898,
+ GL_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x00008898,
+ GL_INDEX_ARRAY_BUFFER_BINDING = 0x00008899,
+ GL_INDEX_ARRAY_BUFFER_BINDING_ARB = 0x00008899,
+ GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x0000889A,
+ GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x0000889A,
+ GL_EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x0000889B,
+ GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x0000889B,
+ GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x0000889C,
+ GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x0000889C,
+ GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x0000889D,
+ GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x0000889D,
+ GL_FOG_COORD_ARRAY_BUFFER_BINDING = 0x0000889D,
+ GL_WEIGHT_ARRAY_BUFFER_BINDING = 0x0000889E,
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x0000889E,
+ GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x0000889E,
+ GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x0000889F,
+ GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x0000889F,
+ GL_PROGRAM_INSTRUCTIONS_ARB = 0x000088A0,
+ GL_MAX_PROGRAM_INSTRUCTIONS_ARB = 0x000088A1,
+ GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x000088A2,
+ GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x000088A3,
+ GL_PROGRAM_TEMPORARIES_ARB = 0x000088A4,
+ GL_MAX_PROGRAM_TEMPORARIES_ARB = 0x000088A5,
+ GL_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x000088A6,
+ GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x000088A7,
+ GL_PROGRAM_PARAMETERS_ARB = 0x000088A8,
+ GL_MAX_PROGRAM_PARAMETERS_ARB = 0x000088A9,
+ GL_PROGRAM_NATIVE_PARAMETERS_ARB = 0x000088AA,
+ GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x000088AB,
+ GL_PROGRAM_ATTRIBS_ARB = 0x000088AC,
+ GL_MAX_PROGRAM_ATTRIBS_ARB = 0x000088AD,
+ GL_PROGRAM_NATIVE_ATTRIBS_ARB = 0x000088AE,
+ GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x000088AF,
+ GL_PROGRAM_ADDRESS_REGISTERS_ARB = 0x000088B0,
+ GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x000088B1,
+ GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x000088B2,
+ GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x000088B3,
+ GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x000088B4,
+ GL_MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x000088B5,
+ GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x000088B6,
+ GL_TRANSPOSE_CURRENT_MATRIX_ARB = 0x000088B7,
+ GL_READ_ONLY = 0x000088B8,
+ GL_READ_ONLY_ARB = 0x000088B8,
+ GL_WRITE_ONLY = 0x000088B9,
+ GL_WRITE_ONLY_ARB = 0x000088B9,
+ GL_WRITE_ONLY_OES = 0x000088B9,
+ GL_READ_WRITE = 0x000088BA,
+ GL_READ_WRITE_ARB = 0x000088BA,
+ GL_BUFFER_ACCESS = 0x000088BB,
+ GL_BUFFER_ACCESS_ARB = 0x000088BB,
+ GL_BUFFER_ACCESS_OES = 0x000088BB,
+ GL_BUFFER_MAPPED = 0x000088BC,
+ GL_BUFFER_MAPPED_ARB = 0x000088BC,
+ GL_BUFFER_MAPPED_OES = 0x000088BC,
+ GL_BUFFER_MAP_POINTER = 0x000088BD,
+ GL_BUFFER_MAP_POINTER_ARB = 0x000088BD,
+ GL_BUFFER_MAP_POINTER_OES = 0x000088BD,
+ GL_WRITE_DISCARD_NV = 0x000088BE,
+ GL_TIME_ELAPSED = 0x000088BF,
+ GL_TIME_ELAPSED_EXT = 0x000088BF,
+ GL_MATRIX0_ARB = 0x000088C0,
+ GL_MATRIX1_ARB = 0x000088C1,
+ GL_MATRIX2_ARB = 0x000088C2,
+ GL_MATRIX3_ARB = 0x000088C3,
+ GL_MATRIX4_ARB = 0x000088C4,
+ GL_MATRIX5_ARB = 0x000088C5,
+ GL_MATRIX6_ARB = 0x000088C6,
+ GL_MATRIX7_ARB = 0x000088C7,
+ GL_MATRIX8_ARB = 0x000088C8,
+ GL_MATRIX9_ARB = 0x000088C9,
+ GL_MATRIX10_ARB = 0x000088CA,
+ GL_MATRIX11_ARB = 0x000088CB,
+ GL_MATRIX12_ARB = 0x000088CC,
+ GL_MATRIX13_ARB = 0x000088CD,
+ GL_MATRIX14_ARB = 0x000088CE,
+ GL_MATRIX15_ARB = 0x000088CF,
+ GL_MATRIX16_ARB = 0x000088D0,
+ GL_MATRIX17_ARB = 0x000088D1,
+ GL_MATRIX18_ARB = 0x000088D2,
+ GL_MATRIX19_ARB = 0x000088D3,
+ GL_MATRIX20_ARB = 0x000088D4,
+ GL_MATRIX21_ARB = 0x000088D5,
+ GL_MATRIX22_ARB = 0x000088D6,
+ GL_MATRIX23_ARB = 0x000088D7,
+ GL_MATRIX24_ARB = 0x000088D8,
+ GL_MATRIX25_ARB = 0x000088D9,
+ GL_MATRIX26_ARB = 0x000088DA,
+ GL_MATRIX27_ARB = 0x000088DB,
+ GL_MATRIX28_ARB = 0x000088DC,
+ GL_MATRIX29_ARB = 0x000088DD,
+ GL_MATRIX30_ARB = 0x000088DE,
+ GL_MATRIX31_ARB = 0x000088DF,
+ GL_STREAM_DRAW = 0x000088E0,
+ GL_STREAM_DRAW_ARB = 0x000088E0,
+ GL_STREAM_READ = 0x000088E1,
+ GL_STREAM_READ_ARB = 0x000088E1,
+ GL_STREAM_COPY = 0x000088E2,
+ GL_STREAM_COPY_ARB = 0x000088E2,
+ GL_STATIC_DRAW = 0x000088E4,
+ GL_STATIC_DRAW_ARB = 0x000088E4,
+ GL_STATIC_READ = 0x000088E5,
+ GL_STATIC_READ_ARB = 0x000088E5,
+ GL_STATIC_COPY = 0x000088E6,
+ GL_STATIC_COPY_ARB = 0x000088E6,
+ GL_DYNAMIC_DRAW = 0x000088E8,
+ GL_DYNAMIC_DRAW_ARB = 0x000088E8,
+ GL_DYNAMIC_READ = 0x000088E9,
+ GL_DYNAMIC_READ_ARB = 0x000088E9,
+ GL_DYNAMIC_COPY = 0x000088EA,
+ GL_DYNAMIC_COPY_ARB = 0x000088EA,
+ GL_PIXEL_PACK_BUFFER = 0x000088EB,
+ GL_PIXEL_PACK_BUFFER_ARB = 0x000088EB,
+ GL_PIXEL_PACK_BUFFER_EXT = 0x000088EB,
+ GL_PIXEL_UNPACK_BUFFER = 0x000088EC,
+ GL_PIXEL_UNPACK_BUFFER_ARB = 0x000088EC,
+ GL_PIXEL_UNPACK_BUFFER_EXT = 0x000088EC,
+ GL_PIXEL_PACK_BUFFER_BINDING = 0x000088ED,
+ GL_PIXEL_PACK_BUFFER_BINDING_ARB = 0x000088ED,
+ GL_PIXEL_PACK_BUFFER_BINDING_EXT = 0x000088ED,
+ GL_ETC1_SRGB8_NV = 0x000088EE,
+ GL_PIXEL_UNPACK_BUFFER_BINDING = 0x000088EF,
+ GL_PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x000088EF,
+ GL_PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x000088EF,
+ GL_DEPTH24_STENCIL8 = 0x000088F0,
+ GL_DEPTH24_STENCIL8_EXT = 0x000088F0,
+ GL_DEPTH24_STENCIL8_OES = 0x000088F0,
+ GL_TEXTURE_STENCIL_SIZE = 0x000088F1,
+ GL_TEXTURE_STENCIL_SIZE_EXT = 0x000088F1,
+ GL_STENCIL_TAG_BITS_EXT = 0x000088F2,
+ GL_STENCIL_CLEAR_TAG_VALUE_EXT = 0x000088F3,
+ GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x000088F4,
+ GL_MAX_PROGRAM_CALL_DEPTH_NV = 0x000088F5,
+ GL_MAX_PROGRAM_IF_DEPTH_NV = 0x000088F6,
+ GL_MAX_PROGRAM_LOOP_DEPTH_NV = 0x000088F7,
+ GL_MAX_PROGRAM_LOOP_COUNT_NV = 0x000088F8,
+ GL_SRC1_COLOR = 0x000088F9,
+ GL_ONE_MINUS_SRC1_COLOR = 0x000088FA,
+ GL_ONE_MINUS_SRC1_ALPHA = 0x000088FB,
+ GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x000088FC,
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER = 0x000088FD,
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT = 0x000088FD,
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x000088FD,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 0x000088FE,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x000088FE,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x000088FE,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT = 0x000088FE,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV = 0x000088FE,
+ GL_MAX_ARRAY_TEXTURE_LAYERS = 0x000088FF,
+ GL_MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x000088FF,
+ GL_MIN_PROGRAM_TEXEL_OFFSET = 0x00008904,
+ GL_MIN_PROGRAM_TEXEL_OFFSET_EXT = 0x00008904,
+ GL_MIN_PROGRAM_TEXEL_OFFSET_NV = 0x00008904,
+ GL_MAX_PROGRAM_TEXEL_OFFSET = 0x00008905,
+ GL_MAX_PROGRAM_TEXEL_OFFSET_EXT = 0x00008905,
+ GL_MAX_PROGRAM_TEXEL_OFFSET_NV = 0x00008905,
+ GL_PROGRAM_ATTRIB_COMPONENTS_NV = 0x00008906,
+ GL_PROGRAM_RESULT_COMPONENTS_NV = 0x00008907,
+ GL_MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x00008908,
+ GL_MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x00008909,
+ GL_STENCIL_TEST_TWO_SIDE_EXT = 0x00008910,
+ GL_ACTIVE_STENCIL_FACE_EXT = 0x00008911,
+ GL_MIRROR_CLAMP_TO_BORDER_EXT = 0x00008912,
+ GL_SAMPLES_PASSED = 0x00008914,
+ GL_SAMPLES_PASSED_ARB = 0x00008914,
+ GL_GEOMETRY_VERTICES_OUT = 0x00008916,
+ GL_GEOMETRY_LINKED_VERTICES_OUT_EXT = 0x00008916,
+ GL_GEOMETRY_LINKED_VERTICES_OUT_OES = 0x00008916,
+ GL_GEOMETRY_INPUT_TYPE = 0x00008917,
+ GL_GEOMETRY_LINKED_INPUT_TYPE_EXT = 0x00008917,
+ GL_GEOMETRY_LINKED_INPUT_TYPE_OES = 0x00008917,
+ GL_GEOMETRY_OUTPUT_TYPE = 0x00008918,
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT = 0x00008918,
+ GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES = 0x00008918,
+ GL_SAMPLER_BINDING = 0x00008919,
+ GL_CLAMP_VERTEX_COLOR = 0x0000891A,
+ GL_CLAMP_VERTEX_COLOR_ARB = 0x0000891A,
+ GL_CLAMP_FRAGMENT_COLOR = 0x0000891B,
+ GL_CLAMP_FRAGMENT_COLOR_ARB = 0x0000891B,
+ GL_CLAMP_READ_COLOR = 0x0000891C,
+ GL_CLAMP_READ_COLOR_ARB = 0x0000891C,
+ GL_FIXED_ONLY = 0x0000891D,
+ GL_FIXED_ONLY_ARB = 0x0000891D,
+ GL_TESS_CONTROL_PROGRAM_NV = 0x0000891E,
+ GL_TESS_EVALUATION_PROGRAM_NV = 0x0000891F,
+ GL_FRAGMENT_SHADER_ATI = 0x00008920,
+ GL_REG_0_ATI = 0x00008921,
+ GL_REG_1_ATI = 0x00008922,
+ GL_REG_2_ATI = 0x00008923,
+ GL_REG_3_ATI = 0x00008924,
+ GL_REG_4_ATI = 0x00008925,
+ GL_REG_5_ATI = 0x00008926,
+ GL_REG_6_ATI = 0x00008927,
+ GL_REG_7_ATI = 0x00008928,
+ GL_REG_8_ATI = 0x00008929,
+ GL_REG_9_ATI = 0x0000892A,
+ GL_REG_10_ATI = 0x0000892B,
+ GL_REG_11_ATI = 0x0000892C,
+ GL_REG_12_ATI = 0x0000892D,
+ GL_REG_13_ATI = 0x0000892E,
+ GL_REG_14_ATI = 0x0000892F,
+ GL_REG_15_ATI = 0x00008930,
+ GL_REG_16_ATI = 0x00008931,
+ GL_REG_17_ATI = 0x00008932,
+ GL_REG_18_ATI = 0x00008933,
+ GL_REG_19_ATI = 0x00008934,
+ GL_REG_20_ATI = 0x00008935,
+ GL_REG_21_ATI = 0x00008936,
+ GL_REG_22_ATI = 0x00008937,
+ GL_REG_23_ATI = 0x00008938,
+ GL_REG_24_ATI = 0x00008939,
+ GL_REG_25_ATI = 0x0000893A,
+ GL_REG_26_ATI = 0x0000893B,
+ GL_REG_27_ATI = 0x0000893C,
+ GL_REG_28_ATI = 0x0000893D,
+ GL_REG_29_ATI = 0x0000893E,
+ GL_REG_30_ATI = 0x0000893F,
+ GL_REG_31_ATI = 0x00008940,
+ GL_CON_0_ATI = 0x00008941,
+ GL_CON_1_ATI = 0x00008942,
+ GL_CON_2_ATI = 0x00008943,
+ GL_CON_3_ATI = 0x00008944,
+ GL_CON_4_ATI = 0x00008945,
+ GL_CON_5_ATI = 0x00008946,
+ GL_CON_6_ATI = 0x00008947,
+ GL_CON_7_ATI = 0x00008948,
+ GL_CON_8_ATI = 0x00008949,
+ GL_CON_9_ATI = 0x0000894A,
+ GL_CON_10_ATI = 0x0000894B,
+ GL_CON_11_ATI = 0x0000894C,
+ GL_CON_12_ATI = 0x0000894D,
+ GL_CON_13_ATI = 0x0000894E,
+ GL_CON_14_ATI = 0x0000894F,
+ GL_CON_15_ATI = 0x00008950,
+ GL_CON_16_ATI = 0x00008951,
+ GL_CON_17_ATI = 0x00008952,
+ GL_CON_18_ATI = 0x00008953,
+ GL_CON_19_ATI = 0x00008954,
+ GL_CON_20_ATI = 0x00008955,
+ GL_CON_21_ATI = 0x00008956,
+ GL_CON_22_ATI = 0x00008957,
+ GL_CON_23_ATI = 0x00008958,
+ GL_CON_24_ATI = 0x00008959,
+ GL_CON_25_ATI = 0x0000895A,
+ GL_CON_26_ATI = 0x0000895B,
+ GL_CON_27_ATI = 0x0000895C,
+ GL_CON_28_ATI = 0x0000895D,
+ GL_CON_29_ATI = 0x0000895E,
+ GL_CON_30_ATI = 0x0000895F,
+ GL_CON_31_ATI = 0x00008960,
+ GL_MOV_ATI = 0x00008961,
+ GL_ADD_ATI = 0x00008963,
+ GL_MUL_ATI = 0x00008964,
+ GL_SUB_ATI = 0x00008965,
+ GL_DOT3_ATI = 0x00008966,
+ GL_DOT4_ATI = 0x00008967,
+ GL_MAD_ATI = 0x00008968,
+ GL_LERP_ATI = 0x00008969,
+ GL_CND_ATI = 0x0000896A,
+ GL_CND0_ATI = 0x0000896B,
+ GL_DOT2_ADD_ATI = 0x0000896C,
+ GL_SECONDARY_INTERPOLATOR_ATI = 0x0000896D,
+ GL_NUM_FRAGMENT_REGISTERS_ATI = 0x0000896E,
+ GL_NUM_FRAGMENT_CONSTANTS_ATI = 0x0000896F,
+ GL_NUM_PASSES_ATI = 0x00008970,
+ GL_NUM_INSTRUCTIONS_PER_PASS_ATI = 0x00008971,
+ GL_NUM_INSTRUCTIONS_TOTAL_ATI = 0x00008972,
+ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x00008973,
+ GL_NUM_LOOPBACK_COMPONENTS_ATI = 0x00008974,
+ GL_COLOR_ALPHA_PAIRING_ATI = 0x00008975,
+ GL_SWIZZLE_STR_ATI = 0x00008976,
+ GL_SWIZZLE_STQ_ATI = 0x00008977,
+ GL_SWIZZLE_STR_DR_ATI = 0x00008978,
+ GL_SWIZZLE_STQ_DQ_ATI = 0x00008979,
+ GL_SWIZZLE_STRQ_ATI = 0x0000897A,
+ GL_SWIZZLE_STRQ_DQ_ATI = 0x0000897B,
+ GL_INTERLACE_OML = 0x00008980,
+ GL_INTERLACE_READ_OML = 0x00008981,
+ GL_FORMAT_SUBSAMPLE_24_24_OML = 0x00008982,
+ GL_FORMAT_SUBSAMPLE_244_244_OML = 0x00008983,
+ GL_PACK_RESAMPLE_OML = 0x00008984,
+ GL_UNPACK_RESAMPLE_OML = 0x00008985,
+ GL_RESAMPLE_REPLICATE_OML = 0x00008986,
+ GL_RESAMPLE_ZERO_FILL_OML = 0x00008987,
+ GL_RESAMPLE_AVERAGE_OML = 0x00008988,
+ GL_RESAMPLE_DECIMATE_OML = 0x00008989,
+ GL_POINT_SIZE_ARRAY_TYPE_OES = 0x0000898A,
+ GL_POINT_SIZE_ARRAY_STRIDE_OES = 0x0000898B,
+ GL_POINT_SIZE_ARRAY_POINTER_OES = 0x0000898C,
+ GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 0x0000898D,
+ GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x0000898E,
+ GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 0x0000898F,
+ GL_VERTEX_ATTRIB_MAP1_APPLE = 0x00008A00,
+ GL_VERTEX_ATTRIB_MAP2_APPLE = 0x00008A01,
+ GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x00008A02,
+ GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x00008A03,
+ GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x00008A04,
+ GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x00008A05,
+ GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x00008A06,
+ GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x00008A07,
+ GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x00008A08,
+ GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x00008A09,
+ GL_DRAW_PIXELS_APPLE = 0x00008A0A,
+ GL_FENCE_APPLE = 0x00008A0B,
+ GL_ELEMENT_ARRAY_APPLE = 0x00008A0C,
+ GL_ELEMENT_ARRAY_TYPE_APPLE = 0x00008A0D,
+ GL_ELEMENT_ARRAY_POINTER_APPLE = 0x00008A0E,
+ GL_COLOR_FLOAT_APPLE = 0x00008A0F,
+ GL_UNIFORM_BUFFER = 0x00008A11,
+ GL_BUFFER_SERIALIZED_MODIFY_APPLE = 0x00008A12,
+ GL_BUFFER_FLUSHING_UNMAP_APPLE = 0x00008A13,
+ GL_AUX_DEPTH_STENCIL_APPLE = 0x00008A14,
+ GL_PACK_ROW_BYTES_APPLE = 0x00008A15,
+ GL_UNPACK_ROW_BYTES_APPLE = 0x00008A16,
+ GL_RELEASED_APPLE = 0x00008A19,
+ GL_VOLATILE_APPLE = 0x00008A1A,
+ GL_RETAINED_APPLE = 0x00008A1B,
+ GL_UNDEFINED_APPLE = 0x00008A1C,
+ GL_PURGEABLE_APPLE = 0x00008A1D,
+ GL_RGB_422_APPLE = 0x00008A1F,
+ GL_UNIFORM_BUFFER_BINDING = 0x00008A28,
+ GL_UNIFORM_BUFFER_START = 0x00008A29,
+ GL_UNIFORM_BUFFER_SIZE = 0x00008A2A,
+ GL_MAX_VERTEX_UNIFORM_BLOCKS = 0x00008A2B,
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 0x00008A2C,
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT = 0x00008A2C,
+ GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES = 0x00008A2C,
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 0x00008A2D,
+ GL_MAX_COMBINED_UNIFORM_BLOCKS = 0x00008A2E,
+ GL_MAX_UNIFORM_BUFFER_BINDINGS = 0x00008A2F,
+ GL_MAX_UNIFORM_BLOCK_SIZE = 0x00008A30,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x00008A31,
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x00008A32,
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x00008A32,
+ GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES = 0x00008A32,
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x00008A33,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x00008A34,
+ GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x00008A35,
+ GL_ACTIVE_UNIFORM_BLOCKS = 0x00008A36,
+ GL_UNIFORM_TYPE = 0x00008A37,
+ GL_UNIFORM_SIZE = 0x00008A38,
+ GL_UNIFORM_NAME_LENGTH = 0x00008A39,
+ GL_UNIFORM_BLOCK_INDEX = 0x00008A3A,
+ GL_UNIFORM_OFFSET = 0x00008A3B,
+ GL_UNIFORM_ARRAY_STRIDE = 0x00008A3C,
+ GL_UNIFORM_MATRIX_STRIDE = 0x00008A3D,
+ GL_UNIFORM_IS_ROW_MAJOR = 0x00008A3E,
+ GL_UNIFORM_BLOCK_BINDING = 0x00008A3F,
+ GL_UNIFORM_BLOCK_DATA_SIZE = 0x00008A40,
+ GL_UNIFORM_BLOCK_NAME_LENGTH = 0x00008A41,
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x00008A42,
+ GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x00008A43,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x00008A44,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x00008A45,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x00008A46,
+ GL_TEXTURE_SRGB_DECODE_EXT = 0x00008A48,
+ GL_DECODE_EXT = 0x00008A49,
+ GL_SKIP_DECODE_EXT = 0x00008A4A,
+ GL_PROGRAM_PIPELINE_OBJECT_EXT = 0x00008A4F,
+ GL_RGB_RAW_422_APPLE = 0x00008A51,
+ GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x00008A52,
+ GL_SYNC_OBJECT_APPLE = 0x00008A53,
+ GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT = 0x00008A54,
+ GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT = 0x00008A55,
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT = 0x00008A56,
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT = 0x00008A57,
+ GL_FRAGMENT_SHADER = 0x00008B30,
+ GL_FRAGMENT_SHADER_ARB = 0x00008B30,
+ GL_VERTEX_SHADER = 0x00008B31,
+ GL_VERTEX_SHADER_ARB = 0x00008B31,
+ GL_PROGRAM_OBJECT_ARB = 0x00008B40,
+ GL_PROGRAM_OBJECT_EXT = 0x00008B40,
+ GL_SHADER_OBJECT_ARB = 0x00008B48,
+ GL_SHADER_OBJECT_EXT = 0x00008B48,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x00008B49,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x00008B49,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS = 0x00008B4A,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x00008B4A,
+ GL_MAX_VARYING_FLOATS = 0x00008B4B,
+ GL_MAX_VARYING_COMPONENTS = 0x00008B4B,
+ GL_MAX_VARYING_COMPONENTS_EXT = 0x00008B4B,
+ GL_MAX_VARYING_FLOATS_ARB = 0x00008B4B,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x00008B4C,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x00008B4C,
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x00008B4D,
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x00008B4D,
+ GL_OBJECT_TYPE_ARB = 0x00008B4E,
+ GL_SHADER_TYPE = 0x00008B4F,
+ GL_OBJECT_SUBTYPE_ARB = 0x00008B4F,
+ GL_FLOAT_VEC2 = 0x00008B50,
+ GL_FLOAT_VEC2_ARB = 0x00008B50,
+ GL_FLOAT_VEC3 = 0x00008B51,
+ GL_FLOAT_VEC3_ARB = 0x00008B51,
+ GL_FLOAT_VEC4 = 0x00008B52,
+ GL_FLOAT_VEC4_ARB = 0x00008B52,
+ GL_INT_VEC2 = 0x00008B53,
+ GL_INT_VEC2_ARB = 0x00008B53,
+ GL_INT_VEC3 = 0x00008B54,
+ GL_INT_VEC3_ARB = 0x00008B54,
+ GL_INT_VEC4 = 0x00008B55,
+ GL_INT_VEC4_ARB = 0x00008B55,
+ GL_BOOL = 0x00008B56,
+ GL_BOOL_ARB = 0x00008B56,
+ GL_BOOL_VEC2 = 0x00008B57,
+ GL_BOOL_VEC2_ARB = 0x00008B57,
+ GL_BOOL_VEC3 = 0x00008B58,
+ GL_BOOL_VEC3_ARB = 0x00008B58,
+ GL_BOOL_VEC4 = 0x00008B59,
+ GL_BOOL_VEC4_ARB = 0x00008B59,
+ GL_FLOAT_MAT2 = 0x00008B5A,
+ GL_FLOAT_MAT2_ARB = 0x00008B5A,
+ GL_FLOAT_MAT3 = 0x00008B5B,
+ GL_FLOAT_MAT3_ARB = 0x00008B5B,
+ GL_FLOAT_MAT4 = 0x00008B5C,
+ GL_FLOAT_MAT4_ARB = 0x00008B5C,
+ GL_SAMPLER_1D = 0x00008B5D,
+ GL_SAMPLER_1D_ARB = 0x00008B5D,
+ GL_SAMPLER_2D = 0x00008B5E,
+ GL_SAMPLER_2D_ARB = 0x00008B5E,
+ GL_SAMPLER_3D = 0x00008B5F,
+ GL_SAMPLER_3D_ARB = 0x00008B5F,
+ GL_SAMPLER_3D_OES = 0x00008B5F,
+ GL_SAMPLER_CUBE = 0x00008B60,
+ GL_SAMPLER_CUBE_ARB = 0x00008B60,
+ GL_SAMPLER_1D_SHADOW = 0x00008B61,
+ GL_SAMPLER_1D_SHADOW_ARB = 0x00008B61,
+ GL_SAMPLER_2D_SHADOW = 0x00008B62,
+ GL_SAMPLER_2D_SHADOW_ARB = 0x00008B62,
+ GL_SAMPLER_2D_SHADOW_EXT = 0x00008B62,
+ GL_SAMPLER_2D_RECT = 0x00008B63,
+ GL_SAMPLER_2D_RECT_ARB = 0x00008B63,
+ GL_SAMPLER_2D_RECT_SHADOW = 0x00008B64,
+ GL_SAMPLER_2D_RECT_SHADOW_ARB = 0x00008B64,
+ GL_FLOAT_MAT2x3 = 0x00008B65,
+ GL_FLOAT_MAT2x3_NV = 0x00008B65,
+ GL_FLOAT_MAT2x4 = 0x00008B66,
+ GL_FLOAT_MAT2x4_NV = 0x00008B66,
+ GL_FLOAT_MAT3x2 = 0x00008B67,
+ GL_FLOAT_MAT3x2_NV = 0x00008B67,
+ GL_FLOAT_MAT3x4 = 0x00008B68,
+ GL_FLOAT_MAT3x4_NV = 0x00008B68,
+ GL_FLOAT_MAT4x2 = 0x00008B69,
+ GL_FLOAT_MAT4x2_NV = 0x00008B69,
+ GL_FLOAT_MAT4x3 = 0x00008B6A,
+ GL_FLOAT_MAT4x3_NV = 0x00008B6A,
+ GL_DELETE_STATUS = 0x00008B80,
+ GL_OBJECT_DELETE_STATUS_ARB = 0x00008B80,
+ GL_COMPILE_STATUS = 0x00008B81,
+ GL_OBJECT_COMPILE_STATUS_ARB = 0x00008B81,
+ GL_LINK_STATUS = 0x00008B82,
+ GL_OBJECT_LINK_STATUS_ARB = 0x00008B82,
+ GL_VALIDATE_STATUS = 0x00008B83,
+ GL_OBJECT_VALIDATE_STATUS_ARB = 0x00008B83,
+ GL_INFO_LOG_LENGTH = 0x00008B84,
+ GL_OBJECT_INFO_LOG_LENGTH_ARB = 0x00008B84,
+ GL_ATTACHED_SHADERS = 0x00008B85,
+ GL_OBJECT_ATTACHED_OBJECTS_ARB = 0x00008B85,
+ GL_ACTIVE_UNIFORMS = 0x00008B86,
+ GL_OBJECT_ACTIVE_UNIFORMS_ARB = 0x00008B86,
+ GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x00008B87,
+ GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x00008B87,
+ GL_SHADER_SOURCE_LENGTH = 0x00008B88,
+ GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x00008B88,
+ GL_ACTIVE_ATTRIBUTES = 0x00008B89,
+ GL_OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x00008B89,
+ GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x00008B8A,
+ GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x00008B8A,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 0x00008B8B,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x00008B8B,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x00008B8B,
+ GL_SHADING_LANGUAGE_VERSION = 0x00008B8C,
+ GL_SHADING_LANGUAGE_VERSION_ARB = 0x00008B8C,
+ GL_CURRENT_PROGRAM = 0x00008B8D,
+ GL_PALETTE4_RGB8_OES = 0x00008B90,
+ GL_PALETTE4_RGBA8_OES = 0x00008B91,
+ GL_PALETTE4_R5_G6_B5_OES = 0x00008B92,
+ GL_PALETTE4_RGBA4_OES = 0x00008B93,
+ GL_PALETTE4_RGB5_A1_OES = 0x00008B94,
+ GL_PALETTE8_RGB8_OES = 0x00008B95,
+ GL_PALETTE8_RGBA8_OES = 0x00008B96,
+ GL_PALETTE8_R5_G6_B5_OES = 0x00008B97,
+ GL_PALETTE8_RGBA4_OES = 0x00008B98,
+ GL_PALETTE8_RGB5_A1_OES = 0x00008B99,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x00008B9A,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x00008B9A,
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x00008B9B,
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x00008B9B,
+ GL_POINT_SIZE_ARRAY_OES = 0x00008B9C,
+ GL_TEXTURE_CROP_RECT_OES = 0x00008B9D,
+ GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x00008B9E,
+ GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x00008B9F,
+ GL_FRAGMENT_PROGRAM_POSITION_MESA = 0x00008BB0,
+ GL_FRAGMENT_PROGRAM_CALLBACK_MESA = 0x00008BB1,
+ GL_FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA = 0x00008BB2,
+ GL_FRAGMENT_PROGRAM_CALLBACK_DATA_MESA = 0x00008BB3,
+ GL_VERTEX_PROGRAM_POSITION_MESA = 0x00008BB4,
+ GL_VERTEX_PROGRAM_CALLBACK_MESA = 0x00008BB5,
+ GL_VERTEX_PROGRAM_CALLBACK_FUNC_MESA = 0x00008BB6,
+ GL_VERTEX_PROGRAM_CALLBACK_DATA_MESA = 0x00008BB7,
+ GL_COUNTER_TYPE_AMD = 0x00008BC0,
+ GL_COUNTER_RANGE_AMD = 0x00008BC1,
+ GL_UNSIGNED_INT64_AMD = 0x00008BC2,
+ GL_PERCENTAGE_AMD = 0x00008BC3,
+ GL_PERFMON_RESULT_AVAILABLE_AMD = 0x00008BC4,
+ GL_PERFMON_RESULT_SIZE_AMD = 0x00008BC5,
+ GL_PERFMON_RESULT_AMD = 0x00008BC6,
+ GL_TEXTURE_WIDTH_QCOM = 0x00008BD2,
+ GL_TEXTURE_HEIGHT_QCOM = 0x00008BD3,
+ GL_TEXTURE_DEPTH_QCOM = 0x00008BD4,
+ GL_TEXTURE_INTERNAL_FORMAT_QCOM = 0x00008BD5,
+ GL_TEXTURE_FORMAT_QCOM = 0x00008BD6,
+ GL_TEXTURE_TYPE_QCOM = 0x00008BD7,
+ GL_TEXTURE_IMAGE_VALID_QCOM = 0x00008BD8,
+ GL_TEXTURE_NUM_LEVELS_QCOM = 0x00008BD9,
+ GL_TEXTURE_TARGET_QCOM = 0x00008BDA,
+ GL_TEXTURE_OBJECT_VALID_QCOM = 0x00008BDB,
+ GL_STATE_RESTORE = 0x00008BDC,
+ GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT = 0x00008BE7,
+ GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x00008C00,
+ GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x00008C01,
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x00008C02,
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x00008C03,
+ GL_MODULATE_COLOR_IMG = 0x00008C04,
+ GL_RECIP_ADD_SIGNED_ALPHA_IMG = 0x00008C05,
+ GL_TEXTURE_ALPHA_MODULATE_IMG = 0x00008C06,
+ GL_FACTOR_ALPHA_MODULATE_IMG = 0x00008C07,
+ GL_FRAGMENT_ALPHA_MODULATE_IMG = 0x00008C08,
+ GL_ADD_BLEND_IMG = 0x00008C09,
+ GL_SGX_BINARY_IMG = 0x00008C0A,
+ GL_TEXTURE_RED_TYPE = 0x00008C10,
+ GL_TEXTURE_RED_TYPE_ARB = 0x00008C10,
+ GL_TEXTURE_GREEN_TYPE = 0x00008C11,
+ GL_TEXTURE_GREEN_TYPE_ARB = 0x00008C11,
+ GL_TEXTURE_BLUE_TYPE = 0x00008C12,
+ GL_TEXTURE_BLUE_TYPE_ARB = 0x00008C12,
+ GL_TEXTURE_ALPHA_TYPE = 0x00008C13,
+ GL_TEXTURE_ALPHA_TYPE_ARB = 0x00008C13,
+ GL_TEXTURE_LUMINANCE_TYPE = 0x00008C14,
+ GL_TEXTURE_LUMINANCE_TYPE_ARB = 0x00008C14,
+ GL_TEXTURE_INTENSITY_TYPE = 0x00008C15,
+ GL_TEXTURE_INTENSITY_TYPE_ARB = 0x00008C15,
+ GL_TEXTURE_DEPTH_TYPE = 0x00008C16,
+ GL_TEXTURE_DEPTH_TYPE_ARB = 0x00008C16,
+ GL_UNSIGNED_NORMALIZED = 0x00008C17,
+ GL_UNSIGNED_NORMALIZED_ARB = 0x00008C17,
+ GL_UNSIGNED_NORMALIZED_EXT = 0x00008C17,
+ GL_TEXTURE_1D_ARRAY = 0x00008C18,
+ GL_TEXTURE_1D_ARRAY_EXT = 0x00008C18,
+ GL_PROXY_TEXTURE_1D_ARRAY = 0x00008C19,
+ GL_PROXY_TEXTURE_1D_ARRAY_EXT = 0x00008C19,
+ GL_TEXTURE_2D_ARRAY = 0x00008C1A,
+ GL_TEXTURE_2D_ARRAY_EXT = 0x00008C1A,
+ GL_PROXY_TEXTURE_2D_ARRAY = 0x00008C1B,
+ GL_PROXY_TEXTURE_2D_ARRAY_EXT = 0x00008C1B,
+ GL_TEXTURE_BINDING_1D_ARRAY = 0x00008C1C,
+ GL_TEXTURE_BINDING_1D_ARRAY_EXT = 0x00008C1C,
+ GL_TEXTURE_BINDING_2D_ARRAY = 0x00008C1D,
+ GL_TEXTURE_BINDING_2D_ARRAY_EXT = 0x00008C1D,
+ GL_GEOMETRY_PROGRAM_NV = 0x00008C26,
+ GL_MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x00008C27,
+ GL_MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x00008C28,
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x00008C29,
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x00008C29,
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x00008C29,
+ GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES = 0x00008C29,
+ GL_TEXTURE_BUFFER = 0x00008C2A,
+ GL_TEXTURE_BUFFER_ARB = 0x00008C2A,
+ GL_TEXTURE_BUFFER_EXT = 0x00008C2A,
+ GL_TEXTURE_BUFFER_OES = 0x00008C2A,
+ GL_TEXTURE_BUFFER_BINDING = 0x00008C2A,
+ GL_TEXTURE_BUFFER_BINDING_EXT = 0x00008C2A,
+ GL_TEXTURE_BUFFER_BINDING_OES = 0x00008C2A,
+ GL_MAX_TEXTURE_BUFFER_SIZE = 0x00008C2B,
+ GL_MAX_TEXTURE_BUFFER_SIZE_ARB = 0x00008C2B,
+ GL_MAX_TEXTURE_BUFFER_SIZE_EXT = 0x00008C2B,
+ GL_MAX_TEXTURE_BUFFER_SIZE_OES = 0x00008C2B,
+ GL_TEXTURE_BINDING_BUFFER = 0x00008C2C,
+ GL_TEXTURE_BINDING_BUFFER_ARB = 0x00008C2C,
+ GL_TEXTURE_BINDING_BUFFER_EXT = 0x00008C2C,
+ GL_TEXTURE_BINDING_BUFFER_OES = 0x00008C2C,
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 0x00008C2D,
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x00008C2D,
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x00008C2D,
+ GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES = 0x00008C2D,
+ GL_TEXTURE_BUFFER_FORMAT_ARB = 0x00008C2E,
+ GL_TEXTURE_BUFFER_FORMAT_EXT = 0x00008C2E,
+ GL_ANY_SAMPLES_PASSED = 0x00008C2F,
+ GL_ANY_SAMPLES_PASSED_EXT = 0x00008C2F,
+ GL_SAMPLE_SHADING = 0x00008C36,
+ GL_SAMPLE_SHADING_ARB = 0x00008C36,
+ GL_SAMPLE_SHADING_OES = 0x00008C36,
+ GL_MIN_SAMPLE_SHADING_VALUE = 0x00008C37,
+ GL_MIN_SAMPLE_SHADING_VALUE_ARB = 0x00008C37,
+ GL_MIN_SAMPLE_SHADING_VALUE_OES = 0x00008C37,
+ GL_R11F_G11F_B10F = 0x00008C3A,
+ GL_R11F_G11F_B10F_APPLE = 0x00008C3A,
+ GL_R11F_G11F_B10F_EXT = 0x00008C3A,
+ GL_UNSIGNED_INT_10F_11F_11F_REV = 0x00008C3B,
+ GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE = 0x00008C3B,
+ GL_UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x00008C3B,
+ GL_RGBA_SIGNED_COMPONENTS_EXT = 0x00008C3C,
+ GL_RGB9_E5 = 0x00008C3D,
+ GL_RGB9_E5_APPLE = 0x00008C3D,
+ GL_RGB9_E5_EXT = 0x00008C3D,
+ GL_UNSIGNED_INT_5_9_9_9_REV = 0x00008C3E,
+ GL_UNSIGNED_INT_5_9_9_9_REV_APPLE = 0x00008C3E,
+ GL_UNSIGNED_INT_5_9_9_9_REV_EXT = 0x00008C3E,
+ GL_TEXTURE_SHARED_SIZE = 0x00008C3F,
+ GL_TEXTURE_SHARED_SIZE_EXT = 0x00008C3F,
+ GL_SRGB = 0x00008C40,
+ GL_SRGB_EXT = 0x00008C40,
+ GL_SRGB8 = 0x00008C41,
+ GL_SRGB8_EXT = 0x00008C41,
+ GL_SRGB8_NV = 0x00008C41,
+ GL_SRGB_ALPHA = 0x00008C42,
+ GL_SRGB_ALPHA_EXT = 0x00008C42,
+ GL_SRGB8_ALPHA8 = 0x00008C43,
+ GL_SRGB8_ALPHA8_EXT = 0x00008C43,
+ GL_SLUMINANCE_ALPHA = 0x00008C44,
+ GL_SLUMINANCE_ALPHA_EXT = 0x00008C44,
+ GL_SLUMINANCE_ALPHA_NV = 0x00008C44,
+ GL_SLUMINANCE8_ALPHA8 = 0x00008C45,
+ GL_SLUMINANCE8_ALPHA8_EXT = 0x00008C45,
+ GL_SLUMINANCE8_ALPHA8_NV = 0x00008C45,
+ GL_SLUMINANCE = 0x00008C46,
+ GL_SLUMINANCE_EXT = 0x00008C46,
+ GL_SLUMINANCE_NV = 0x00008C46,
+ GL_SLUMINANCE8 = 0x00008C47,
+ GL_SLUMINANCE8_EXT = 0x00008C47,
+ GL_SLUMINANCE8_NV = 0x00008C47,
+ GL_COMPRESSED_SRGB = 0x00008C48,
+ GL_COMPRESSED_SRGB_EXT = 0x00008C48,
+ GL_COMPRESSED_SRGB_ALPHA = 0x00008C49,
+ GL_COMPRESSED_SRGB_ALPHA_EXT = 0x00008C49,
+ GL_COMPRESSED_SLUMINANCE = 0x00008C4A,
+ GL_COMPRESSED_SLUMINANCE_EXT = 0x00008C4A,
+ GL_COMPRESSED_SLUMINANCE_ALPHA = 0x00008C4B,
+ GL_COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x00008C4B,
+ GL_COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x00008C4C,
+ GL_COMPRESSED_SRGB_S3TC_DXT1_NV = 0x00008C4C,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x00008C4D,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = 0x00008C4D,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x00008C4E,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = 0x00008C4E,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x00008C4F,
+ GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = 0x00008C4F,
+ GL_COMPRESSED_LUMINANCE_LATC1_EXT = 0x00008C70,
+ GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x00008C71,
+ GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x00008C72,
+ GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x00008C73,
+ GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV = 0x00008C74,
+ GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV = 0x00008C75,
+ GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x00008C76,
+ GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x00008C76,
+ GL_BACK_PRIMARY_COLOR_NV = 0x00008C77,
+ GL_BACK_SECONDARY_COLOR_NV = 0x00008C78,
+ GL_TEXTURE_COORD_NV = 0x00008C79,
+ GL_CLIP_DISTANCE_NV = 0x00008C7A,
+ GL_VERTEX_ID_NV = 0x00008C7B,
+ GL_PRIMITIVE_ID_NV = 0x00008C7C,
+ GL_GENERIC_ATTRIB_NV = 0x00008C7D,
+ GL_TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x00008C7E,
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 0x00008C7F,
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x00008C7F,
+ GL_TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x00008C7F,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x00008C80,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x00008C80,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x00008C80,
+ GL_ACTIVE_VARYINGS_NV = 0x00008C81,
+ GL_ACTIVE_VARYING_MAX_LENGTH_NV = 0x00008C82,
+ GL_TRANSFORM_FEEDBACK_VARYINGS = 0x00008C83,
+ GL_TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x00008C83,
+ GL_TRANSFORM_FEEDBACK_VARYINGS_NV = 0x00008C83,
+ GL_TRANSFORM_FEEDBACK_BUFFER_START = 0x00008C84,
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x00008C84,
+ GL_TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x00008C84,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x00008C85,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x00008C85,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x00008C85,
+ GL_TRANSFORM_FEEDBACK_RECORD_NV = 0x00008C86,
+ GL_PRIMITIVES_GENERATED = 0x00008C87,
+ GL_PRIMITIVES_GENERATED_EXT = 0x00008C87,
+ GL_PRIMITIVES_GENERATED_NV = 0x00008C87,
+ GL_PRIMITIVES_GENERATED_OES = 0x00008C87,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x00008C88,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x00008C88,
+ GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x00008C88,
+ GL_RASTERIZER_DISCARD = 0x00008C89,
+ GL_RASTERIZER_DISCARD_EXT = 0x00008C89,
+ GL_RASTERIZER_DISCARD_NV = 0x00008C89,
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x00008C8A,
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x00008C8A,
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_NV = 0x00008C8A,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x00008C8B,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x00008C8B,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x00008C8B,
+ GL_INTERLEAVED_ATTRIBS = 0x00008C8C,
+ GL_INTERLEAVED_ATTRIBS_EXT = 0x00008C8C,
+ GL_INTERLEAVED_ATTRIBS_NV = 0x00008C8C,
+ GL_SEPARATE_ATTRIBS = 0x00008C8D,
+ GL_SEPARATE_ATTRIBS_EXT = 0x00008C8D,
+ GL_SEPARATE_ATTRIBS_NV = 0x00008C8D,
+ GL_TRANSFORM_FEEDBACK_BUFFER = 0x00008C8E,
+ GL_TRANSFORM_FEEDBACK_BUFFER_EXT = 0x00008C8E,
+ GL_TRANSFORM_FEEDBACK_BUFFER_NV = 0x00008C8E,
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x00008C8F,
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x00008C8F,
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x00008C8F,
+ GL_ATC_RGB_AMD = 0x00008C92,
+ GL_ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x00008C93,
+ GL_POINT_SPRITE_COORD_ORIGIN = 0x00008CA0,
+ GL_LOWER_LEFT = 0x00008CA1,
+ GL_UPPER_LEFT = 0x00008CA2,
+ GL_STENCIL_BACK_REF = 0x00008CA3,
+ GL_STENCIL_BACK_VALUE_MASK = 0x00008CA4,
+ GL_STENCIL_BACK_WRITEMASK = 0x00008CA5,
+ GL_DRAW_FRAMEBUFFER_BINDING = 0x00008CA6,
+ GL_DRAW_FRAMEBUFFER_BINDING_ANGLE = 0x00008CA6,
+ GL_DRAW_FRAMEBUFFER_BINDING_APPLE = 0x00008CA6,
+ GL_DRAW_FRAMEBUFFER_BINDING_EXT = 0x00008CA6,
+ GL_DRAW_FRAMEBUFFER_BINDING_NV = 0x00008CA6,
+ GL_FRAMEBUFFER_BINDING = 0x00008CA6,
+ GL_FRAMEBUFFER_BINDING_ANGLE = 0x00008CA6,
+ GL_FRAMEBUFFER_BINDING_EXT = 0x00008CA6,
+ GL_FRAMEBUFFER_BINDING_OES = 0x00008CA6,
+ GL_RENDERBUFFER_BINDING = 0x00008CA7,
+ GL_RENDERBUFFER_BINDING_ANGLE = 0x00008CA7,
+ GL_RENDERBUFFER_BINDING_EXT = 0x00008CA7,
+ GL_RENDERBUFFER_BINDING_OES = 0x00008CA7,
+ GL_READ_FRAMEBUFFER = 0x00008CA8,
+ GL_READ_FRAMEBUFFER_ANGLE = 0x00008CA8,
+ GL_READ_FRAMEBUFFER_APPLE = 0x00008CA8,
+ GL_READ_FRAMEBUFFER_EXT = 0x00008CA8,
+ GL_READ_FRAMEBUFFER_NV = 0x00008CA8,
+ GL_DRAW_FRAMEBUFFER = 0x00008CA9,
+ GL_DRAW_FRAMEBUFFER_ANGLE = 0x00008CA9,
+ GL_DRAW_FRAMEBUFFER_APPLE = 0x00008CA9,
+ GL_DRAW_FRAMEBUFFER_EXT = 0x00008CA9,
+ GL_DRAW_FRAMEBUFFER_NV = 0x00008CA9,
+ GL_READ_FRAMEBUFFER_BINDING = 0x00008CAA,
+ GL_READ_FRAMEBUFFER_BINDING_ANGLE = 0x00008CAA,
+ GL_READ_FRAMEBUFFER_BINDING_APPLE = 0x00008CAA,
+ GL_READ_FRAMEBUFFER_BINDING_EXT = 0x00008CAA,
+ GL_READ_FRAMEBUFFER_BINDING_NV = 0x00008CAA,
+ GL_RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x00008CAB,
+ GL_RENDERBUFFER_SAMPLES = 0x00008CAB,
+ GL_RENDERBUFFER_SAMPLES_ANGLE = 0x00008CAB,
+ GL_RENDERBUFFER_SAMPLES_APPLE = 0x00008CAB,
+ GL_RENDERBUFFER_SAMPLES_EXT = 0x00008CAB,
+ GL_RENDERBUFFER_SAMPLES_NV = 0x00008CAB,
+ GL_DEPTH_COMPONENT32F = 0x00008CAC,
+ GL_DEPTH32F_STENCIL8 = 0x00008CAD,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x00008CD0,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x00008CD0,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 0x00008CD0,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x00008CD1,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x00008CD1,
+ GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 0x00008CD1,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x00008CD2,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x00008CD2,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 0x00008CD2,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x00008CD3,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x00008CD3,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x00008CD3,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x00008CD4,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x00008CD4,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x00008CD4,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x00008CD4,
+ GL_FRAMEBUFFER_COMPLETE = 0x00008CD5,
+ GL_FRAMEBUFFER_COMPLETE_EXT = 0x00008CD5,
+ GL_FRAMEBUFFER_COMPLETE_OES = 0x00008CD5,
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x00008CD6,
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x00008CD6,
+ GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 0x00008CD6,
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x00008CD7,
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x00008CD7,
+ GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 0x00008CD7,
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x00008CD9,
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x00008CD9,
+ GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 0x00008CD9,
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x00008CDA,
+ GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 0x00008CDA,
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x00008CDB,
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x00008CDB,
+ GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 0x00008CDB,
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x00008CDC,
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x00008CDC,
+ GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 0x00008CDC,
+ GL_FRAMEBUFFER_UNSUPPORTED = 0x00008CDD,
+ GL_FRAMEBUFFER_UNSUPPORTED_EXT = 0x00008CDD,
+ GL_FRAMEBUFFER_UNSUPPORTED_OES = 0x00008CDD,
+ GL_MAX_COLOR_ATTACHMENTS = 0x00008CDF,
+ GL_MAX_COLOR_ATTACHMENTS_EXT = 0x00008CDF,
+ GL_MAX_COLOR_ATTACHMENTS_NV = 0x00008CDF,
+ GL_COLOR_ATTACHMENT0 = 0x00008CE0,
+ GL_COLOR_ATTACHMENT0_EXT = 0x00008CE0,
+ GL_COLOR_ATTACHMENT0_NV = 0x00008CE0,
+ GL_COLOR_ATTACHMENT0_OES = 0x00008CE0,
+ GL_COLOR_ATTACHMENT1 = 0x00008CE1,
+ GL_COLOR_ATTACHMENT1_EXT = 0x00008CE1,
+ GL_COLOR_ATTACHMENT1_NV = 0x00008CE1,
+ GL_COLOR_ATTACHMENT2 = 0x00008CE2,
+ GL_COLOR_ATTACHMENT2_EXT = 0x00008CE2,
+ GL_COLOR_ATTACHMENT2_NV = 0x00008CE2,
+ GL_COLOR_ATTACHMENT3 = 0x00008CE3,
+ GL_COLOR_ATTACHMENT3_EXT = 0x00008CE3,
+ GL_COLOR_ATTACHMENT3_NV = 0x00008CE3,
+ GL_COLOR_ATTACHMENT4 = 0x00008CE4,
+ GL_COLOR_ATTACHMENT4_EXT = 0x00008CE4,
+ GL_COLOR_ATTACHMENT4_NV = 0x00008CE4,
+ GL_COLOR_ATTACHMENT5 = 0x00008CE5,
+ GL_COLOR_ATTACHMENT5_EXT = 0x00008CE5,
+ GL_COLOR_ATTACHMENT5_NV = 0x00008CE5,
+ GL_COLOR_ATTACHMENT6 = 0x00008CE6,
+ GL_COLOR_ATTACHMENT6_EXT = 0x00008CE6,
+ GL_COLOR_ATTACHMENT6_NV = 0x00008CE6,
+ GL_COLOR_ATTACHMENT7 = 0x00008CE7,
+ GL_COLOR_ATTACHMENT7_EXT = 0x00008CE7,
+ GL_COLOR_ATTACHMENT7_NV = 0x00008CE7,
+ GL_COLOR_ATTACHMENT8 = 0x00008CE8,
+ GL_COLOR_ATTACHMENT8_EXT = 0x00008CE8,
+ GL_COLOR_ATTACHMENT8_NV = 0x00008CE8,
+ GL_COLOR_ATTACHMENT9 = 0x00008CE9,
+ GL_COLOR_ATTACHMENT9_EXT = 0x00008CE9,
+ GL_COLOR_ATTACHMENT9_NV = 0x00008CE9,
+ GL_COLOR_ATTACHMENT10 = 0x00008CEA,
+ GL_COLOR_ATTACHMENT10_EXT = 0x00008CEA,
+ GL_COLOR_ATTACHMENT10_NV = 0x00008CEA,
+ GL_COLOR_ATTACHMENT11 = 0x00008CEB,
+ GL_COLOR_ATTACHMENT11_EXT = 0x00008CEB,
+ GL_COLOR_ATTACHMENT11_NV = 0x00008CEB,
+ GL_COLOR_ATTACHMENT12 = 0x00008CEC,
+ GL_COLOR_ATTACHMENT12_EXT = 0x00008CEC,
+ GL_COLOR_ATTACHMENT12_NV = 0x00008CEC,
+ GL_COLOR_ATTACHMENT13 = 0x00008CED,
+ GL_COLOR_ATTACHMENT13_EXT = 0x00008CED,
+ GL_COLOR_ATTACHMENT13_NV = 0x00008CED,
+ GL_COLOR_ATTACHMENT14 = 0x00008CEE,
+ GL_COLOR_ATTACHMENT14_EXT = 0x00008CEE,
+ GL_COLOR_ATTACHMENT14_NV = 0x00008CEE,
+ GL_COLOR_ATTACHMENT15 = 0x00008CEF,
+ GL_COLOR_ATTACHMENT15_EXT = 0x00008CEF,
+ GL_COLOR_ATTACHMENT15_NV = 0x00008CEF,
+ GL_COLOR_ATTACHMENT16 = 0x00008CF0,
+ GL_COLOR_ATTACHMENT17 = 0x00008CF1,
+ GL_COLOR_ATTACHMENT18 = 0x00008CF2,
+ GL_COLOR_ATTACHMENT19 = 0x00008CF3,
+ GL_COLOR_ATTACHMENT20 = 0x00008CF4,
+ GL_COLOR_ATTACHMENT21 = 0x00008CF5,
+ GL_COLOR_ATTACHMENT22 = 0x00008CF6,
+ GL_COLOR_ATTACHMENT23 = 0x00008CF7,
+ GL_COLOR_ATTACHMENT24 = 0x00008CF8,
+ GL_COLOR_ATTACHMENT25 = 0x00008CF9,
+ GL_COLOR_ATTACHMENT26 = 0x00008CFA,
+ GL_COLOR_ATTACHMENT27 = 0x00008CFB,
+ GL_COLOR_ATTACHMENT28 = 0x00008CFC,
+ GL_COLOR_ATTACHMENT29 = 0x00008CFD,
+ GL_COLOR_ATTACHMENT30 = 0x00008CFE,
+ GL_COLOR_ATTACHMENT31 = 0x00008CFF,
+ GL_DEPTH_ATTACHMENT = 0x00008D00,
+ GL_DEPTH_ATTACHMENT_EXT = 0x00008D00,
+ GL_DEPTH_ATTACHMENT_OES = 0x00008D00,
+ GL_STENCIL_ATTACHMENT = 0x00008D20,
+ GL_STENCIL_ATTACHMENT_EXT = 0x00008D20,
+ GL_STENCIL_ATTACHMENT_OES = 0x00008D20,
+ GL_FRAMEBUFFER = 0x00008D40,
+ GL_FRAMEBUFFER_EXT = 0x00008D40,
+ GL_FRAMEBUFFER_OES = 0x00008D40,
+ GL_RENDERBUFFER = 0x00008D41,
+ GL_RENDERBUFFER_EXT = 0x00008D41,
+ GL_RENDERBUFFER_OES = 0x00008D41,
+ GL_RENDERBUFFER_WIDTH = 0x00008D42,
+ GL_RENDERBUFFER_WIDTH_EXT = 0x00008D42,
+ GL_RENDERBUFFER_WIDTH_OES = 0x00008D42,
+ GL_RENDERBUFFER_HEIGHT = 0x00008D43,
+ GL_RENDERBUFFER_HEIGHT_EXT = 0x00008D43,
+ GL_RENDERBUFFER_HEIGHT_OES = 0x00008D43,
+ GL_RENDERBUFFER_INTERNAL_FORMAT = 0x00008D44,
+ GL_RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x00008D44,
+ GL_RENDERBUFFER_INTERNAL_FORMAT_OES = 0x00008D44,
+ GL_STENCIL_INDEX1 = 0x00008D46,
+ GL_STENCIL_INDEX1_EXT = 0x00008D46,
+ GL_STENCIL_INDEX1_OES = 0x00008D46,
+ GL_STENCIL_INDEX4 = 0x00008D47,
+ GL_STENCIL_INDEX4_EXT = 0x00008D47,
+ GL_STENCIL_INDEX4_OES = 0x00008D47,
+ GL_STENCIL_INDEX8 = 0x00008D48,
+ GL_STENCIL_INDEX8_EXT = 0x00008D48,
+ GL_STENCIL_INDEX8_OES = 0x00008D48,
+ GL_STENCIL_INDEX16 = 0x00008D49,
+ GL_STENCIL_INDEX16_EXT = 0x00008D49,
+ GL_RENDERBUFFER_RED_SIZE = 0x00008D50,
+ GL_RENDERBUFFER_RED_SIZE_EXT = 0x00008D50,
+ GL_RENDERBUFFER_RED_SIZE_OES = 0x00008D50,
+ GL_RENDERBUFFER_GREEN_SIZE = 0x00008D51,
+ GL_RENDERBUFFER_GREEN_SIZE_EXT = 0x00008D51,
+ GL_RENDERBUFFER_GREEN_SIZE_OES = 0x00008D51,
+ GL_RENDERBUFFER_BLUE_SIZE = 0x00008D52,
+ GL_RENDERBUFFER_BLUE_SIZE_EXT = 0x00008D52,
+ GL_RENDERBUFFER_BLUE_SIZE_OES = 0x00008D52,
+ GL_RENDERBUFFER_ALPHA_SIZE = 0x00008D53,
+ GL_RENDERBUFFER_ALPHA_SIZE_EXT = 0x00008D53,
+ GL_RENDERBUFFER_ALPHA_SIZE_OES = 0x00008D53,
+ GL_RENDERBUFFER_DEPTH_SIZE = 0x00008D54,
+ GL_RENDERBUFFER_DEPTH_SIZE_EXT = 0x00008D54,
+ GL_RENDERBUFFER_DEPTH_SIZE_OES = 0x00008D54,
+ GL_RENDERBUFFER_STENCIL_SIZE = 0x00008D55,
+ GL_RENDERBUFFER_STENCIL_SIZE_EXT = 0x00008D55,
+ GL_RENDERBUFFER_STENCIL_SIZE_OES = 0x00008D55,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x00008D56,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = 0x00008D56,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = 0x00008D56,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x00008D56,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = 0x00008D56,
+ GL_MAX_SAMPLES = 0x00008D57,
+ GL_MAX_SAMPLES_ANGLE = 0x00008D57,
+ GL_MAX_SAMPLES_APPLE = 0x00008D57,
+ GL_MAX_SAMPLES_EXT = 0x00008D57,
+ GL_MAX_SAMPLES_NV = 0x00008D57,
+ GL_TEXTURE_GEN_STR_OES = 0x00008D60,
+ GL_HALF_FLOAT_OES = 0x00008D61,
+ GL_RGB565_OES = 0x00008D62,
+ GL_RGB565 = 0x00008D62,
+ GL_ETC1_RGB8_OES = 0x00008D64,
+ GL_TEXTURE_EXTERNAL_OES = 0x00008D65,
+ GL_SAMPLER_EXTERNAL_OES = 0x00008D66,
+ GL_TEXTURE_BINDING_EXTERNAL_OES = 0x00008D67,
+ GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x00008D68,
+ GL_PRIMITIVE_RESTART_FIXED_INDEX = 0x00008D69,
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE = 0x00008D6A,
+ GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = 0x00008D6A,
+ GL_MAX_ELEMENT_INDEX = 0x00008D6B,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x00008D6C,
+ GL_RGBA32UI = 0x00008D70,
+ GL_RGBA32UI_EXT = 0x00008D70,
+ GL_RGB32UI = 0x00008D71,
+ GL_RGB32UI_EXT = 0x00008D71,
+ GL_ALPHA32UI_EXT = 0x00008D72,
+ GL_INTENSITY32UI_EXT = 0x00008D73,
+ GL_LUMINANCE32UI_EXT = 0x00008D74,
+ GL_LUMINANCE_ALPHA32UI_EXT = 0x00008D75,
+ GL_RGBA16UI = 0x00008D76,
+ GL_RGBA16UI_EXT = 0x00008D76,
+ GL_RGB16UI = 0x00008D77,
+ GL_RGB16UI_EXT = 0x00008D77,
+ GL_ALPHA16UI_EXT = 0x00008D78,
+ GL_INTENSITY16UI_EXT = 0x00008D79,
+ GL_LUMINANCE16UI_EXT = 0x00008D7A,
+ GL_LUMINANCE_ALPHA16UI_EXT = 0x00008D7B,
+ GL_RGBA8UI = 0x00008D7C,
+ GL_RGBA8UI_EXT = 0x00008D7C,
+ GL_RGB8UI = 0x00008D7D,
+ GL_RGB8UI_EXT = 0x00008D7D,
+ GL_ALPHA8UI_EXT = 0x00008D7E,
+ GL_INTENSITY8UI_EXT = 0x00008D7F,
+ GL_LUMINANCE8UI_EXT = 0x00008D80,
+ GL_LUMINANCE_ALPHA8UI_EXT = 0x00008D81,
+ GL_RGBA32I = 0x00008D82,
+ GL_RGBA32I_EXT = 0x00008D82,
+ GL_RGB32I = 0x00008D83,
+ GL_RGB32I_EXT = 0x00008D83,
+ GL_ALPHA32I_EXT = 0x00008D84,
+ GL_INTENSITY32I_EXT = 0x00008D85,
+ GL_LUMINANCE32I_EXT = 0x00008D86,
+ GL_LUMINANCE_ALPHA32I_EXT = 0x00008D87,
+ GL_RGBA16I = 0x00008D88,
+ GL_RGBA16I_EXT = 0x00008D88,
+ GL_RGB16I = 0x00008D89,
+ GL_RGB16I_EXT = 0x00008D89,
+ GL_ALPHA16I_EXT = 0x00008D8A,
+ GL_INTENSITY16I_EXT = 0x00008D8B,
+ GL_LUMINANCE16I_EXT = 0x00008D8C,
+ GL_LUMINANCE_ALPHA16I_EXT = 0x00008D8D,
+ GL_RGBA8I = 0x00008D8E,
+ GL_RGBA8I_EXT = 0x00008D8E,
+ GL_RGB8I = 0x00008D8F,
+ GL_RGB8I_EXT = 0x00008D8F,
+ GL_ALPHA8I_EXT = 0x00008D90,
+ GL_INTENSITY8I_EXT = 0x00008D91,
+ GL_LUMINANCE8I_EXT = 0x00008D92,
+ GL_LUMINANCE_ALPHA8I_EXT = 0x00008D93,
+ GL_RED_INTEGER = 0x00008D94,
+ GL_RED_INTEGER_EXT = 0x00008D94,
+ GL_GREEN_INTEGER = 0x00008D95,
+ GL_GREEN_INTEGER_EXT = 0x00008D95,
+ GL_BLUE_INTEGER = 0x00008D96,
+ GL_BLUE_INTEGER_EXT = 0x00008D96,
+ GL_ALPHA_INTEGER = 0x00008D97,
+ GL_ALPHA_INTEGER_EXT = 0x00008D97,
+ GL_RGB_INTEGER = 0x00008D98,
+ GL_RGB_INTEGER_EXT = 0x00008D98,
+ GL_RGBA_INTEGER = 0x00008D99,
+ GL_RGBA_INTEGER_EXT = 0x00008D99,
+ GL_BGR_INTEGER = 0x00008D9A,
+ GL_BGR_INTEGER_EXT = 0x00008D9A,
+ GL_BGRA_INTEGER = 0x00008D9B,
+ GL_BGRA_INTEGER_EXT = 0x00008D9B,
+ GL_LUMINANCE_INTEGER_EXT = 0x00008D9C,
+ GL_LUMINANCE_ALPHA_INTEGER_EXT = 0x00008D9D,
+ GL_RGBA_INTEGER_MODE_EXT = 0x00008D9E,
+ GL_INT_2_10_10_10_REV = 0x00008D9F,
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x00008DA0,
+ GL_MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x00008DA1,
+ GL_VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x00008DA2,
+ GL_GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x00008DA3,
+ GL_FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x00008DA4,
+ GL_MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x00008DA5,
+ GL_MAX_PROGRAM_GENERIC_RESULTS_NV = 0x00008DA6,
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 0x00008DA7,
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x00008DA7,
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x00008DA7,
+ GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES = 0x00008DA7,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x00008DA8,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x00008DA8,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x00008DA8,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES = 0x00008DA8,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x00008DA9,
+ GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x00008DA9,
+ GL_LAYER_NV = 0x00008DAA,
+ GL_DEPTH_COMPONENT32F_NV = 0x00008DAB,
+ GL_DEPTH32F_STENCIL8_NV = 0x00008DAC,
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 0x00008DAD,
+ GL_FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x00008DAD,
+ GL_SHADER_INCLUDE_ARB = 0x00008DAE,
+ GL_DEPTH_BUFFER_FLOAT_MODE_NV = 0x00008DAF,
+ GL_FRAMEBUFFER_SRGB = 0x00008DB9,
+ GL_FRAMEBUFFER_SRGB_EXT = 0x00008DB9,
+ GL_FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x00008DBA,
+ GL_COMPRESSED_RED_RGTC1 = 0x00008DBB,
+ GL_COMPRESSED_RED_RGTC1_EXT = 0x00008DBB,
+ GL_COMPRESSED_SIGNED_RED_RGTC1 = 0x00008DBC,
+ GL_COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x00008DBC,
+ GL_COMPRESSED_RED_GREEN_RGTC2_EXT = 0x00008DBD,
+ GL_COMPRESSED_RG_RGTC2 = 0x00008DBD,
+ GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x00008DBE,
+ GL_COMPRESSED_SIGNED_RG_RGTC2 = 0x00008DBE,
+ GL_SAMPLER_1D_ARRAY = 0x00008DC0,
+ GL_SAMPLER_1D_ARRAY_EXT = 0x00008DC0,
+ GL_SAMPLER_2D_ARRAY = 0x00008DC1,
+ GL_SAMPLER_2D_ARRAY_EXT = 0x00008DC1,
+ GL_SAMPLER_BUFFER = 0x00008DC2,
+ GL_SAMPLER_BUFFER_EXT = 0x00008DC2,
+ GL_SAMPLER_BUFFER_OES = 0x00008DC2,
+ GL_SAMPLER_1D_ARRAY_SHADOW = 0x00008DC3,
+ GL_SAMPLER_1D_ARRAY_SHADOW_EXT = 0x00008DC3,
+ GL_SAMPLER_2D_ARRAY_SHADOW = 0x00008DC4,
+ GL_SAMPLER_2D_ARRAY_SHADOW_EXT = 0x00008DC4,
+ GL_SAMPLER_2D_ARRAY_SHADOW_NV = 0x00008DC4,
+ GL_SAMPLER_CUBE_SHADOW = 0x00008DC5,
+ GL_SAMPLER_CUBE_SHADOW_EXT = 0x00008DC5,
+ GL_SAMPLER_CUBE_SHADOW_NV = 0x00008DC5,
+ GL_UNSIGNED_INT_VEC2 = 0x00008DC6,
+ GL_UNSIGNED_INT_VEC2_EXT = 0x00008DC6,
+ GL_UNSIGNED_INT_VEC3 = 0x00008DC7,
+ GL_UNSIGNED_INT_VEC3_EXT = 0x00008DC7,
+ GL_UNSIGNED_INT_VEC4 = 0x00008DC8,
+ GL_UNSIGNED_INT_VEC4_EXT = 0x00008DC8,
+ GL_INT_SAMPLER_1D = 0x00008DC9,
+ GL_INT_SAMPLER_1D_EXT = 0x00008DC9,
+ GL_INT_SAMPLER_2D = 0x00008DCA,
+ GL_INT_SAMPLER_2D_EXT = 0x00008DCA,
+ GL_INT_SAMPLER_3D = 0x00008DCB,
+ GL_INT_SAMPLER_3D_EXT = 0x00008DCB,
+ GL_INT_SAMPLER_CUBE = 0x00008DCC,
+ GL_INT_SAMPLER_CUBE_EXT = 0x00008DCC,
+ GL_INT_SAMPLER_2D_RECT = 0x00008DCD,
+ GL_INT_SAMPLER_2D_RECT_EXT = 0x00008DCD,
+ GL_INT_SAMPLER_1D_ARRAY = 0x00008DCE,
+ GL_INT_SAMPLER_1D_ARRAY_EXT = 0x00008DCE,
+ GL_INT_SAMPLER_2D_ARRAY = 0x00008DCF,
+ GL_INT_SAMPLER_2D_ARRAY_EXT = 0x00008DCF,
+ GL_INT_SAMPLER_BUFFER = 0x00008DD0,
+ GL_INT_SAMPLER_BUFFER_EXT = 0x00008DD0,
+ GL_INT_SAMPLER_BUFFER_OES = 0x00008DD0,
+ GL_UNSIGNED_INT_SAMPLER_1D = 0x00008DD1,
+ GL_UNSIGNED_INT_SAMPLER_1D_EXT = 0x00008DD1,
+ GL_UNSIGNED_INT_SAMPLER_2D = 0x00008DD2,
+ GL_UNSIGNED_INT_SAMPLER_2D_EXT = 0x00008DD2,
+ GL_UNSIGNED_INT_SAMPLER_3D = 0x00008DD3,
+ GL_UNSIGNED_INT_SAMPLER_3D_EXT = 0x00008DD3,
+ GL_UNSIGNED_INT_SAMPLER_CUBE = 0x00008DD4,
+ GL_UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x00008DD4,
+ GL_UNSIGNED_INT_SAMPLER_2D_RECT = 0x00008DD5,
+ GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x00008DD5,
+ GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x00008DD6,
+ GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x00008DD6,
+ GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x00008DD7,
+ GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x00008DD7,
+ GL_UNSIGNED_INT_SAMPLER_BUFFER = 0x00008DD8,
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x00008DD8,
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_OES = 0x00008DD8,
+ GL_GEOMETRY_SHADER = 0x00008DD9,
+ GL_GEOMETRY_SHADER_ARB = 0x00008DD9,
+ GL_GEOMETRY_SHADER_EXT = 0x00008DD9,
+ GL_GEOMETRY_SHADER_OES = 0x00008DD9,
+ GL_GEOMETRY_VERTICES_OUT_ARB = 0x00008DDA,
+ GL_GEOMETRY_VERTICES_OUT_EXT = 0x00008DDA,
+ GL_GEOMETRY_INPUT_TYPE_ARB = 0x00008DDB,
+ GL_GEOMETRY_INPUT_TYPE_EXT = 0x00008DDB,
+ GL_GEOMETRY_OUTPUT_TYPE_ARB = 0x00008DDC,
+ GL_GEOMETRY_OUTPUT_TYPE_EXT = 0x00008DDC,
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x00008DDD,
+ GL_MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x00008DDD,
+ GL_MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x00008DDE,
+ GL_MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x00008DDE,
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x00008DDF,
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x00008DDF,
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x00008DDF,
+ GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES = 0x00008DDF,
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES = 0x00008DE0,
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x00008DE0,
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x00008DE0,
+ GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES = 0x00008DE0,
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x00008DE1,
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x00008DE1,
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x00008DE1,
+ GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES = 0x00008DE1,
+ GL_MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x00008DE2,
+ GL_MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x00008DE3,
+ GL_MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x00008DE4,
+ GL_ACTIVE_SUBROUTINES = 0x00008DE5,
+ GL_ACTIVE_SUBROUTINE_UNIFORMS = 0x00008DE6,
+ GL_MAX_SUBROUTINES = 0x00008DE7,
+ GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x00008DE8,
+ GL_NAMED_STRING_LENGTH_ARB = 0x00008DE9,
+ GL_NAMED_STRING_TYPE_ARB = 0x00008DEA,
+ GL_MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x00008DED,
+ GL_UNIFORM_BUFFER_EXT = 0x00008DEE,
+ GL_UNIFORM_BUFFER_BINDING_EXT = 0x00008DEF,
+ GL_LOW_FLOAT = 0x00008DF0,
+ GL_MEDIUM_FLOAT = 0x00008DF1,
+ GL_HIGH_FLOAT = 0x00008DF2,
+ GL_LOW_INT = 0x00008DF3,
+ GL_MEDIUM_INT = 0x00008DF4,
+ GL_HIGH_INT = 0x00008DF5,
+ GL_UNSIGNED_INT_10_10_10_2_OES = 0x00008DF6,
+ GL_INT_10_10_10_2_OES = 0x00008DF7,
+ GL_SHADER_BINARY_FORMATS = 0x00008DF8,
+ GL_NUM_SHADER_BINARY_FORMATS = 0x00008DF9,
+ GL_SHADER_COMPILER = 0x00008DFA,
+ GL_MAX_VERTEX_UNIFORM_VECTORS = 0x00008DFB,
+ GL_MAX_VARYING_VECTORS = 0x00008DFC,
+ GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x00008DFD,
+ GL_RENDERBUFFER_COLOR_SAMPLES_NV = 0x00008E10,
+ GL_MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x00008E11,
+ GL_MULTISAMPLE_COVERAGE_MODES_NV = 0x00008E12,
+ GL_QUERY_WAIT = 0x00008E13,
+ GL_QUERY_WAIT_NV = 0x00008E13,
+ GL_QUERY_NO_WAIT = 0x00008E14,
+ GL_QUERY_NO_WAIT_NV = 0x00008E14,
+ GL_QUERY_BY_REGION_WAIT = 0x00008E15,
+ GL_QUERY_BY_REGION_WAIT_NV = 0x00008E15,
+ GL_QUERY_BY_REGION_NO_WAIT = 0x00008E16,
+ GL_QUERY_BY_REGION_NO_WAIT_NV = 0x00008E16,
+ GL_QUERY_WAIT_INVERTED = 0x00008E17,
+ GL_QUERY_NO_WAIT_INVERTED = 0x00008E18,
+ GL_QUERY_BY_REGION_WAIT_INVERTED = 0x00008E19,
+ GL_QUERY_BY_REGION_NO_WAIT_INVERTED = 0x00008E1A,
+ GL_POLYGON_OFFSET_CLAMP_EXT = 0x00008E1B,
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x00008E1E,
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x00008E1E,
+ GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES = 0x00008E1E,
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x00008E1F,
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x00008E1F,
+ GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = 0x00008E1F,
+ GL_COLOR_SAMPLES_NV = 0x00008E20,
+ GL_TRANSFORM_FEEDBACK = 0x00008E22,
+ GL_TRANSFORM_FEEDBACK_NV = 0x00008E22,
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x00008E23,
+ GL_TRANSFORM_FEEDBACK_PAUSED = 0x00008E23,
+ GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x00008E23,
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x00008E24,
+ GL_TRANSFORM_FEEDBACK_ACTIVE = 0x00008E24,
+ GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x00008E24,
+ GL_TRANSFORM_FEEDBACK_BINDING = 0x00008E25,
+ GL_TRANSFORM_FEEDBACK_BINDING_NV = 0x00008E25,
+ GL_FRAME_NV = 0x00008E26,
+ GL_FIELDS_NV = 0x00008E27,
+ GL_CURRENT_TIME_NV = 0x00008E28,
+ GL_TIMESTAMP = 0x00008E28,
+ GL_TIMESTAMP_EXT = 0x00008E28,
+ GL_NUM_FILL_STREAMS_NV = 0x00008E29,
+ GL_PRESENT_TIME_NV = 0x00008E2A,
+ GL_PRESENT_DURATION_NV = 0x00008E2B,
+ GL_DEPTH_COMPONENT16_NONLINEAR_NV = 0x00008E2C,
+ GL_PROGRAM_MATRIX_EXT = 0x00008E2D,
+ GL_TRANSPOSE_PROGRAM_MATRIX_EXT = 0x00008E2E,
+ GL_PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x00008E2F,
+ GL_TEXTURE_SWIZZLE_R = 0x00008E42,
+ GL_TEXTURE_SWIZZLE_R_EXT = 0x00008E42,
+ GL_TEXTURE_SWIZZLE_G = 0x00008E43,
+ GL_TEXTURE_SWIZZLE_G_EXT = 0x00008E43,
+ GL_TEXTURE_SWIZZLE_B = 0x00008E44,
+ GL_TEXTURE_SWIZZLE_B_EXT = 0x00008E44,
+ GL_TEXTURE_SWIZZLE_A = 0x00008E45,
+ GL_TEXTURE_SWIZZLE_A_EXT = 0x00008E45,
+ GL_TEXTURE_SWIZZLE_RGBA = 0x00008E46,
+ GL_TEXTURE_SWIZZLE_RGBA_EXT = 0x00008E46,
+ GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x00008E47,
+ GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 0x00008E48,
+ GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x00008E49,
+ GL_NUM_COMPATIBLE_SUBROUTINES = 0x00008E4A,
+ GL_COMPATIBLE_SUBROUTINES = 0x00008E4B,
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x00008E4C,
+ GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x00008E4C,
+ GL_FIRST_VERTEX_CONVENTION = 0x00008E4D,
+ GL_FIRST_VERTEX_CONVENTION_EXT = 0x00008E4D,
+ GL_FIRST_VERTEX_CONVENTION_OES = 0x00008E4D,
+ GL_LAST_VERTEX_CONVENTION = 0x00008E4E,
+ GL_LAST_VERTEX_CONVENTION_EXT = 0x00008E4E,
+ GL_LAST_VERTEX_CONVENTION_OES = 0x00008E4E,
+ GL_PROVOKING_VERTEX = 0x00008E4F,
+ GL_PROVOKING_VERTEX_EXT = 0x00008E4F,
+ GL_SAMPLE_POSITION = 0x00008E50,
+ GL_SAMPLE_POSITION_NV = 0x00008E50,
+ GL_SAMPLE_LOCATION_NV = 0x00008E50,
+ GL_SAMPLE_MASK = 0x00008E51,
+ GL_SAMPLE_MASK_NV = 0x00008E51,
+ GL_SAMPLE_MASK_VALUE = 0x00008E52,
+ GL_SAMPLE_MASK_VALUE_NV = 0x00008E52,
+ GL_TEXTURE_BINDING_RENDERBUFFER_NV = 0x00008E53,
+ GL_TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x00008E54,
+ GL_TEXTURE_RENDERBUFFER_NV = 0x00008E55,
+ GL_SAMPLER_RENDERBUFFER_NV = 0x00008E56,
+ GL_INT_SAMPLER_RENDERBUFFER_NV = 0x00008E57,
+ GL_UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x00008E58,
+ GL_MAX_SAMPLE_MASK_WORDS = 0x00008E59,
+ GL_MAX_SAMPLE_MASK_WORDS_NV = 0x00008E59,
+ GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV = 0x00008E5A,
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 0x00008E5A,
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT = 0x00008E5A,
+ GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES = 0x00008E5A,
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x00008E5B,
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x00008E5B,
+ GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x00008E5B,
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x00008E5C,
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES = 0x00008E5C,
+ GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV = 0x00008E5C,
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x00008E5D,
+ GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES = 0x00008E5D,
+ GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV = 0x00008E5D,
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x00008E5E,
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x00008E5E,
+ GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x00008E5E,
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x00008E5F,
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x00008E5F,
+ GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_NV = 0x00008E5F,
+ GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x00008E70,
+ GL_MAX_VERTEX_STREAMS = 0x00008E71,
+ GL_PATCH_VERTICES = 0x00008E72,
+ GL_PATCH_VERTICES_EXT = 0x00008E72,
+ GL_PATCH_VERTICES_OES = 0x00008E72,
+ GL_PATCH_DEFAULT_INNER_LEVEL = 0x00008E73,
+ GL_PATCH_DEFAULT_INNER_LEVEL_EXT = 0x00008E73,
+ GL_PATCH_DEFAULT_OUTER_LEVEL = 0x00008E74,
+ GL_PATCH_DEFAULT_OUTER_LEVEL_EXT = 0x00008E74,
+ GL_TESS_CONTROL_OUTPUT_VERTICES = 0x00008E75,
+ GL_TESS_CONTROL_OUTPUT_VERTICES_EXT = 0x00008E75,
+ GL_TESS_CONTROL_OUTPUT_VERTICES_OES = 0x00008E75,
+ GL_TESS_GEN_MODE = 0x00008E76,
+ GL_TESS_GEN_MODE_EXT = 0x00008E76,
+ GL_TESS_GEN_MODE_OES = 0x00008E76,
+ GL_TESS_GEN_SPACING = 0x00008E77,
+ GL_TESS_GEN_SPACING_EXT = 0x00008E77,
+ GL_TESS_GEN_SPACING_OES = 0x00008E77,
+ GL_TESS_GEN_VERTEX_ORDER = 0x00008E78,
+ GL_TESS_GEN_VERTEX_ORDER_EXT = 0x00008E78,
+ GL_TESS_GEN_VERTEX_ORDER_OES = 0x00008E78,
+ GL_TESS_GEN_POINT_MODE = 0x00008E79,
+ GL_TESS_GEN_POINT_MODE_EXT = 0x00008E79,
+ GL_TESS_GEN_POINT_MODE_OES = 0x00008E79,
+ GL_ISOLINES = 0x00008E7A,
+ GL_ISOLINES_EXT = 0x00008E7A,
+ GL_ISOLINES_OES = 0x00008E7A,
+ GL_FRACTIONAL_ODD = 0x00008E7B,
+ GL_FRACTIONAL_ODD_EXT = 0x00008E7B,
+ GL_FRACTIONAL_ODD_OES = 0x00008E7B,
+ GL_FRACTIONAL_EVEN = 0x00008E7C,
+ GL_FRACTIONAL_EVEN_EXT = 0x00008E7C,
+ GL_FRACTIONAL_EVEN_OES = 0x00008E7C,
+ GL_MAX_PATCH_VERTICES = 0x00008E7D,
+ GL_MAX_PATCH_VERTICES_EXT = 0x00008E7D,
+ GL_MAX_PATCH_VERTICES_OES = 0x00008E7D,
+ GL_MAX_TESS_GEN_LEVEL = 0x00008E7E,
+ GL_MAX_TESS_GEN_LEVEL_EXT = 0x00008E7E,
+ GL_MAX_TESS_GEN_LEVEL_OES = 0x00008E7E,
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x00008E7F,
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT = 0x00008E7F,
+ GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES = 0x00008E7F,
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x00008E80,
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT = 0x00008E80,
+ GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES = 0x00008E80,
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x00008E81,
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT = 0x00008E81,
+ GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES = 0x00008E81,
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x00008E82,
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT = 0x00008E82,
+ GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES = 0x00008E82,
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x00008E83,
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT = 0x00008E83,
+ GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES = 0x00008E83,
+ GL_MAX_TESS_PATCH_COMPONENTS = 0x00008E84,
+ GL_MAX_TESS_PATCH_COMPONENTS_EXT = 0x00008E84,
+ GL_MAX_TESS_PATCH_COMPONENTS_OES = 0x00008E84,
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x00008E85,
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT = 0x00008E85,
+ GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES = 0x00008E85,
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x00008E86,
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT = 0x00008E86,
+ GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES = 0x00008E86,
+ GL_TESS_EVALUATION_SHADER = 0x00008E87,
+ GL_TESS_EVALUATION_SHADER_EXT = 0x00008E87,
+ GL_TESS_EVALUATION_SHADER_OES = 0x00008E87,
+ GL_TESS_CONTROL_SHADER = 0x00008E88,
+ GL_TESS_CONTROL_SHADER_EXT = 0x00008E88,
+ GL_TESS_CONTROL_SHADER_OES = 0x00008E88,
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x00008E89,
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT = 0x00008E89,
+ GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES = 0x00008E89,
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x00008E8A,
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT = 0x00008E8A,
+ GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES = 0x00008E8A,
+ GL_COMPRESSED_RGBA_BPTC_UNORM = 0x00008E8C,
+ GL_COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x00008E8C,
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM = 0x00008E8D,
+ GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x00008E8D,
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT = 0x00008E8E,
+ GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x00008E8E,
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT = 0x00008E8F,
+ GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x00008E8F,
+ GL_COVERAGE_COMPONENT_NV = 0x00008ED0,
+ GL_COVERAGE_COMPONENT4_NV = 0x00008ED1,
+ GL_COVERAGE_ATTACHMENT_NV = 0x00008ED2,
+ GL_COVERAGE_BUFFERS_NV = 0x00008ED3,
+ GL_COVERAGE_SAMPLES_NV = 0x00008ED4,
+ GL_COVERAGE_ALL_FRAGMENTS_NV = 0x00008ED5,
+ GL_COVERAGE_EDGE_FRAGMENTS_NV = 0x00008ED6,
+ GL_COVERAGE_AUTOMATIC_NV = 0x00008ED7,
+ GL_BUFFER_GPU_ADDRESS_NV = 0x00008F1D,
+ GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x00008F1E,
+ GL_ELEMENT_ARRAY_UNIFIED_NV = 0x00008F1F,
+ GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x00008F20,
+ GL_VERTEX_ARRAY_ADDRESS_NV = 0x00008F21,
+ GL_NORMAL_ARRAY_ADDRESS_NV = 0x00008F22,
+ GL_COLOR_ARRAY_ADDRESS_NV = 0x00008F23,
+ GL_INDEX_ARRAY_ADDRESS_NV = 0x00008F24,
+ GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x00008F25,
+ GL_EDGE_FLAG_ARRAY_ADDRESS_NV = 0x00008F26,
+ GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x00008F27,
+ GL_FOG_COORD_ARRAY_ADDRESS_NV = 0x00008F28,
+ GL_ELEMENT_ARRAY_ADDRESS_NV = 0x00008F29,
+ GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x00008F2A,
+ GL_VERTEX_ARRAY_LENGTH_NV = 0x00008F2B,
+ GL_NORMAL_ARRAY_LENGTH_NV = 0x00008F2C,
+ GL_COLOR_ARRAY_LENGTH_NV = 0x00008F2D,
+ GL_INDEX_ARRAY_LENGTH_NV = 0x00008F2E,
+ GL_TEXTURE_COORD_ARRAY_LENGTH_NV = 0x00008F2F,
+ GL_EDGE_FLAG_ARRAY_LENGTH_NV = 0x00008F30,
+ GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x00008F31,
+ GL_FOG_COORD_ARRAY_LENGTH_NV = 0x00008F32,
+ GL_ELEMENT_ARRAY_LENGTH_NV = 0x00008F33,
+ GL_GPU_ADDRESS_NV = 0x00008F34,
+ GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x00008F35,
+ GL_COPY_READ_BUFFER = 0x00008F36,
+ GL_COPY_READ_BUFFER_NV = 0x00008F36,
+ GL_COPY_READ_BUFFER_BINDING = 0x00008F36,
+ GL_COPY_WRITE_BUFFER = 0x00008F37,
+ GL_COPY_WRITE_BUFFER_NV = 0x00008F37,
+ GL_COPY_WRITE_BUFFER_BINDING = 0x00008F37,
+ GL_MAX_IMAGE_UNITS = 0x00008F38,
+ GL_MAX_IMAGE_UNITS_EXT = 0x00008F38,
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS = 0x00008F39,
+ GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT = 0x00008F39,
+ GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES = 0x00008F39,
+ GL_IMAGE_BINDING_NAME = 0x00008F3A,
+ GL_IMAGE_BINDING_NAME_EXT = 0x00008F3A,
+ GL_IMAGE_BINDING_LEVEL = 0x00008F3B,
+ GL_IMAGE_BINDING_LEVEL_EXT = 0x00008F3B,
+ GL_IMAGE_BINDING_LAYERED = 0x00008F3C,
+ GL_IMAGE_BINDING_LAYERED_EXT = 0x00008F3C,
+ GL_IMAGE_BINDING_LAYER = 0x00008F3D,
+ GL_IMAGE_BINDING_LAYER_EXT = 0x00008F3D,
+ GL_IMAGE_BINDING_ACCESS = 0x00008F3E,
+ GL_IMAGE_BINDING_ACCESS_EXT = 0x00008F3E,
+ GL_DRAW_INDIRECT_BUFFER = 0x00008F3F,
+ GL_DRAW_INDIRECT_UNIFIED_NV = 0x00008F40,
+ GL_DRAW_INDIRECT_ADDRESS_NV = 0x00008F41,
+ GL_DRAW_INDIRECT_LENGTH_NV = 0x00008F42,
+ GL_DRAW_INDIRECT_BUFFER_BINDING = 0x00008F43,
+ GL_MAX_PROGRAM_SUBROUTINE_PARAMETERS_NV = 0x00008F44,
+ GL_MAX_PROGRAM_SUBROUTINE_NUM_NV = 0x00008F45,
+ GL_DOUBLE_MAT2 = 0x00008F46,
+ GL_DOUBLE_MAT2_EXT = 0x00008F46,
+ GL_DOUBLE_MAT3 = 0x00008F47,
+ GL_DOUBLE_MAT3_EXT = 0x00008F47,
+ GL_DOUBLE_MAT4 = 0x00008F48,
+ GL_DOUBLE_MAT4_EXT = 0x00008F48,
+ GL_DOUBLE_MAT2x3 = 0x00008F49,
+ GL_DOUBLE_MAT2x3_EXT = 0x00008F49,
+ GL_DOUBLE_MAT2x4 = 0x00008F4A,
+ GL_DOUBLE_MAT2x4_EXT = 0x00008F4A,
+ GL_DOUBLE_MAT3x2 = 0x00008F4B,
+ GL_DOUBLE_MAT3x2_EXT = 0x00008F4B,
+ GL_DOUBLE_MAT3x4 = 0x00008F4C,
+ GL_DOUBLE_MAT3x4_EXT = 0x00008F4C,
+ GL_DOUBLE_MAT4x2 = 0x00008F4D,
+ GL_DOUBLE_MAT4x2_EXT = 0x00008F4D,
+ GL_DOUBLE_MAT4x3 = 0x00008F4E,
+ GL_DOUBLE_MAT4x3_EXT = 0x00008F4E,
+ GL_VERTEX_BINDING_BUFFER = 0x00008F4F,
+ GL_MALI_SHADER_BINARY_ARM = 0x00008F60,
+ GL_MALI_PROGRAM_BINARY_ARM = 0x00008F61,
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT = 0x00008F63,
+ GL_SHADER_PIXEL_LOCAL_STORAGE_EXT = 0x00008F64,
+ GL_FETCH_PER_SAMPLE_ARM = 0x00008F65,
+ GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM = 0x00008F66,
+ GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT = 0x00008F67,
+ GL_RED_SNORM = 0x00008F90,
+ GL_RG_SNORM = 0x00008F91,
+ GL_RGB_SNORM = 0x00008F92,
+ GL_RGBA_SNORM = 0x00008F93,
+ GL_R8_SNORM = 0x00008F94,
+ GL_RG8_SNORM = 0x00008F95,
+ GL_RGB8_SNORM = 0x00008F96,
+ GL_RGBA8_SNORM = 0x00008F97,
+ GL_R16_SNORM = 0x00008F98,
+ GL_R16_SNORM_EXT = 0x00008F98,
+ GL_RG16_SNORM = 0x00008F99,
+ GL_RG16_SNORM_EXT = 0x00008F99,
+ GL_RGB16_SNORM = 0x00008F9A,
+ GL_RGB16_SNORM_EXT = 0x00008F9A,
+ GL_RGBA16_SNORM = 0x00008F9B,
+ GL_RGBA16_SNORM_EXT = 0x00008F9B,
+ GL_SIGNED_NORMALIZED = 0x00008F9C,
+ GL_PRIMITIVE_RESTART = 0x00008F9D,
+ GL_PRIMITIVE_RESTART_INDEX = 0x00008F9E,
+ GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS_ARB = 0x00008F9F,
+ GL_PERFMON_GLOBAL_MODE_QCOM = 0x00008FA0,
+ GL_BINNING_CONTROL_HINT_QCOM = 0x00008FB0,
+ GL_CPU_OPTIMIZED_QCOM = 0x00008FB1,
+ GL_GPU_OPTIMIZED_QCOM = 0x00008FB2,
+ GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = 0x00008FB3,
+ GL_GPU_DISJOINT_EXT = 0x00008FBB,
+ GL_SR8_EXT = 0x00008FBD,
+ GL_SRG8_EXT = 0x00008FBE,
+ GL_SHADER_BINARY_VIV = 0x00008FC4,
+ GL_INT8_NV = 0x00008FE0,
+ GL_INT8_VEC2_NV = 0x00008FE1,
+ GL_INT8_VEC3_NV = 0x00008FE2,
+ GL_INT8_VEC4_NV = 0x00008FE3,
+ GL_INT16_NV = 0x00008FE4,
+ GL_INT16_VEC2_NV = 0x00008FE5,
+ GL_INT16_VEC3_NV = 0x00008FE6,
+ GL_INT16_VEC4_NV = 0x00008FE7,
+ GL_INT64_VEC2_NV = 0x00008FE9,
+ GL_INT64_VEC3_NV = 0x00008FEA,
+ GL_INT64_VEC4_NV = 0x00008FEB,
+ GL_UNSIGNED_INT8_NV = 0x00008FEC,
+ GL_UNSIGNED_INT8_VEC2_NV = 0x00008FED,
+ GL_UNSIGNED_INT8_VEC3_NV = 0x00008FEE,
+ GL_UNSIGNED_INT8_VEC4_NV = 0x00008FEF,
+ GL_UNSIGNED_INT16_NV = 0x00008FF0,
+ GL_UNSIGNED_INT16_VEC2_NV = 0x00008FF1,
+ GL_UNSIGNED_INT16_VEC3_NV = 0x00008FF2,
+ GL_UNSIGNED_INT16_VEC4_NV = 0x00008FF3,
+ GL_UNSIGNED_INT64_VEC2_NV = 0x00008FF5,
+ GL_UNSIGNED_INT64_VEC3_NV = 0x00008FF6,
+ GL_UNSIGNED_INT64_VEC4_NV = 0x00008FF7,
+ GL_FLOAT16_NV = 0x00008FF8,
+ GL_FLOAT16_VEC2_NV = 0x00008FF9,
+ GL_FLOAT16_VEC3_NV = 0x00008FFA,
+ GL_FLOAT16_VEC4_NV = 0x00008FFB,
+ GL_DOUBLE_VEC2 = 0x00008FFC,
+ GL_DOUBLE_VEC2_EXT = 0x00008FFC,
+ GL_DOUBLE_VEC3 = 0x00008FFD,
+ GL_DOUBLE_VEC3_EXT = 0x00008FFD,
+ GL_DOUBLE_VEC4 = 0x00008FFE,
+ GL_DOUBLE_VEC4_EXT = 0x00008FFE,
+ GL_SAMPLER_BUFFER_AMD = 0x00009001,
+ GL_INT_SAMPLER_BUFFER_AMD = 0x00009002,
+ GL_UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x00009003,
+ GL_TESSELLATION_MODE_AMD = 0x00009004,
+ GL_TESSELLATION_FACTOR_AMD = 0x00009005,
+ GL_DISCRETE_AMD = 0x00009006,
+ GL_CONTINUOUS_AMD = 0x00009007,
+ GL_TEXTURE_CUBE_MAP_ARRAY = 0x00009009,
+ GL_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x00009009,
+ GL_TEXTURE_CUBE_MAP_ARRAY_EXT = 0x00009009,
+ GL_TEXTURE_CUBE_MAP_ARRAY_OES = 0x00009009,
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x0000900A,
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_ARB = 0x0000900A,
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT = 0x0000900A,
+ GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES = 0x0000900A,
+ GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x0000900B,
+ GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB = 0x0000900B,
+ GL_SAMPLER_CUBE_MAP_ARRAY = 0x0000900C,
+ GL_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x0000900C,
+ GL_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x0000900C,
+ GL_SAMPLER_CUBE_MAP_ARRAY_OES = 0x0000900C,
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x0000900D,
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_ARB = 0x0000900D,
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT = 0x0000900D,
+ GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES = 0x0000900D,
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY = 0x0000900E,
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x0000900E,
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x0000900E,
+ GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES = 0x0000900E,
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x0000900F,
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_ARB = 0x0000900F,
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT = 0x0000900F,
+ GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES = 0x0000900F,
+ GL_ALPHA_SNORM = 0x00009010,
+ GL_LUMINANCE_SNORM = 0x00009011,
+ GL_LUMINANCE_ALPHA_SNORM = 0x00009012,
+ GL_INTENSITY_SNORM = 0x00009013,
+ GL_ALPHA8_SNORM = 0x00009014,
+ GL_LUMINANCE8_SNORM = 0x00009015,
+ GL_LUMINANCE8_ALPHA8_SNORM = 0x00009016,
+ GL_INTENSITY8_SNORM = 0x00009017,
+ GL_ALPHA16_SNORM = 0x00009018,
+ GL_LUMINANCE16_SNORM = 0x00009019,
+ GL_LUMINANCE16_ALPHA16_SNORM = 0x0000901A,
+ GL_INTENSITY16_SNORM = 0x0000901B,
+ GL_FACTOR_MIN_AMD = 0x0000901C,
+ GL_FACTOR_MAX_AMD = 0x0000901D,
+ GL_DEPTH_CLAMP_NEAR_AMD = 0x0000901E,
+ GL_DEPTH_CLAMP_FAR_AMD = 0x0000901F,
+ GL_VIDEO_BUFFER_NV = 0x00009020,
+ GL_VIDEO_BUFFER_BINDING_NV = 0x00009021,
+ GL_FIELD_UPPER_NV = 0x00009022,
+ GL_FIELD_LOWER_NV = 0x00009023,
+ GL_NUM_VIDEO_CAPTURE_STREAMS_NV = 0x00009024,
+ GL_NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x00009025,
+ GL_VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x00009026,
+ GL_LAST_VIDEO_CAPTURE_STATUS_NV = 0x00009027,
+ GL_VIDEO_BUFFER_PITCH_NV = 0x00009028,
+ GL_VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x00009029,
+ GL_VIDEO_COLOR_CONVERSION_MAX_NV = 0x0000902A,
+ GL_VIDEO_COLOR_CONVERSION_MIN_NV = 0x0000902B,
+ GL_VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x0000902C,
+ GL_VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x0000902D,
+ GL_PARTIAL_SUCCESS_NV = 0x0000902E,
+ GL_SUCCESS_NV = 0x0000902F,
+ GL_FAILURE_NV = 0x00009030,
+ GL_YCBYCR8_422_NV = 0x00009031,
+ GL_YCBAYCR8A_4224_NV = 0x00009032,
+ GL_Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x00009033,
+ GL_Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x00009034,
+ GL_Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x00009035,
+ GL_Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x00009036,
+ GL_Z4Y12Z4CB12Z4CR12_444_NV = 0x00009037,
+ GL_VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x00009038,
+ GL_VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x00009039,
+ GL_VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x0000903A,
+ GL_VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x0000903B,
+ GL_VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x0000903C,
+ GL_TEXTURE_COVERAGE_SAMPLES_NV = 0x00009045,
+ GL_TEXTURE_COLOR_SAMPLES_NV = 0x00009046,
+ GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX = 0x00009047,
+ GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX = 0x00009048,
+ GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX = 0x00009049,
+ GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX = 0x0000904A,
+ GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX = 0x0000904B,
+ GL_IMAGE_1D = 0x0000904C,
+ GL_IMAGE_1D_EXT = 0x0000904C,
+ GL_IMAGE_2D = 0x0000904D,
+ GL_IMAGE_2D_EXT = 0x0000904D,
+ GL_IMAGE_3D = 0x0000904E,
+ GL_IMAGE_3D_EXT = 0x0000904E,
+ GL_IMAGE_2D_RECT = 0x0000904F,
+ GL_IMAGE_2D_RECT_EXT = 0x0000904F,
+ GL_IMAGE_CUBE = 0x00009050,
+ GL_IMAGE_CUBE_EXT = 0x00009050,
+ GL_IMAGE_BUFFER = 0x00009051,
+ GL_IMAGE_BUFFER_EXT = 0x00009051,
+ GL_IMAGE_BUFFER_OES = 0x00009051,
+ GL_IMAGE_1D_ARRAY = 0x00009052,
+ GL_IMAGE_1D_ARRAY_EXT = 0x00009052,
+ GL_IMAGE_2D_ARRAY = 0x00009053,
+ GL_IMAGE_2D_ARRAY_EXT = 0x00009053,
+ GL_IMAGE_CUBE_MAP_ARRAY = 0x00009054,
+ GL_IMAGE_CUBE_MAP_ARRAY_EXT = 0x00009054,
+ GL_IMAGE_CUBE_MAP_ARRAY_OES = 0x00009054,
+ GL_IMAGE_2D_MULTISAMPLE = 0x00009055,
+ GL_IMAGE_2D_MULTISAMPLE_EXT = 0x00009055,
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY = 0x00009056,
+ GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x00009056,
+ GL_INT_IMAGE_1D = 0x00009057,
+ GL_INT_IMAGE_1D_EXT = 0x00009057,
+ GL_INT_IMAGE_2D = 0x00009058,
+ GL_INT_IMAGE_2D_EXT = 0x00009058,
+ GL_INT_IMAGE_3D = 0x00009059,
+ GL_INT_IMAGE_3D_EXT = 0x00009059,
+ GL_INT_IMAGE_2D_RECT = 0x0000905A,
+ GL_INT_IMAGE_2D_RECT_EXT = 0x0000905A,
+ GL_INT_IMAGE_CUBE = 0x0000905B,
+ GL_INT_IMAGE_CUBE_EXT = 0x0000905B,
+ GL_INT_IMAGE_BUFFER = 0x0000905C,
+ GL_INT_IMAGE_BUFFER_EXT = 0x0000905C,
+ GL_INT_IMAGE_BUFFER_OES = 0x0000905C,
+ GL_INT_IMAGE_1D_ARRAY = 0x0000905D,
+ GL_INT_IMAGE_1D_ARRAY_EXT = 0x0000905D,
+ GL_INT_IMAGE_2D_ARRAY = 0x0000905E,
+ GL_INT_IMAGE_2D_ARRAY_EXT = 0x0000905E,
+ GL_INT_IMAGE_CUBE_MAP_ARRAY = 0x0000905F,
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x0000905F,
+ GL_INT_IMAGE_CUBE_MAP_ARRAY_OES = 0x0000905F,
+ GL_INT_IMAGE_2D_MULTISAMPLE = 0x00009060,
+ GL_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x00009060,
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x00009061,
+ GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x00009061,
+ GL_UNSIGNED_INT_IMAGE_1D = 0x00009062,
+ GL_UNSIGNED_INT_IMAGE_1D_EXT = 0x00009062,
+ GL_UNSIGNED_INT_IMAGE_2D = 0x00009063,
+ GL_UNSIGNED_INT_IMAGE_2D_EXT = 0x00009063,
+ GL_UNSIGNED_INT_IMAGE_3D = 0x00009064,
+ GL_UNSIGNED_INT_IMAGE_3D_EXT = 0x00009064,
+ GL_UNSIGNED_INT_IMAGE_2D_RECT = 0x00009065,
+ GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT = 0x00009065,
+ GL_UNSIGNED_INT_IMAGE_CUBE = 0x00009066,
+ GL_UNSIGNED_INT_IMAGE_CUBE_EXT = 0x00009066,
+ GL_UNSIGNED_INT_IMAGE_BUFFER = 0x00009067,
+ GL_UNSIGNED_INT_IMAGE_BUFFER_EXT = 0x00009067,
+ GL_UNSIGNED_INT_IMAGE_BUFFER_OES = 0x00009067,
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY = 0x00009068,
+ GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT = 0x00009068,
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY = 0x00009069,
+ GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT = 0x00009069,
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY = 0x0000906A,
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT = 0x0000906A,
+ GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES = 0x0000906A,
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE = 0x0000906B,
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT = 0x0000906B,
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY = 0x0000906C,
+ GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT = 0x0000906C,
+ GL_MAX_IMAGE_SAMPLES = 0x0000906D,
+ GL_MAX_IMAGE_SAMPLES_EXT = 0x0000906D,
+ GL_IMAGE_BINDING_FORMAT = 0x0000906E,
+ GL_IMAGE_BINDING_FORMAT_EXT = 0x0000906E,
+ GL_RGB10_A2UI = 0x0000906F,
+ GL_PATH_FORMAT_SVG_NV = 0x00009070,
+ GL_PATH_FORMAT_PS_NV = 0x00009071,
+ GL_STANDARD_FONT_NAME_NV = 0x00009072,
+ GL_SYSTEM_FONT_NAME_NV = 0x00009073,
+ GL_FILE_NAME_NV = 0x00009074,
+ GL_PATH_STROKE_WIDTH_NV = 0x00009075,
+ GL_PATH_END_CAPS_NV = 0x00009076,
+ GL_PATH_INITIAL_END_CAP_NV = 0x00009077,
+ GL_PATH_TERMINAL_END_CAP_NV = 0x00009078,
+ GL_PATH_JOIN_STYLE_NV = 0x00009079,
+ GL_PATH_MITER_LIMIT_NV = 0x0000907A,
+ GL_PATH_DASH_CAPS_NV = 0x0000907B,
+ GL_PATH_INITIAL_DASH_CAP_NV = 0x0000907C,
+ GL_PATH_TERMINAL_DASH_CAP_NV = 0x0000907D,
+ GL_PATH_DASH_OFFSET_NV = 0x0000907E,
+ GL_PATH_CLIENT_LENGTH_NV = 0x0000907F,
+ GL_PATH_FILL_MODE_NV = 0x00009080,
+ GL_PATH_FILL_MASK_NV = 0x00009081,
+ GL_PATH_FILL_COVER_MODE_NV = 0x00009082,
+ GL_PATH_STROKE_COVER_MODE_NV = 0x00009083,
+ GL_PATH_STROKE_MASK_NV = 0x00009084,
+ GL_COUNT_UP_NV = 0x00009088,
+ GL_COUNT_DOWN_NV = 0x00009089,
+ GL_PATH_OBJECT_BOUNDING_BOX_NV = 0x0000908A,
+ GL_CONVEX_HULL_NV = 0x0000908B,
+ GL_BOUNDING_BOX_NV = 0x0000908D,
+ GL_TRANSLATE_X_NV = 0x0000908E,
+ GL_TRANSLATE_Y_NV = 0x0000908F,
+ GL_TRANSLATE_2D_NV = 0x00009090,
+ GL_TRANSLATE_3D_NV = 0x00009091,
+ GL_AFFINE_2D_NV = 0x00009092,
+ GL_AFFINE_3D_NV = 0x00009094,
+ GL_TRANSPOSE_AFFINE_2D_NV = 0x00009096,
+ GL_TRANSPOSE_AFFINE_3D_NV = 0x00009098,
+ GL_UTF8_NV = 0x0000909A,
+ GL_UTF16_NV = 0x0000909B,
+ GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV = 0x0000909C,
+ GL_PATH_COMMAND_COUNT_NV = 0x0000909D,
+ GL_PATH_COORD_COUNT_NV = 0x0000909E,
+ GL_PATH_DASH_ARRAY_COUNT_NV = 0x0000909F,
+ GL_PATH_COMPUTED_LENGTH_NV = 0x000090A0,
+ GL_PATH_FILL_BOUNDING_BOX_NV = 0x000090A1,
+ GL_PATH_STROKE_BOUNDING_BOX_NV = 0x000090A2,
+ GL_SQUARE_NV = 0x000090A3,
+ GL_ROUND_NV = 0x000090A4,
+ GL_TRIANGULAR_NV = 0x000090A5,
+ GL_BEVEL_NV = 0x000090A6,
+ GL_MITER_REVERT_NV = 0x000090A7,
+ GL_MITER_TRUNCATE_NV = 0x000090A8,
+ GL_SKIP_MISSING_GLYPH_NV = 0x000090A9,
+ GL_USE_MISSING_GLYPH_NV = 0x000090AA,
+ GL_PATH_ERROR_POSITION_NV = 0x000090AB,
+ GL_PATH_FOG_GEN_MODE_NV = 0x000090AC,
+ GL_ACCUM_ADJACENT_PAIRS_NV = 0x000090AD,
+ GL_ADJACENT_PAIRS_NV = 0x000090AE,
+ GL_FIRST_TO_REST_NV = 0x000090AF,
+ GL_PATH_GEN_MODE_NV = 0x000090B0,
+ GL_PATH_GEN_COEFF_NV = 0x000090B1,
+ GL_PATH_GEN_COLOR_FORMAT_NV = 0x000090B2,
+ GL_PATH_GEN_COMPONENTS_NV = 0x000090B3,
+ GL_PATH_DASH_OFFSET_RESET_NV = 0x000090B4,
+ GL_MOVE_TO_RESETS_NV = 0x000090B5,
+ GL_MOVE_TO_CONTINUES_NV = 0x000090B6,
+ GL_PATH_STENCIL_FUNC_NV = 0x000090B7,
+ GL_PATH_STENCIL_REF_NV = 0x000090B8,
+ GL_PATH_STENCIL_VALUE_MASK_NV = 0x000090B9,
+ GL_SCALED_RESOLVE_FASTEST_EXT = 0x000090BA,
+ GL_SCALED_RESOLVE_NICEST_EXT = 0x000090BB,
+ GL_MIN_MAP_BUFFER_ALIGNMENT = 0x000090BC,
+ GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV = 0x000090BD,
+ GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV = 0x000090BE,
+ GL_PATH_COVER_DEPTH_FUNC_NV = 0x000090BF,
+ GL_IMAGE_FORMAT_COMPATIBILITY_TYPE = 0x000090C7,
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE = 0x000090C8,
+ GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS = 0x000090C9,
+ GL_MAX_VERTEX_IMAGE_UNIFORMS = 0x000090CA,
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS = 0x000090CB,
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT = 0x000090CB,
+ GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES = 0x000090CB,
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS = 0x000090CC,
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT = 0x000090CC,
+ GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES = 0x000090CC,
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS = 0x000090CD,
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT = 0x000090CD,
+ GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES = 0x000090CD,
+ GL_MAX_FRAGMENT_IMAGE_UNIFORMS = 0x000090CE,
+ GL_MAX_COMBINED_IMAGE_UNIFORMS = 0x000090CF,
+ GL_MAX_DEEP_3D_TEXTURE_WIDTH_HEIGHT_NV = 0x000090D0,
+ GL_MAX_DEEP_3D_TEXTURE_DEPTH_NV = 0x000090D1,
+ GL_SHADER_STORAGE_BUFFER = 0x000090D2,
+ GL_SHADER_STORAGE_BUFFER_BINDING = 0x000090D3,
+ GL_SHADER_STORAGE_BUFFER_START = 0x000090D4,
+ GL_SHADER_STORAGE_BUFFER_SIZE = 0x000090D5,
+ GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS = 0x000090D6,
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS = 0x000090D7,
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT = 0x000090D7,
+ GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES = 0x000090D7,
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS = 0x000090D8,
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT = 0x000090D8,
+ GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES = 0x000090D8,
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS = 0x000090D9,
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT = 0x000090D9,
+ GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES = 0x000090D9,
+ GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS = 0x000090DA,
+ GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS = 0x000090DB,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS = 0x000090DC,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS = 0x000090DD,
+ GL_MAX_SHADER_STORAGE_BLOCK_SIZE = 0x000090DE,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT = 0x000090DF,
+ GL_SYNC_X11_FENCE_EXT = 0x000090E1,
+ GL_DEPTH_STENCIL_TEXTURE_MODE = 0x000090EA,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 0x000090EB,
+ GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = 0x000090EB,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_COMPUTE_SHADER = 0x000090EC,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER = 0x000090ED,
+ GL_DISPATCH_INDIRECT_BUFFER = 0x000090EE,
+ GL_DISPATCH_INDIRECT_BUFFER_BINDING = 0x000090EF,
+ GL_COLOR_ATTACHMENT_EXT = 0x000090F0,
+ GL_MULTIVIEW_EXT = 0x000090F1,
+ GL_MAX_MULTIVIEW_BUFFERS_EXT = 0x000090F2,
+ GL_CONTEXT_ROBUST_ACCESS = 0x000090F3,
+ GL_CONTEXT_ROBUST_ACCESS_EXT = 0x000090F3,
+ GL_CONTEXT_ROBUST_ACCESS_KHR = 0x000090F3,
+ GL_COMPUTE_PROGRAM_NV = 0x000090FB,
+ GL_COMPUTE_PROGRAM_PARAMETER_BUFFER_NV = 0x000090FC,
+ GL_TEXTURE_2D_MULTISAMPLE = 0x00009100,
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE = 0x00009101,
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x00009102,
+ GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES = 0x00009102,
+ GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x00009103,
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE = 0x00009104,
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x00009105,
+ GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES = 0x00009105,
+ GL_TEXTURE_SAMPLES = 0x00009106,
+ GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x00009107,
+ GL_SAMPLER_2D_MULTISAMPLE = 0x00009108,
+ GL_INT_SAMPLER_2D_MULTISAMPLE = 0x00009109,
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x0000910A,
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x0000910B,
+ GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x0000910B,
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x0000910C,
+ GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x0000910C,
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x0000910D,
+ GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES = 0x0000910D,
+ GL_MAX_COLOR_TEXTURE_SAMPLES = 0x0000910E,
+ GL_MAX_DEPTH_TEXTURE_SAMPLES = 0x0000910F,
+ GL_MAX_INTEGER_SAMPLES = 0x00009110,
+ GL_MAX_SERVER_WAIT_TIMEOUT = 0x00009111,
+ GL_MAX_SERVER_WAIT_TIMEOUT_APPLE = 0x00009111,
+ GL_OBJECT_TYPE = 0x00009112,
+ GL_OBJECT_TYPE_APPLE = 0x00009112,
+ GL_SYNC_CONDITION = 0x00009113,
+ GL_SYNC_CONDITION_APPLE = 0x00009113,
+ GL_SYNC_STATUS = 0x00009114,
+ GL_SYNC_STATUS_APPLE = 0x00009114,
+ GL_SYNC_FLAGS = 0x00009115,
+ GL_SYNC_FLAGS_APPLE = 0x00009115,
+ GL_SYNC_FENCE = 0x00009116,
+ GL_SYNC_FENCE_APPLE = 0x00009116,
+ GL_SYNC_GPU_COMMANDS_COMPLETE = 0x00009117,
+ GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x00009117,
+ GL_UNSIGNALED = 0x00009118,
+ GL_UNSIGNALED_APPLE = 0x00009118,
+ GL_SIGNALED = 0x00009119,
+ GL_SIGNALED_APPLE = 0x00009119,
+ GL_ALREADY_SIGNALED = 0x0000911A,
+ GL_ALREADY_SIGNALED_APPLE = 0x0000911A,
+ GL_TIMEOUT_EXPIRED = 0x0000911B,
+ GL_TIMEOUT_EXPIRED_APPLE = 0x0000911B,
+ GL_CONDITION_SATISFIED = 0x0000911C,
+ GL_CONDITION_SATISFIED_APPLE = 0x0000911C,
+ GL_WAIT_FAILED = 0x0000911D,
+ GL_WAIT_FAILED_APPLE = 0x0000911D,
+ GL_BUFFER_ACCESS_FLAGS = 0x0000911F,
+ GL_BUFFER_MAP_LENGTH = 0x00009120,
+ GL_BUFFER_MAP_OFFSET = 0x00009121,
+ GL_MAX_VERTEX_OUTPUT_COMPONENTS = 0x00009122,
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS = 0x00009123,
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT = 0x00009123,
+ GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES = 0x00009123,
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x00009124,
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT = 0x00009124,
+ GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES = 0x00009124,
+ GL_MAX_FRAGMENT_INPUT_COMPONENTS = 0x00009125,
+ GL_CONTEXT_PROFILE_MASK = 0x00009126,
+ GL_UNPACK_COMPRESSED_BLOCK_WIDTH = 0x00009127,
+ GL_UNPACK_COMPRESSED_BLOCK_HEIGHT = 0x00009128,
+ GL_UNPACK_COMPRESSED_BLOCK_DEPTH = 0x00009129,
+ GL_UNPACK_COMPRESSED_BLOCK_SIZE = 0x0000912A,
+ GL_PACK_COMPRESSED_BLOCK_WIDTH = 0x0000912B,
+ GL_PACK_COMPRESSED_BLOCK_HEIGHT = 0x0000912C,
+ GL_PACK_COMPRESSED_BLOCK_DEPTH = 0x0000912D,
+ GL_PACK_COMPRESSED_BLOCK_SIZE = 0x0000912E,
+ GL_TEXTURE_IMMUTABLE_FORMAT = 0x0000912F,
+ GL_TEXTURE_IMMUTABLE_FORMAT_EXT = 0x0000912F,
+ GL_SGX_PROGRAM_BINARY_IMG = 0x00009130,
+ GL_RENDERBUFFER_SAMPLES_IMG = 0x00009133,
+ GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x00009134,
+ GL_MAX_SAMPLES_IMG = 0x00009135,
+ GL_TEXTURE_SAMPLES_IMG = 0x00009136,
+ GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = 0x00009137,
+ GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = 0x00009138,
+ GL_MAX_DEBUG_MESSAGE_LENGTH = 0x00009143,
+ GL_MAX_DEBUG_MESSAGE_LENGTH_AMD = 0x00009143,
+ GL_MAX_DEBUG_MESSAGE_LENGTH_ARB = 0x00009143,
+ GL_MAX_DEBUG_MESSAGE_LENGTH_KHR = 0x00009143,
+ GL_MAX_DEBUG_LOGGED_MESSAGES = 0x00009144,
+ GL_MAX_DEBUG_LOGGED_MESSAGES_AMD = 0x00009144,
+ GL_MAX_DEBUG_LOGGED_MESSAGES_ARB = 0x00009144,
+ GL_MAX_DEBUG_LOGGED_MESSAGES_KHR = 0x00009144,
+ GL_DEBUG_LOGGED_MESSAGES = 0x00009145,
+ GL_DEBUG_LOGGED_MESSAGES_AMD = 0x00009145,
+ GL_DEBUG_LOGGED_MESSAGES_ARB = 0x00009145,
+ GL_DEBUG_LOGGED_MESSAGES_KHR = 0x00009145,
+ GL_DEBUG_SEVERITY_HIGH = 0x00009146,
+ GL_DEBUG_SEVERITY_HIGH_AMD = 0x00009146,
+ GL_DEBUG_SEVERITY_HIGH_ARB = 0x00009146,
+ GL_DEBUG_SEVERITY_HIGH_KHR = 0x00009146,
+ GL_DEBUG_SEVERITY_MEDIUM = 0x00009147,
+ GL_DEBUG_SEVERITY_MEDIUM_AMD = 0x00009147,
+ GL_DEBUG_SEVERITY_MEDIUM_ARB = 0x00009147,
+ GL_DEBUG_SEVERITY_MEDIUM_KHR = 0x00009147,
+ GL_DEBUG_SEVERITY_LOW = 0x00009148,
+ GL_DEBUG_SEVERITY_LOW_AMD = 0x00009148,
+ GL_DEBUG_SEVERITY_LOW_ARB = 0x00009148,
+ GL_DEBUG_SEVERITY_LOW_KHR = 0x00009148,
+ GL_DEBUG_CATEGORY_API_ERROR_AMD = 0x00009149,
+ GL_DEBUG_CATEGORY_WINDOW_SYSTEM_AMD = 0x0000914A,
+ GL_DEBUG_CATEGORY_DEPRECATION_AMD = 0x0000914B,
+ GL_DEBUG_CATEGORY_UNDEFINED_BEHAVIOR_AMD = 0x0000914C,
+ GL_DEBUG_CATEGORY_PERFORMANCE_AMD = 0x0000914D,
+ GL_DEBUG_CATEGORY_SHADER_COMPILER_AMD = 0x0000914E,
+ GL_DEBUG_CATEGORY_APPLICATION_AMD = 0x0000914F,
+ GL_DEBUG_CATEGORY_OTHER_AMD = 0x00009150,
+ GL_BUFFER_OBJECT_EXT = 0x00009151,
+ GL_DATA_BUFFER_AMD = 0x00009151,
+ GL_PERFORMANCE_MONITOR_AMD = 0x00009152,
+ GL_QUERY_OBJECT_AMD = 0x00009153,
+ GL_QUERY_OBJECT_EXT = 0x00009153,
+ GL_VERTEX_ARRAY_OBJECT_AMD = 0x00009154,
+ GL_VERTEX_ARRAY_OBJECT_EXT = 0x00009154,
+ GL_SAMPLER_OBJECT_AMD = 0x00009155,
+ GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD = 0x00009160,
+ GL_QUERY_BUFFER = 0x00009192,
+ GL_QUERY_BUFFER_AMD = 0x00009192,
+ GL_QUERY_BUFFER_BINDING = 0x00009193,
+ GL_QUERY_BUFFER_BINDING_AMD = 0x00009193,
+ GL_QUERY_RESULT_NO_WAIT = 0x00009194,
+ GL_QUERY_RESULT_NO_WAIT_AMD = 0x00009194,
+ GL_VIRTUAL_PAGE_SIZE_X_ARB = 0x00009195,
+ GL_VIRTUAL_PAGE_SIZE_X_EXT = 0x00009195,
+ GL_VIRTUAL_PAGE_SIZE_X_AMD = 0x00009195,
+ GL_VIRTUAL_PAGE_SIZE_Y_ARB = 0x00009196,
+ GL_VIRTUAL_PAGE_SIZE_Y_EXT = 0x00009196,
+ GL_VIRTUAL_PAGE_SIZE_Y_AMD = 0x00009196,
+ GL_VIRTUAL_PAGE_SIZE_Z_ARB = 0x00009197,
+ GL_VIRTUAL_PAGE_SIZE_Z_EXT = 0x00009197,
+ GL_VIRTUAL_PAGE_SIZE_Z_AMD = 0x00009197,
+ GL_MAX_SPARSE_TEXTURE_SIZE_ARB = 0x00009198,
+ GL_MAX_SPARSE_TEXTURE_SIZE_EXT = 0x00009198,
+ GL_MAX_SPARSE_TEXTURE_SIZE_AMD = 0x00009198,
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_ARB = 0x00009199,
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT = 0x00009199,
+ GL_MAX_SPARSE_3D_TEXTURE_SIZE_AMD = 0x00009199,
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS = 0x0000919A,
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_ARB = 0x0000919A,
+ GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT = 0x0000919A,
+ GL_MIN_SPARSE_LEVEL_AMD = 0x0000919B,
+ GL_MIN_LOD_WARNING_AMD = 0x0000919C,
+ GL_TEXTURE_BUFFER_OFFSET = 0x0000919D,
+ GL_TEXTURE_BUFFER_OFFSET_EXT = 0x0000919D,
+ GL_TEXTURE_BUFFER_OFFSET_OES = 0x0000919D,
+ GL_TEXTURE_BUFFER_SIZE = 0x0000919E,
+ GL_TEXTURE_BUFFER_SIZE_EXT = 0x0000919E,
+ GL_TEXTURE_BUFFER_SIZE_OES = 0x0000919E,
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT = 0x0000919F,
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT = 0x0000919F,
+ GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES = 0x0000919F,
+ GL_STREAM_RASTERIZATION_AMD = 0x000091A0,
+ GL_VERTEX_ELEMENT_SWIZZLE_AMD = 0x000091A4,
+ GL_VERTEX_ID_SWIZZLE_AMD = 0x000091A5,
+ GL_TEXTURE_SPARSE_ARB = 0x000091A6,
+ GL_TEXTURE_SPARSE_EXT = 0x000091A6,
+ GL_VIRTUAL_PAGE_SIZE_INDEX_ARB = 0x000091A7,
+ GL_VIRTUAL_PAGE_SIZE_INDEX_EXT = 0x000091A7,
+ GL_NUM_VIRTUAL_PAGE_SIZES_ARB = 0x000091A8,
+ GL_NUM_VIRTUAL_PAGE_SIZES_EXT = 0x000091A8,
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_ARB = 0x000091A9,
+ GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT = 0x000091A9,
+ GL_NUM_SPARSE_LEVELS_ARB = 0x000091AA,
+ GL_NUM_SPARSE_LEVELS_EXT = 0x000091AA,
+ GL_COMPUTE_SHADER = 0x000091B9,
+ GL_MAX_COMPUTE_UNIFORM_BLOCKS = 0x000091BB,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS = 0x000091BC,
+ GL_MAX_COMPUTE_IMAGE_UNIFORMS = 0x000091BD,
+ GL_MAX_COMPUTE_WORK_GROUP_COUNT = 0x000091BE,
+ GL_MAX_COMPUTE_WORK_GROUP_SIZE = 0x000091BF,
+ GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = 0x000091BF,
+ GL_UNPACK_FLIP_Y_WEBGL = 0x00009240,
+ GL_UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x00009241,
+ GL_CONTEXT_LOST_WEBGL = 0x00009242,
+ GL_UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x00009243,
+ GL_BROWSER_DEFAULT_WEBGL = 0x00009244,
+ GL_SHADER_BINARY_DMP = 0x00009250,
+ GL_SMAPHS30_PROGRAM_BINARY_DMP = 0x00009251,
+ GL_SMAPHS_PROGRAM_BINARY_DMP = 0x00009252,
+ GL_DMP_PROGRAM_BINARY_DMP = 0x00009253,
+ GL_GCCSO_SHADER_BINARY_FJ = 0x00009260,
+ GL_COMPRESSED_R11_EAC = 0x00009270,
+ GL_COMPRESSED_R11_EAC_OES = 0x00009270,
+ GL_COMPRESSED_SIGNED_R11_EAC = 0x00009271,
+ GL_COMPRESSED_SIGNED_R11_EAC_OES = 0x00009271,
+ GL_COMPRESSED_RG11_EAC = 0x00009272,
+ GL_COMPRESSED_RG11_EAC_OES = 0x00009272,
+ GL_COMPRESSED_SIGNED_RG11_EAC = 0x00009273,
+ GL_COMPRESSED_SIGNED_RG11_EAC_OES = 0x00009273,
+ GL_COMPRESSED_RGB8_ETC2 = 0x00009274,
+ GL_COMPRESSED_RGB8_ETC2_OES = 0x00009274,
+ GL_COMPRESSED_SRGB8_ETC2 = 0x00009275,
+ GL_COMPRESSED_SRGB8_ETC2_OES = 0x00009275,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x00009276,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = 0x00009276,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 0x00009277,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2_OES = 0x00009277,
+ GL_COMPRESSED_RGBA8_ETC2_EAC = 0x00009278,
+ GL_COMPRESSED_RGBA8_ETC2_EAC_OES = 0x00009278,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 0x00009279,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC_OES = 0x00009279,
+ GL_BLEND_PREMULTIPLIED_SRC_NV = 0x00009280,
+ GL_BLEND_OVERLAP_NV = 0x00009281,
+ GL_UNCORRELATED_NV = 0x00009282,
+ GL_DISJOINT_NV = 0x00009283,
+ GL_CONJOINT_NV = 0x00009284,
+ GL_BLEND_ADVANCED_COHERENT_KHR = 0x00009285,
+ GL_BLEND_ADVANCED_COHERENT_NV = 0x00009285,
+ GL_SRC_NV = 0x00009286,
+ GL_DST_NV = 0x00009287,
+ GL_SRC_OVER_NV = 0x00009288,
+ GL_DST_OVER_NV = 0x00009289,
+ GL_SRC_IN_NV = 0x0000928A,
+ GL_DST_IN_NV = 0x0000928B,
+ GL_SRC_OUT_NV = 0x0000928C,
+ GL_DST_OUT_NV = 0x0000928D,
+ GL_SRC_ATOP_NV = 0x0000928E,
+ GL_DST_ATOP_NV = 0x0000928F,
+ GL_PLUS_NV = 0x00009291,
+ GL_PLUS_DARKER_NV = 0x00009292,
+ GL_MULTIPLY_KHR = 0x00009294,
+ GL_MULTIPLY_NV = 0x00009294,
+ GL_SCREEN_KHR = 0x00009295,
+ GL_SCREEN_NV = 0x00009295,
+ GL_OVERLAY_KHR = 0x00009296,
+ GL_OVERLAY_NV = 0x00009296,
+ GL_DARKEN_KHR = 0x00009297,
+ GL_DARKEN_NV = 0x00009297,
+ GL_LIGHTEN_KHR = 0x00009298,
+ GL_LIGHTEN_NV = 0x00009298,
+ GL_COLORDODGE_KHR = 0x00009299,
+ GL_COLORDODGE_NV = 0x00009299,
+ GL_COLORBURN_KHR = 0x0000929A,
+ GL_COLORBURN_NV = 0x0000929A,
+ GL_HARDLIGHT_KHR = 0x0000929B,
+ GL_HARDLIGHT_NV = 0x0000929B,
+ GL_SOFTLIGHT_KHR = 0x0000929C,
+ GL_SOFTLIGHT_NV = 0x0000929C,
+ GL_DIFFERENCE_KHR = 0x0000929E,
+ GL_DIFFERENCE_NV = 0x0000929E,
+ GL_MINUS_NV = 0x0000929F,
+ GL_EXCLUSION_KHR = 0x000092A0,
+ GL_EXCLUSION_NV = 0x000092A0,
+ GL_CONTRAST_NV = 0x000092A1,
+ GL_INVERT_RGB_NV = 0x000092A3,
+ GL_LINEARDODGE_NV = 0x000092A4,
+ GL_LINEARBURN_NV = 0x000092A5,
+ GL_VIVIDLIGHT_NV = 0x000092A6,
+ GL_LINEARLIGHT_NV = 0x000092A7,
+ GL_PINLIGHT_NV = 0x000092A8,
+ GL_HARDMIX_NV = 0x000092A9,
+ GL_HSL_HUE_KHR = 0x000092AD,
+ GL_HSL_HUE_NV = 0x000092AD,
+ GL_HSL_SATURATION_KHR = 0x000092AE,
+ GL_HSL_SATURATION_NV = 0x000092AE,
+ GL_HSL_COLOR_KHR = 0x000092AF,
+ GL_HSL_COLOR_NV = 0x000092AF,
+ GL_HSL_LUMINOSITY_KHR = 0x000092B0,
+ GL_HSL_LUMINOSITY_NV = 0x000092B0,
+ GL_PLUS_CLAMPED_NV = 0x000092B1,
+ GL_PLUS_CLAMPED_ALPHA_NV = 0x000092B2,
+ GL_MINUS_CLAMPED_NV = 0x000092B3,
+ GL_INVERT_OVG_NV = 0x000092B4,
+ GL_PRIMITIVE_BOUNDING_BOX_EXT = 0x000092BE,
+ GL_PRIMITIVE_BOUNDING_BOX_OES = 0x000092BE,
+ GL_ATOMIC_COUNTER_BUFFER = 0x000092C0,
+ GL_ATOMIC_COUNTER_BUFFER_BINDING = 0x000092C1,
+ GL_ATOMIC_COUNTER_BUFFER_START = 0x000092C2,
+ GL_ATOMIC_COUNTER_BUFFER_SIZE = 0x000092C3,
+ GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE = 0x000092C4,
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS = 0x000092C5,
+ GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES = 0x000092C6,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER = 0x000092C7,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER = 0x000092C8,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x000092C9,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER = 0x000092CA,
+ GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER = 0x000092CB,
+ GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS = 0x000092CC,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS = 0x000092CD,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT = 0x000092CD,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES = 0x000092CD,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS = 0x000092CE,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT = 0x000092CE,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES = 0x000092CE,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS = 0x000092CF,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT = 0x000092CF,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES = 0x000092CF,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS = 0x000092D0,
+ GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS = 0x000092D1,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS = 0x000092D2,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS = 0x000092D3,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT = 0x000092D3,
+ GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES = 0x000092D3,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS = 0x000092D4,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT = 0x000092D4,
+ GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES = 0x000092D4,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS = 0x000092D5,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT = 0x000092D5,
+ GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES = 0x000092D5,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS = 0x000092D6,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS = 0x000092D7,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE = 0x000092D8,
+ GL_ACTIVE_ATOMIC_COUNTER_BUFFERS = 0x000092D9,
+ GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX = 0x000092DA,
+ GL_UNSIGNED_INT_ATOMIC_COUNTER = 0x000092DB,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS = 0x000092DC,
+ GL_FRAGMENT_COVERAGE_TO_COLOR_NV = 0x000092DD,
+ GL_FRAGMENT_COVERAGE_COLOR_NV = 0x000092DE,
+ GL_DEBUG_OUTPUT = 0x000092E0,
+ GL_DEBUG_OUTPUT_KHR = 0x000092E0,
+ GL_UNIFORM = 0x000092E1,
+ GL_UNIFORM_BLOCK = 0x000092E2,
+ GL_PROGRAM_INPUT = 0x000092E3,
+ GL_PROGRAM_OUTPUT = 0x000092E4,
+ GL_BUFFER_VARIABLE = 0x000092E5,
+ GL_SHADER_STORAGE_BLOCK = 0x000092E6,
+ GL_IS_PER_PATCH = 0x000092E7,
+ GL_IS_PER_PATCH_EXT = 0x000092E7,
+ GL_IS_PER_PATCH_OES = 0x000092E7,
+ GL_VERTEX_SUBROUTINE = 0x000092E8,
+ GL_TESS_CONTROL_SUBROUTINE = 0x000092E9,
+ GL_TESS_EVALUATION_SUBROUTINE = 0x000092EA,
+ GL_GEOMETRY_SUBROUTINE = 0x000092EB,
+ GL_FRAGMENT_SUBROUTINE = 0x000092EC,
+ GL_COMPUTE_SUBROUTINE = 0x000092ED,
+ GL_VERTEX_SUBROUTINE_UNIFORM = 0x000092EE,
+ GL_TESS_CONTROL_SUBROUTINE_UNIFORM = 0x000092EF,
+ GL_TESS_EVALUATION_SUBROUTINE_UNIFORM = 0x000092F0,
+ GL_GEOMETRY_SUBROUTINE_UNIFORM = 0x000092F1,
+ GL_FRAGMENT_SUBROUTINE_UNIFORM = 0x000092F2,
+ GL_COMPUTE_SUBROUTINE_UNIFORM = 0x000092F3,
+ GL_TRANSFORM_FEEDBACK_VARYING = 0x000092F4,
+ GL_ACTIVE_RESOURCES = 0x000092F5,
+ GL_MAX_NAME_LENGTH = 0x000092F6,
+ GL_MAX_NUM_ACTIVE_VARIABLES = 0x000092F7,
+ GL_MAX_NUM_COMPATIBLE_SUBROUTINES = 0x000092F8,
+ GL_NAME_LENGTH = 0x000092F9,
+ GL_TYPE = 0x000092FA,
+ GL_ARRAY_SIZE = 0x000092FB,
+ GL_OFFSET = 0x000092FC,
+ GL_BLOCK_INDEX = 0x000092FD,
+ GL_ARRAY_STRIDE = 0x000092FE,
+ GL_MATRIX_STRIDE = 0x000092FF,
+ GL_IS_ROW_MAJOR = 0x00009300,
+ GL_ATOMIC_COUNTER_BUFFER_INDEX = 0x00009301,
+ GL_BUFFER_BINDING = 0x00009302,
+ GL_BUFFER_DATA_SIZE = 0x00009303,
+ GL_NUM_ACTIVE_VARIABLES = 0x00009304,
+ GL_ACTIVE_VARIABLES = 0x00009305,
+ GL_REFERENCED_BY_VERTEX_SHADER = 0x00009306,
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER = 0x00009307,
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT = 0x00009307,
+ GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES = 0x00009307,
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x00009308,
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT = 0x00009308,
+ GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES = 0x00009308,
+ GL_REFERENCED_BY_GEOMETRY_SHADER = 0x00009309,
+ GL_REFERENCED_BY_GEOMETRY_SHADER_EXT = 0x00009309,
+ GL_REFERENCED_BY_GEOMETRY_SHADER_OES = 0x00009309,
+ GL_REFERENCED_BY_FRAGMENT_SHADER = 0x0000930A,
+ GL_REFERENCED_BY_COMPUTE_SHADER = 0x0000930B,
+ GL_TOP_LEVEL_ARRAY_SIZE = 0x0000930C,
+ GL_TOP_LEVEL_ARRAY_STRIDE = 0x0000930D,
+ GL_LOCATION = 0x0000930E,
+ GL_LOCATION_INDEX = 0x0000930F,
+ GL_FRAMEBUFFER_DEFAULT_WIDTH = 0x00009310,
+ GL_FRAMEBUFFER_DEFAULT_HEIGHT = 0x00009311,
+ GL_FRAMEBUFFER_DEFAULT_LAYERS = 0x00009312,
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT = 0x00009312,
+ GL_FRAMEBUFFER_DEFAULT_LAYERS_OES = 0x00009312,
+ GL_FRAMEBUFFER_DEFAULT_SAMPLES = 0x00009313,
+ GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS = 0x00009314,
+ GL_MAX_FRAMEBUFFER_WIDTH = 0x00009315,
+ GL_MAX_FRAMEBUFFER_HEIGHT = 0x00009316,
+ GL_MAX_FRAMEBUFFER_LAYERS = 0x00009317,
+ GL_MAX_FRAMEBUFFER_LAYERS_EXT = 0x00009317,
+ GL_MAX_FRAMEBUFFER_LAYERS_OES = 0x00009317,
+ GL_MAX_FRAMEBUFFER_SAMPLES = 0x00009318,
+ GL_RASTER_MULTISAMPLE_EXT = 0x00009327,
+ GL_RASTER_SAMPLES_EXT = 0x00009328,
+ GL_MAX_RASTER_SAMPLES_EXT = 0x00009329,
+ GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT = 0x0000932A,
+ GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT = 0x0000932B,
+ GL_EFFECTIVE_RASTER_SAMPLES_EXT = 0x0000932C,
+ GL_DEPTH_SAMPLES_NV = 0x0000932D,
+ GL_STENCIL_SAMPLES_NV = 0x0000932E,
+ GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV = 0x0000932F,
+ GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV = 0x00009330,
+ GL_COVERAGE_MODULATION_TABLE_NV = 0x00009331,
+ GL_COVERAGE_MODULATION_NV = 0x00009332,
+ GL_COVERAGE_MODULATION_TABLE_SIZE_NV = 0x00009333,
+ GL_WARP_SIZE_NV = 0x00009339,
+ GL_WARPS_PER_SM_NV = 0x0000933A,
+ GL_SM_COUNT_NV = 0x0000933B,
+ GL_FILL_RECTANGLE_NV = 0x0000933C,
+ GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV = 0x0000933D,
+ GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV = 0x0000933E,
+ GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV = 0x0000933F,
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV = 0x00009340,
+ GL_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x00009341,
+ GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV = 0x00009342,
+ GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV = 0x00009343,
+ GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = 0x00009344,
+ GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = 0x00009345,
+ GL_CONSERVATIVE_RASTERIZATION_NV = 0x00009346,
+ GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV = 0x00009347,
+ GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV = 0x00009348,
+ GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV = 0x00009349,
+ GL_LOCATION_COMPONENT = 0x0000934A,
+ GL_TRANSFORM_FEEDBACK_BUFFER_INDEX = 0x0000934B,
+ GL_TRANSFORM_FEEDBACK_BUFFER_STRIDE = 0x0000934C,
+ GL_CLIP_ORIGIN = 0x0000935C,
+ GL_CLIP_DEPTH_MODE = 0x0000935D,
+ GL_NEGATIVE_ONE_TO_ONE = 0x0000935E,
+ GL_ZERO_TO_ONE = 0x0000935F,
+ GL_CLEAR_TEXTURE = 0x00009365,
+ GL_FONT_GLYPHS_AVAILABLE_NV = 0x00009368,
+ GL_FONT_TARGET_UNAVAILABLE_NV = 0x00009369,
+ GL_FONT_UNAVAILABLE_NV = 0x0000936A,
+ GL_FONT_UNINTELLIGIBLE_NV = 0x0000936B,
+ GL_STANDARD_FONT_FORMAT_NV = 0x0000936C,
+ GL_FRAGMENT_INPUT_NV = 0x0000936D,
+ GL_UNIFORM_BUFFER_UNIFIED_NV = 0x0000936E,
+ GL_UNIFORM_BUFFER_ADDRESS_NV = 0x0000936F,
+ GL_UNIFORM_BUFFER_LENGTH_NV = 0x00009370,
+ GL_MULTISAMPLES_NV = 0x00009371,
+ GL_SUPERSAMPLE_SCALE_X_NV = 0x00009372,
+ GL_SUPERSAMPLE_SCALE_Y_NV = 0x00009373,
+ GL_CONFORMANT_NV = 0x00009374,
+ GL_NUM_SAMPLE_COUNTS = 0x00009380,
+ GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x000093A0,
+ GL_BGRA8_EXT = 0x000093A1,
+ GL_TEXTURE_USAGE_ANGLE = 0x000093A2,
+ GL_FRAMEBUFFER_ATTACHMENT_ANGLE = 0x000093A3,
+ GL_PACK_REVERSE_ROW_ORDER_ANGLE = 0x000093A4,
+ GL_PROGRAM_BINARY_ANGLE = 0x000093A6,
+ GL_COMPRESSED_RGBA_ASTC_4x4_KHR = 0x000093B0,
+ GL_COMPRESSED_RGBA_ASTC_5x4_KHR = 0x000093B1,
+ GL_COMPRESSED_RGBA_ASTC_5x5_KHR = 0x000093B2,
+ GL_COMPRESSED_RGBA_ASTC_6x5_KHR = 0x000093B3,
+ GL_COMPRESSED_RGBA_ASTC_6x6_KHR = 0x000093B4,
+ GL_COMPRESSED_RGBA_ASTC_8x5_KHR = 0x000093B5,
+ GL_COMPRESSED_RGBA_ASTC_8x6_KHR = 0x000093B6,
+ GL_COMPRESSED_RGBA_ASTC_8x8_KHR = 0x000093B7,
+ GL_COMPRESSED_RGBA_ASTC_10x5_KHR = 0x000093B8,
+ GL_COMPRESSED_RGBA_ASTC_10x6_KHR = 0x000093B9,
+ GL_COMPRESSED_RGBA_ASTC_10x8_KHR = 0x000093BA,
+ GL_COMPRESSED_RGBA_ASTC_10x10_KHR = 0x000093BB,
+ GL_COMPRESSED_RGBA_ASTC_12x10_KHR = 0x000093BC,
+ GL_COMPRESSED_RGBA_ASTC_12x12_KHR = 0x000093BD,
+ GL_COMPRESSED_RGBA_ASTC_3x3x3_OES = 0x000093C0,
+ GL_COMPRESSED_RGBA_ASTC_4x3x3_OES = 0x000093C1,
+ GL_COMPRESSED_RGBA_ASTC_4x4x3_OES = 0x000093C2,
+ GL_COMPRESSED_RGBA_ASTC_4x4x4_OES = 0x000093C3,
+ GL_COMPRESSED_RGBA_ASTC_5x4x4_OES = 0x000093C4,
+ GL_COMPRESSED_RGBA_ASTC_5x5x4_OES = 0x000093C5,
+ GL_COMPRESSED_RGBA_ASTC_5x5x5_OES = 0x000093C6,
+ GL_COMPRESSED_RGBA_ASTC_6x5x5_OES = 0x000093C7,
+ GL_COMPRESSED_RGBA_ASTC_6x6x5_OES = 0x000093C8,
+ GL_COMPRESSED_RGBA_ASTC_6x6x6_OES = 0x000093C9,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x000093D0,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x000093D1,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x000093D2,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x000093D3,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x000093D4,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x000093D5,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x000093D6,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x000093D7,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x000093D8,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x000093D9,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x000093DA,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x000093DB,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x000093DC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x000093DD,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES = 0x000093E0,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES = 0x000093E1,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES = 0x000093E2,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES = 0x000093E3,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES = 0x000093E4,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES = 0x000093E5,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES = 0x000093E6,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES = 0x000093E7,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES = 0x000093E8,
+ GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES = 0x000093E9,
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG = 0x000093F0,
+ GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG = 0x000093F1,
+ GL_PERFQUERY_COUNTER_EVENT_INTEL = 0x000094F0,
+ GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL = 0x000094F1,
+ GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL = 0x000094F2,
+ GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL = 0x000094F3,
+ GL_PERFQUERY_COUNTER_RAW_INTEL = 0x000094F4,
+ GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL = 0x000094F5,
+ GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL = 0x000094F8,
+ GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL = 0x000094F9,
+ GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL = 0x000094FA,
+ GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL = 0x000094FB,
+ GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL = 0x000094FC,
+ GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL = 0x000094FD,
+ GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL = 0x000094FE,
+ GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL = 0x000094FF,
+ GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL = 0x00009500,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR = 0x00009630,
+ GL_MAX_VIEWS_OVR = 0x00009631,
+ GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR = 0x00009632,
+ GL_GS_SHADER_BINARY_MTK = 0x00009640,
+ GL_GS_PROGRAM_BINARY_MTK = 0x00009641,
+ GL_RASTER_POSITION_UNCLIPPED_IBM = 0x00019262,
+ GL_CULL_VERTEX_IBM = 0x0001928A,
+ GL_ALL_STATIC_DATA_IBM = 0x00019294,
+ GL_STATIC_VERTEX_ARRAY_IBM = 0x00019295,
+ GL_VERTEX_ARRAY_LIST_IBM = 0x0001929E,
+ GL_NORMAL_ARRAY_LIST_IBM = 0x0001929F,
+ GL_COLOR_ARRAY_LIST_IBM = 0x000192A0,
+ GL_INDEX_ARRAY_LIST_IBM = 0x000192A1,
+ GL_TEXTURE_COORD_ARRAY_LIST_IBM = 0x000192A2,
+ GL_EDGE_FLAG_ARRAY_LIST_IBM = 0x000192A3,
+ GL_FOG_COORDINATE_ARRAY_LIST_IBM = 0x000192A4,
+ GL_SECONDARY_COLOR_ARRAY_LIST_IBM = 0x000192A5,
+ GL_VERTEX_ARRAY_LIST_STRIDE_IBM = 0x000192A8,
+ GL_NORMAL_ARRAY_LIST_STRIDE_IBM = 0x000192A9,
+ GL_COLOR_ARRAY_LIST_STRIDE_IBM = 0x000192AA,
+ GL_INDEX_ARRAY_LIST_STRIDE_IBM = 0x000192AB,
+ GL_TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 0x000192AC,
+ GL_EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 0x000192AD,
+ GL_FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 0x000192AE,
+ GL_SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 0x000192AF,
+ GL_PREFER_DOUBLEBUFFER_HINT_PGI = 0x0001A1F8,
+ GL_CONSERVE_MEMORY_HINT_PGI = 0x0001A1FD,
+ GL_RECLAIM_MEMORY_HINT_PGI = 0x0001A1FE,
+ GL_NATIVE_GRAPHICS_HANDLE_PGI = 0x0001A202,
+ GL_NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x0001A203,
+ GL_NATIVE_GRAPHICS_END_HINT_PGI = 0x0001A204,
+ GL_ALWAYS_FAST_HINT_PGI = 0x0001A20C,
+ GL_ALWAYS_SOFT_HINT_PGI = 0x0001A20D,
+ GL_ALLOW_DRAW_OBJ_HINT_PGI = 0x0001A20E,
+ GL_ALLOW_DRAW_WIN_HINT_PGI = 0x0001A20F,
+ GL_ALLOW_DRAW_FRG_HINT_PGI = 0x0001A210,
+ GL_ALLOW_DRAW_MEM_HINT_PGI = 0x0001A211,
+ GL_STRICT_DEPTHFUNC_HINT_PGI = 0x0001A216,
+ GL_STRICT_LIGHTING_HINT_PGI = 0x0001A217,
+ GL_STRICT_SCISSOR_HINT_PGI = 0x0001A218,
+ GL_FULL_STIPPLE_HINT_PGI = 0x0001A219,
+ GL_CLIP_NEAR_HINT_PGI = 0x0001A220,
+ GL_CLIP_FAR_HINT_PGI = 0x0001A221,
+ GL_WIDE_LINE_HINT_PGI = 0x0001A222,
+ GL_BACK_NORMALS_HINT_PGI = 0x0001A223,
+ GL_VERTEX_DATA_HINT_PGI = 0x0001A22A,
+ GL_VERTEX_CONSISTENT_HINT_PGI = 0x0001A22B,
+ GL_MATERIAL_SIDE_HINT_PGI = 0x0001A22C,
+ GL_MAX_VERTEX_HINT_PGI = 0x0001A22D,
+}
+
diff --git a/gfxapi/gles/api/other.api b/gfxapi/gles/api/other.api
new file mode 100644
index 000000000..1438967ed
--- /dev/null
+++ b/gfxapi/gles/api/other.api
@@ -0,0 +1,135 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glEnable.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glEnable.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glEnable.xhtml","OpenGL ES 3.1")
+cmd void glDisable(GLenum capability) {
+ minRequiredVersion(2, 0)
+ switch (capability) {
+ case GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST, GL_DITHER, GL_POLYGON_OFFSET_FILL,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST: {
+ // version 2.0
+ }
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_RASTERIZER_DISCARD: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_SAMPLE_MASK: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(capability)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Capabilities[capability] = false
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glEnable.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glEnable.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glEnable.xhtml","OpenGL ES 3.1")
+cmd void glEnable(GLenum capability) {
+ minRequiredVersion(2, 0)
+ switch (capability) {
+ case GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST, GL_DITHER, GL_POLYGON_OFFSET_FILL,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST: {
+ // version 2.0
+ }
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_RASTERIZER_DISCARD: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_SAMPLE_MASK: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(capability)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Capabilities[capability] = true
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFinish.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFinish.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFinish.xhtml","OpenGL ES 3.1")
+cmd void glFinish() {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFlush.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFlush.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFlush.xhtml","OpenGL ES 3.1")
+cmd void glFlush() {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFlushMappedBufferRange.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFlushMappedBufferRange.xhtml","OpenGL ES 3.1")
+cmd void glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ARRAY_BUFFER, GL_COPY_READ_BUFFER, GL_COPY_WRITE_BUFFER, GL_ELEMENT_ARRAY_BUFFER,
+ GL_PIXEL_PACK_BUFFER, GL_PIXEL_UNPACK_BUFFER, GL_TRANSFORM_FEEDBACK_BUFFER,
+ GL_UNIFORM_BUFFER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetError.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetError.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetError.xhtml","OpenGL ES 3.1")
+cmd GLenum glGetError() {
+ minRequiredVersion(2, 0)
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glHint.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glHint.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glHint.xhtml","OpenGL ES 3.1")
+cmd void glHint(GLenum target, GLenum mode) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_GENERATE_MIPMAP_HINT: {
+ // version 2.0
+ }
+ case GL_FRAGMENT_SHADER_DERIVATIVE_HINT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (mode) {
+ case GL_DONT_CARE, GL_FASTEST, GL_NICEST: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.GenerateMipmapHint = mode
+}
+
diff --git a/gfxapi/gles/api/programs_and_shaders.api b/gfxapi/gles/api/programs_and_shaders.api
new file mode 100644
index 000000000..7f4bbb59f
--- /dev/null
+++ b/gfxapi/gles/api/programs_and_shaders.api
@@ -0,0 +1,1603 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glActiveShaderProgram.xhtml","OpenGL ES 3.1")
+cmd void glActiveShaderProgram(PipelineId pipeline, ProgramId program) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glAttachShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glAttachShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glAttachShader.xhtml","OpenGL ES 3.1")
+cmd void glAttachShader(ProgramId program, ShaderId shader) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ p := ctx.Instances.Programs[program]
+ s := ctx.Instances.Shaders[shader]
+ p.Shaders[s.Type] = shader
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindAttribLocation.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindAttribLocation.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindAttribLocation.xhtml","OpenGL ES 3.1")
+cmd void glBindAttribLocation(ProgramId program, AttributeLocation location, string name) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ p := ctx.Instances.Programs[program]
+ p.AttributeBindings[name] = location
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindProgramPipeline.xhtml","OpenGL ES 3.1")
+cmd void glBindProgramPipeline(PipelineId pipeline) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCompileShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCompileShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCompileShader.xhtml","OpenGL ES 3.1")
+cmd void glCompileShader(ShaderId shader) {
+ minRequiredVersion(2, 0)
+
+ // TODO: shader.Binary < ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCreateProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCreateProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCreateProgram.xhtml","OpenGL ES 3.1")
+cmd ProgramId glCreateProgram() {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ id := as!ProgramId(?)
+ ctx.Instances.Programs[id] = new!Program()
+ return id
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCreateShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCreateShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCreateShader.xhtml","OpenGL ES 3.1")
+cmd ShaderId glCreateShader(GLenum type) {
+ minRequiredVersion(2, 0)
+ switch (type) {
+ case GL_FRAGMENT_SHADER, GL_VERTEX_SHADER: {
+ // version 2.0
+ }
+ case GL_COMPUTE_SHADER: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+
+ ctx := GetContext()
+ id := as!ShaderId(?)
+ ctx.Instances.Shaders[id] = new!Shader()
+ s := ctx.Instances.Shaders[id]
+ s.Type = type
+ return id
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCreateShaderProgram.xhtml","OpenGL ES 3.1")
+cmd ProgramId glCreateShaderProgramv(GLenum type, GLsizei count, const GLchar* const* strings) {
+ minRequiredVersion(3, 1)
+ switch (type) {
+ case GL_COMPUTE_SHADER, GL_FRAGMENT_SHADER, GL_VERTEX_SHADER: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteProgram.xhtml","OpenGL ES 3.1")
+cmd void glDeleteProgram(ProgramId program) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Instances.Programs[program] = null
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteProgramPipelines.xhtml","OpenGL ES 3.1")
+cmd void glDeleteProgramPipelines(GLsizei n, const PipelineId* pipelines) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteShader.xhtml","OpenGL ES 3.1")
+cmd void glDeleteShader(ShaderId shader) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ s := ctx.Instances.Shaders[shader]
+ s.Deletable = true
+ // TODO: refcount shader attachment and only destroy if zero
+ ctx.Instances.Shaders[shader] = null
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDetachShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDetachShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDetachShader.xhtml","OpenGL ES 3.1")
+cmd void glDetachShader(ProgramId program, ShaderId shader) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ p := ctx.Instances.Programs[program]
+ s := ctx.Instances.Shaders[shader]
+ p.Shaders[s.Type] = null
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDispatchCompute.xhtml","OpenGL ES 3.1")
+cmd void glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDispatchComputeIndirect.xhtml","OpenGL ES 3.1")
+cmd void glDispatchComputeIndirect(GLintptr indirect) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenProgramPipelines.xhtml","OpenGL ES 3.1")
+cmd void glGenProgramPipelines(GLsizei n, PipelineId* pipelines) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetActiveAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetActiveAttrib.xhtml","OpenGL ES 3.1")
+cmd void glGetActiveAttrib(ProgramId program,
+ AttributeLocation location,
+ GLsizei buffer_size,
+ GLsizei* buffer_bytes_written,
+ GLint* vector_count,
+ GLenum* type,
+ GLchar* name) {
+ minRequiredVersion(2, 0)
+
+ if buffer_bytes_written != null {
+ l := as!s32(?)
+ buffer_bytes_written[0] = l
+ write(name[0:l])
+ } else {
+ write(name[0:256]) // HACK: Non-deterministic string length!
+ }
+
+ vector_count[0] = as!s32(?)
+ type[0] = as!GLenum(?)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetActiveUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetActiveUniform.xhtml","OpenGL ES 3.1")
+cmd void glGetActiveUniform(ProgramId program,
+ GLuint location,
+ GLsizei buffer_size,
+ GLsizei* buffer_bytes_written,
+ GLint* vector_count,
+ GLenum* type,
+ GLchar* name) {
+ minRequiredVersion(2, 0)
+
+ if buffer_bytes_written != null {
+ l := as!s32(?)
+ buffer_bytes_written[0] = l
+ write(name[0:l])
+ } else {
+ write(name[0:256]) // HACK: Non-deterministic string length!
+ }
+
+ vector_count[0] = as!s32(?)
+ type[0] = as!GLenum(?)
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveUniformBlockName.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetActiveUniformBlockName.xhtml","OpenGL ES 3.1")
+cmd void glGetActiveUniformBlockName(ProgramId program,
+ UniformBlockId uniform_block_index,
+ GLsizei buffer_size,
+ GLsizei* buffer_bytes_written,
+ GLchar* name) {
+ minRequiredVersion(3, 0)
+
+ l := as!s32(?)
+ buffer_bytes_written[0] = l
+ write(name[0:l])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveUniformBlockiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetActiveUniformBlockiv.xhtml","OpenGL ES 3.1")
+cmd void glGetActiveUniformBlockiv(ProgramId program,
+ UniformBlockId uniform_block_index,
+ GLenum parameter_name,
+ GLint* parameters) {
+ minRequiredVersion(3, 0)
+ switch (parameter_name) {
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS, GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
+ GL_UNIFORM_BLOCK_BINDING, GL_UNIFORM_BLOCK_DATA_SIZE, GL_UNIFORM_BLOCK_NAME_LENGTH,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
+ GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(parameter_name)
+ }
+ }
+
+ parameters[0] = ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetActiveUniformsiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetActiveUniformsiv.xhtml","OpenGL ES 3.1")
+cmd void glGetActiveUniformsiv(ProgramId program,
+ GLsizei uniform_count,
+ const GLuint* uniform_indices,
+ GLenum parameter_name,
+ GLint* parameters) {
+ minRequiredVersion(3, 0)
+ switch (parameter_name) {
+ case GL_UNIFORM_ARRAY_STRIDE, GL_UNIFORM_BLOCK_INDEX, GL_UNIFORM_IS_ROW_MAJOR,
+ GL_UNIFORM_MATRIX_STRIDE, GL_UNIFORM_NAME_LENGTH, GL_UNIFORM_OFFSET, GL_UNIFORM_SIZE,
+ GL_UNIFORM_TYPE: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(parameter_name)
+ }
+ }
+
+ read(uniform_indices[0:uniform_count])
+ write(parameters[0:uniform_count])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetAttachedShaders.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetAttachedShaders.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetAttachedShaders.xhtml","OpenGL ES 3.1")
+cmd void glGetAttachedShaders(ProgramId program,
+ GLsizei buffer_length,
+ GLsizei* shaders_length_written,
+ ShaderId* shaders) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ p := ctx.Instances.Programs[program]
+ l := min(buffer_length, len(p.Shaders))
+ shaders_length_written[0] = l
+ // TODO: Requires language support.
+ // for i, k, v in p.Shaders {
+ // if i < l {
+ // shaders[i] = v
+ // }
+ // }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetAttribLocation.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetAttribLocation.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetAttribLocation.xhtml","OpenGL ES 3.1")
+cmd GLint glGetAttribLocation(ProgramId program, string name) {
+ minRequiredVersion(2, 0)
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetFragDataLocation.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetFragDataLocation.xhtml","OpenGL ES 3.1")
+cmd GLint glGetFragDataLocation(ProgramId program, const GLchar* name) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetProgramBinary.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramBinary.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramBinary(ProgramId program,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLenum* binaryFormat,
+ void* binary) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetProgramInfoLog.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetProgramInfoLog.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramInfoLog.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramInfoLog(ProgramId program,
+ GLsizei buffer_length,
+ GLsizei* string_length_written,
+ GLchar* info) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ p := ctx.Instances.Programs[program]
+ l := min(buffer_length, as!s32(len(p.InfoLog)))
+ copy(info[0:l], p.InfoLog[0:l])
+ string_length_written[0] = l
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramInterface.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramInterfaceiv(ProgramId program,
+ GLenum programInterface,
+ GLenum pname,
+ GLint* params) {
+ minRequiredVersion(3, 1)
+ switch (programInterface) {
+ case GL_ATOMIC_COUNTER_BUFFER, GL_BUFFER_VARIABLE, GL_PROGRAM_INPUT, GL_PROGRAM_OUTPUT,
+ GL_SHADER_STORAGE_BLOCK, GL_TRANSFORM_FEEDBACK_BUFFER, GL_TRANSFORM_FEEDBACK_VARYING,
+ GL_UNIFORM, GL_UNIFORM_BLOCK: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(programInterface)
+ }
+ }
+ switch (pname) {
+ case GL_ACTIVE_RESOURCES, GL_MAX_NAME_LENGTH, GL_MAX_NUM_ACTIVE_VARIABLES: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramPipelineInfoLog.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramPipelineInfoLog(PipelineId pipeline,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* infoLog) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramPipeline.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramPipelineiv(PipelineId pipeline, GLenum pname, GLint* params) {
+ minRequiredVersion(3, 1)
+ switch (pname) {
+ case GL_ACTIVE_PROGRAM, GL_COMPUTE_SHADER, GL_FRAGMENT_SHADER, GL_INFO_LOG_LENGTH,
+ GL_VALIDATE_STATUS, GL_VERTEX_SHADER: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramResourceIndex.xhtml","OpenGL ES 3.1")
+cmd GLuint glGetProgramResourceIndex(ProgramId program,
+ GLenum programInterface,
+ const GLchar* name) {
+ minRequiredVersion(3, 1)
+ switch (programInterface) {
+ case GL_BUFFER_VARIABLE, GL_PROGRAM_INPUT, GL_PROGRAM_OUTPUT, GL_SHADER_STORAGE_BLOCK,
+ GL_TRANSFORM_FEEDBACK_VARYING, GL_UNIFORM, GL_UNIFORM_BLOCK: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(programInterface)
+ }
+ }
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramResourceLocation.xhtml","OpenGL ES 3.1")
+cmd GLint glGetProgramResourceLocation(ProgramId program,
+ GLenum programInterface,
+ const GLchar* name) {
+ minRequiredVersion(3, 1)
+ switch (programInterface) {
+ case GL_PROGRAM_INPUT, GL_PROGRAM_OUTPUT, GL_TRANSFORM_FEEDBACK_BUFFER, GL_UNIFORM: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(programInterface)
+ }
+ }
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramResourceName.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramResourceName(ProgramId program,
+ GLenum programInterface,
+ GLuint index,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLchar* name) {
+ minRequiredVersion(3, 1)
+ switch (programInterface) {
+ case GL_BUFFER_VARIABLE, GL_PROGRAM_INPUT, GL_PROGRAM_OUTPUT, GL_SHADER_STORAGE_BLOCK,
+ GL_TRANSFORM_FEEDBACK_VARYING, GL_UNIFORM, GL_UNIFORM_BLOCK: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(programInterface)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramResource.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramResourceiv(ProgramId program,
+ GLenum programInterface,
+ GLuint index,
+ GLsizei propCount,
+ const GLenum* props,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLint* params) {
+ minRequiredVersion(3, 1)
+ switch (programInterface) {
+ case GL_ATOMIC_COUNTER_BUFFER, GL_BUFFER_VARIABLE, GL_PROGRAM_INPUT, GL_PROGRAM_OUTPUT,
+ GL_SHADER_STORAGE_BLOCK, GL_TRANSFORM_FEEDBACK_BUFFER, GL_TRANSFORM_FEEDBACK_VARYING,
+ GL_UNIFORM, GL_UNIFORM_BLOCK: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(programInterface)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetProgramiv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetProgramiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetProgramiv.xhtml","OpenGL ES 3.1")
+cmd void glGetProgramiv(ProgramId program, GLenum parameter, GLint* value) {
+ minRequiredVersion(2, 0)
+ switch (parameter) {
+ case GL_ACTIVE_ATTRIBUTES, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, GL_ACTIVE_UNIFORMS,
+ GL_ACTIVE_UNIFORM_MAX_LENGTH, GL_ATTACHED_SHADERS, GL_DELETE_STATUS, GL_INFO_LOG_LENGTH,
+ GL_LINK_STATUS, GL_VALIDATE_STATUS: {
+ // version 2.0
+ }
+ case GL_ACTIVE_UNIFORM_BLOCKS, GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH,
+ GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRANSFORM_FEEDBACK_BUFFER_MODE,
+ GL_TRANSFORM_FEEDBACK_VARYINGS, GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_ACTIVE_ATOMIC_COUNTER_BUFFERS, GL_COMPUTE_WORK_GROUP_SIZE, GL_PROGRAM_SEPARABLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ value[0] = ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderInfoLog.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderInfoLog.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetShaderInfoLog.xhtml","OpenGL ES 3.1")
+cmd void glGetShaderInfoLog(ShaderId shader,
+ GLsizei buffer_length,
+ GLsizei* string_length_written,
+ GLchar* info) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ s := ctx.Instances.Shaders[shader]
+ l := min(buffer_length, as!s32(len(s.InfoLog)))
+ copy(info[0:l], s.InfoLog[0:l])
+ string_length_written[0] = l
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderPrecisionFormat.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderPrecisionFormat.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetShaderPrecisionFormat.xhtml","OpenGL ES 3.1")
+cmd void glGetShaderPrecisionFormat(GLenum shader_type,
+ GLenum precision_type,
+ GLint* range,
+ GLint* precision) {
+ minRequiredVersion(2, 0)
+ switch (shader_type) {
+ case GL_FRAGMENT_SHADER, GL_VERTEX_SHADER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(shader_type)
+ }
+ }
+ switch (precision_type) {
+ case GL_HIGH_FLOAT, GL_HIGH_INT, GL_LOW_FLOAT, GL_LOW_INT, GL_MEDIUM_FLOAT, GL_MEDIUM_INT: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(precision_type)
+ }
+ }
+
+ write(range[0:2])
+ precision[0] = ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderSource.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderSource.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetShaderSource.xhtml","OpenGL ES 3.1")
+cmd void glGetShaderSource(ShaderId shader,
+ GLsizei buffer_length,
+ GLsizei* string_length_written,
+ GLchar* source) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ s := ctx.Instances.Shaders[shader]
+ l := min(buffer_length, as!s32(len(s.Source)))
+ copy(source[0:l], as!char[](s.Source)[0:l])
+ string_length_written[0] = l
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetShaderiv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetShaderiv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetShaderiv.xhtml","OpenGL ES 3.1")
+cmd void glGetShaderiv(ShaderId shader, GLenum parameter, GLint* value) {
+ minRequiredVersion(2, 0)
+ switch (parameter) {
+ case GL_COMPILE_STATUS, GL_DELETE_STATUS, GL_INFO_LOG_LENGTH, GL_SHADER_SOURCE_LENGTH,
+ GL_SHADER_TYPE: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ s := ctx.Instances.Shaders[shader]
+ value[0] = switch (parameter) {
+ case GL_SHADER_TYPE: as!s32(s.Type)
+ case GL_DELETE_STATUS: switch (s.Deletable) { case true: 1 case false: 0 }
+ case GL_COMPILE_STATUS: switch (s.Compiled) { case true: 1 case false: 0 }
+ case GL_INFO_LOG_LENGTH: as!s32(len(s.InfoLog))
+ case GL_SHADER_SOURCE_LENGTH: as!s32(len(s.Source))
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniformBlockIndex.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniformBlockIndex.xhtml","OpenGL ES 3.1")
+cmd UniformBlockId glGetUniformBlockIndex(ProgramId program, const GLchar* uniformBlockName) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniformIndices.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniformIndices.xhtml","OpenGL ES 3.1")
+cmd void glGetUniformIndices(ProgramId program,
+ GLsizei uniformCount,
+ const GLchar* const* uniformNames,
+ GLuint* uniformIndices) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetUniformLocation.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniformLocation.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniformLocation.xhtml","OpenGL ES 3.1")
+cmd UniformLocation glGetUniformLocation(ProgramId program, string name) {
+ minRequiredVersion(2, 0)
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniform.xhtml","OpenGL ES 3.1")
+cmd void glGetUniformfv(ProgramId program, UniformLocation location, GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ // p := Instances.Programs[program]
+ // uniform := p.Uniforms[location]
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniform.xhtml","OpenGL ES 3.1")
+cmd void glGetUniformiv(ProgramId program, UniformLocation location, GLint* values) {
+ minRequiredVersion(2, 0)
+
+ // p := Instances.Programs[program]
+ // uniform := p.Uniforms[location]
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetUniform.xhtml","OpenGL ES 3.1")
+cmd void glGetUniformuiv(ProgramId program, UniformLocation location, GLuint* params) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsProgram.xhtml","OpenGL ES 3.1")
+cmd bool glIsProgram(ProgramId program) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return program in ctx.Instances.Programs
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsProgramPipeline.xhtml","OpenGL ES 3.1")
+cmd bool glIsProgramPipeline(PipelineId pipeline) {
+ minRequiredVersion(3, 1)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsShader.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsShader.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsShader.xhtml","OpenGL ES 3.1")
+cmd bool glIsShader(ShaderId shader) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return shader in ctx.Instances.Shaders
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glLinkProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glLinkProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glLinkProgram.xhtml","OpenGL ES 3.1")
+cmd void glLinkProgram(ProgramId program) {
+ minRequiredVersion(2, 0)
+
+ //for s in (program.Shaders) {
+ // TODO: use(s.Binary)
+ //}
+ // TODO: program.Binary < ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glMemoryBarrier.xhtml","OpenGL ES 3.1")
+cmd void glMemoryBarrier(GLbitfield barriers) {
+ minRequiredVersion(3, 1)
+ supportsBits(barriers, GL_ALL_BARRIER_BITS | GL_ATOMIC_COUNTER_BARRIER_BIT | GL_BUFFER_UPDATE_BARRIER_BIT | GL_COMMAND_BARRIER_BIT | GL_ELEMENT_ARRAY_BARRIER_BIT | GL_FRAMEBUFFER_BARRIER_BIT | GL_PIXEL_BUFFER_BARRIER_BIT | GL_SHADER_IMAGE_ACCESS_BARRIER_BIT | GL_SHADER_STORAGE_BARRIER_BIT | GL_TEXTURE_FETCH_BARRIER_BIT | GL_TEXTURE_UPDATE_BARRIER_BIT | GL_TRANSFORM_FEEDBACK_BARRIER_BIT | GL_UNIFORM_BARRIER_BIT | GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT)
+ if (GL_ALL_BARRIER_BITS in barriers) {
+ }
+ if (GL_ATOMIC_COUNTER_BARRIER_BIT in barriers) {
+ }
+ if (GL_BUFFER_UPDATE_BARRIER_BIT in barriers) {
+ }
+ if (GL_COMMAND_BARRIER_BIT in barriers) {
+ }
+ if (GL_ELEMENT_ARRAY_BARRIER_BIT in barriers) {
+ }
+ if (GL_FRAMEBUFFER_BARRIER_BIT in barriers) {
+ }
+ if (GL_PIXEL_BUFFER_BARRIER_BIT in barriers) {
+ }
+ if (GL_SHADER_IMAGE_ACCESS_BARRIER_BIT in barriers) {
+ }
+ if (GL_SHADER_STORAGE_BARRIER_BIT in barriers) {
+ }
+ if (GL_TEXTURE_FETCH_BARRIER_BIT in barriers) {
+ }
+ if (GL_TEXTURE_UPDATE_BARRIER_BIT in barriers) {
+ }
+ if (GL_TRANSFORM_FEEDBACK_BARRIER_BIT in barriers) {
+ }
+ if (GL_UNIFORM_BARRIER_BIT in barriers) {
+ }
+ if (GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT in barriers) {
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glMemoryBarrier.xhtml","OpenGL ES 3.1")
+cmd void glMemoryBarrierByRegion(GLbitfield barriers) {
+ minRequiredVersion(3, 1)
+ supportsBits(barriers, GL_ALL_BARRIER_BITS | GL_ATOMIC_COUNTER_BARRIER_BIT | GL_BUFFER_UPDATE_BARRIER_BIT | GL_COMMAND_BARRIER_BIT | GL_ELEMENT_ARRAY_BARRIER_BIT | GL_FRAMEBUFFER_BARRIER_BIT | GL_PIXEL_BUFFER_BARRIER_BIT | GL_SHADER_IMAGE_ACCESS_BARRIER_BIT | GL_SHADER_STORAGE_BARRIER_BIT | GL_TEXTURE_FETCH_BARRIER_BIT | GL_TEXTURE_UPDATE_BARRIER_BIT | GL_TRANSFORM_FEEDBACK_BARRIER_BIT | GL_UNIFORM_BARRIER_BIT | GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT)
+ if (GL_ALL_BARRIER_BITS in barriers) {
+ }
+ if (GL_ATOMIC_COUNTER_BARRIER_BIT in barriers) {
+ }
+ if (GL_BUFFER_UPDATE_BARRIER_BIT in barriers) {
+ }
+ if (GL_COMMAND_BARRIER_BIT in barriers) {
+ }
+ if (GL_ELEMENT_ARRAY_BARRIER_BIT in barriers) {
+ }
+ if (GL_FRAMEBUFFER_BARRIER_BIT in barriers) {
+ }
+ if (GL_PIXEL_BUFFER_BARRIER_BIT in barriers) {
+ }
+ if (GL_SHADER_IMAGE_ACCESS_BARRIER_BIT in barriers) {
+ }
+ if (GL_SHADER_STORAGE_BARRIER_BIT in barriers) {
+ }
+ if (GL_TEXTURE_FETCH_BARRIER_BIT in barriers) {
+ }
+ if (GL_TEXTURE_UPDATE_BARRIER_BIT in barriers) {
+ }
+ if (GL_TRANSFORM_FEEDBACK_BARRIER_BIT in barriers) {
+ }
+ if (GL_UNIFORM_BARRIER_BIT in barriers) {
+ }
+ if (GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT in barriers) {
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glProgramBinary.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramBinary.xhtml","OpenGL ES 3.1")
+cmd void glProgramBinary(ProgramId program,
+ GLenum binaryFormat,
+ const void* binary,
+ GLsizei length) {
+ minRequiredVersion(3, 0)
+ switch (binaryFormat) {
+ default: {
+ glErrorInvalidEnum(binaryFormat)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glProgramParameteri.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramParameteri.xhtml","OpenGL ES 3.1")
+cmd void glProgramParameteri(ProgramId program, GLenum pname, GLint value) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_PROGRAM_BINARY_RETRIEVABLE_HINT: {
+ // version 3.0
+ }
+ case GL_PROGRAM_SEPARABLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1f(ProgramId program, UniformLocation location, GLfloat v0) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1i(ProgramId program, UniformLocation location, GLint v0) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1iv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1ui(ProgramId program, UniformLocation location, GLuint v0) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform1uiv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2f(ProgramId program, UniformLocation location, GLfloat v0, GLfloat v1) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2i(ProgramId program, UniformLocation location, GLint v0, GLint v1) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2iv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2ui(ProgramId program, UniformLocation location, GLuint v0, GLuint v1) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform2uiv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3f(ProgramId program,
+ UniformLocation location,
+ GLfloat v0,
+ GLfloat v1,
+ GLfloat v2) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3i(ProgramId program,
+ UniformLocation location,
+ GLint v0,
+ GLint v1,
+ GLint v2) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3iv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3ui(ProgramId program,
+ UniformLocation location,
+ GLuint v0,
+ GLuint v1,
+ GLuint v2) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform3uiv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4f(ProgramId program,
+ UniformLocation location,
+ GLfloat v0,
+ GLfloat v1,
+ GLfloat v2,
+ GLfloat v3) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4i(ProgramId program,
+ UniformLocation location,
+ GLint v0,
+ GLint v1,
+ GLint v2,
+ GLint v3) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4iv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4ui(ProgramId program,
+ UniformLocation location,
+ GLuint v0,
+ GLuint v1,
+ GLuint v2,
+ GLuint v3) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniform4uiv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ const GLuint* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix2fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix2x3fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix2x4fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix3fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix3x2fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix3x4fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix4fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix4x2fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glProgramUniform.xhtml","OpenGL ES 3.1")
+cmd void glProgramUniformMatrix4x3fv(ProgramId program,
+ UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glReleaseShaderCompiler.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glReleaseShaderCompiler.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glReleaseShaderCompiler.xhtml","OpenGL ES 3.1")
+cmd void glReleaseShaderCompiler() {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glShaderBinary.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glShaderBinary.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glShaderBinary.xhtml","OpenGL ES 3.1")
+cmd void glShaderBinary(GLsizei count,
+ const ShaderId* shaders,
+ GLenum binary_format,
+ const void* binary,
+ GLsizei binary_size) {
+ minRequiredVersion(2, 0)
+ switch (binary_format) {
+ default: {
+ glErrorInvalidEnum(binary_format)
+ }
+ }
+
+ for i in (0 .. count) {
+ // TODO: shaders[i].Binary = ?
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glShaderSource.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glShaderSource.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glShaderSource.xhtml","OpenGL ES 3.1")
+cmd void glShaderSource(ShaderId shader,
+ GLsizei count,
+ const GLchar* const* source,
+ const GLint* length) {
+ minRequiredVersion(2, 0)
+
+ sources := source[0:count]
+ lengths := length[0:count]
+ ctx := GetContext()
+ s := ctx.Instances.Shaders[shader]
+ for i in (0 .. count) {
+ str := switch ((length == null) || (lengths[i] < 0)) {
+ case true: as!string(sources[i])
+ case false: as!string(sources[i][0:lengths[i]])
+ }
+ // TODO: We should have a newline between sources to avoid unintentional
+ // concatenation. The language currently does not support string literals.
+ s.Source += str
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1f(UniformLocation location, GLfloat value) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!f32(1)
+ v[0] = value
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1fv(UniformLocation location, GLsizei count, const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := values[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1i(UniformLocation location, GLint value) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!s32(1)
+ v[0] = value
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1iv(UniformLocation location, GLsizei count, const GLint* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := values[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1ui(UniformLocation location, GLuint v0) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform1uiv(UniformLocation location, GLsizei count, const GLuint* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2f(UniformLocation location, GLfloat value0, GLfloat value1) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec2f(1)
+ v[0] = Vec2f(value0, value1)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC2
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2fv(UniformLocation location, GLsizei count, const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec2f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC2
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2i(UniformLocation location, GLint value0, GLint value1) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec2i(1)
+ v[0] = Vec2i(value0, value1)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC2
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2iv(UniformLocation location, GLsizei count, const GLint* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec2i*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC2
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2ui(UniformLocation location, GLuint v0, GLuint v1) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform2uiv(UniformLocation location, GLsizei count, const GLuint* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3f(UniformLocation location, GLfloat value0, GLfloat value1, GLfloat value2) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec3f(1)
+ v[0] = Vec3f(value0, value1, value2)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC3
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3fv(UniformLocation location, GLsizei count, const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec3f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC3
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3i(UniformLocation location, GLint value0, GLint value1, GLint value2) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec3i(1)
+ v[0] = Vec3i(value0, value1, value2)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC3
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3iv(UniformLocation location, GLsizei count, const GLint* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec3i*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC3
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3ui(UniformLocation location, GLuint v0, GLuint v1, GLuint v2) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform3uiv(UniformLocation location, GLsizei count, const GLuint* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4f(UniformLocation location,
+ GLfloat value0,
+ GLfloat value1,
+ GLfloat value2,
+ GLfloat value3) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec4f(1)
+ v[0] = Vec4f(value0, value1, value2, value3)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC4
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4fv(UniformLocation location, GLsizei count, const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec4f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_VEC4
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4i(UniformLocation location,
+ GLint value0,
+ GLint value1,
+ GLint value2,
+ GLint value3) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := make!Vec4i(1)
+ v[0] = Vec4i(value0, value1, value2, value3)
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC4
+ uniform.Value = as!u8[](v)
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4iv(UniformLocation location, GLsizei count, const GLint* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Vec4i*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_INT_VEC4
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4ui(UniformLocation location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniform4uiv(UniformLocation location, GLsizei count, const GLuint* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniformBlockBinding.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniformBlockBinding.xhtml","OpenGL ES 3.1")
+cmd void glUniformBlockBinding(ProgramId program,
+ UniformBlockId uniform_block_index,
+ GLuint uniform_block_binding) {
+ minRequiredVersion(3, 0)
+
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix2fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Mat2f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_MAT2
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix2x3fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix2x4fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix3fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Mat3f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Type = GL_FLOAT_MAT3
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix3x2fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix3x4fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix4fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* values) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ v := as!Mat4f*(values)[0:count]
+ program := ctx.Instances.Programs[ctx.BoundProgram]
+ uniform := program.Uniforms[location]
+ uniform.Value = clone(as!u8[](v))
+ program.Uniforms[location] = uniform
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix4x2fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUniform.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUniform.xhtml","OpenGL ES 3.1")
+cmd void glUniformMatrix4x3fv(UniformLocation location,
+ GLsizei count,
+ GLboolean transpose,
+ const GLfloat* value) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glUseProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glUseProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUseProgram.xhtml","OpenGL ES 3.1")
+cmd void glUseProgram(ProgramId program) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.BoundProgram = program
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glUseProgramStages.xhtml","OpenGL ES 3.1")
+cmd void glUseProgramStages(PipelineId pipeline, GLbitfield stages, ProgramId program) {
+ minRequiredVersion(3, 1)
+ supportsBits(stages, GL_ALL_SHADER_BITS | GL_COMPUTE_SHADER_BIT | GL_FRAGMENT_SHADER_BIT | GL_VERTEX_SHADER_BIT)
+ if (GL_ALL_SHADER_BITS in stages) {
+ }
+ if (GL_COMPUTE_SHADER_BIT in stages) {
+ }
+ if (GL_FRAGMENT_SHADER_BIT in stages) {
+ }
+ if (GL_VERTEX_SHADER_BIT in stages) {
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glValidateProgram.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glValidateProgram.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glValidateProgram.xhtml","OpenGL ES 3.1")
+cmd void glValidateProgram(ProgramId program) {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glValidateProgramPipeline.xhtml","OpenGL ES 3.1")
+cmd void glValidateProgramPipeline(PipelineId pipeline) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/rasterization.api b/gfxapi/gles/api/rasterization.api
new file mode 100644
index 000000000..a8e0b95b6
--- /dev/null
+++ b/gfxapi/gles/api/rasterization.api
@@ -0,0 +1,106 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCullFace.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCullFace.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCullFace.xhtml","OpenGL ES 3.1")
+cmd void glCullFace(GLenum mode) {
+ minRequiredVersion(2, 0)
+ switch (mode) {
+ case GL_BACK, GL_FRONT, GL_FRONT_AND_BACK: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(mode)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Rasterizing.CullFace = mode
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDepthRangef.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDepthRangef.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDepthRangef.xhtml","OpenGL ES 3.1")
+cmd void glDepthRangef(GLfloat near, GLfloat far) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.DepthNear = near
+ ctx.Rasterizing.DepthFar = far
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glFrontFace.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFrontFace.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFrontFace.xhtml","OpenGL ES 3.1")
+cmd void glFrontFace(GLenum orientation) {
+ minRequiredVersion(2, 0)
+ switch (orientation) {
+ case GL_CCW, GL_CW: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(orientation)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.Rasterizing.FrontFace = orientation
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetMultisamplefv.xhtml","OpenGL ES 3.1")
+cmd void glGetMultisamplefv(GLenum pname, GLuint index, GLfloat* val) {
+ minRequiredVersion(3, 1)
+ switch (pname) {
+ case GL_SAMPLE_POSITION: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glLineWidth.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glLineWidth.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glLineWidth.xhtml","OpenGL ES 3.1")
+cmd void glLineWidth(GLfloat width) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.LineWidth = width
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glPolygonOffset.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glPolygonOffset.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glPolygonOffset.xhtml","OpenGL ES 3.1")
+cmd void glPolygonOffset(GLfloat scale_factor, GLfloat units) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.PolygonOffsetUnits = units
+ ctx.Rasterizing.PolygonOffsetFactor = scale_factor
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glViewport.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glViewport.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glViewport.xhtml","OpenGL ES 3.1")
+cmd void glViewport(GLint x, GLint y, GLsizei width, GLsizei height) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.Rasterizing.Viewport = Rect(x, y, width, height)
+}
+
diff --git a/gfxapi/gles/api/state_queries.api b/gfxapi/gles/api/state_queries.api
new file mode 100644
index 000000000..b81844254
--- /dev/null
+++ b/gfxapi/gles/api/state_queries.api
@@ -0,0 +1,965 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetBooleani_v(GLenum target, GLuint index, GLboolean* data) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING,
+ GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE,
+ GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK,
+ GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_DITHER, GL_DRAW_BUFFER,
+ GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS,
+ GL_IMAGE_BINDING_LAYERED, GL_IMPLEMENTATION_COLOR_READ_FORMAT,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE,
+ GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS,
+ GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COLOR_TEXTURE_SAMPLES, GL_MAX_COMBINED_ATOMIC_COUNTERS,
+ GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+ GL_MAX_COMBINED_UNIFORM_BLOCKS, GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTERS, GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS,
+ GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS,
+ GL_MAX_COMPUTE_UNIFORM_BLOCKS, GL_MAX_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMPUTE_WORK_GROUP_COUNT, GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS,
+ GL_MAX_COMPUTE_WORK_GROUP_SIZE, GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_DRAW_BUFFERS,
+ GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_INPUT_COMPONENTS,
+ GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE,
+ GL_MAX_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SERVER_WAIT_TIMEOUT,
+ GL_MAX_SHADER_STORAGE_BLOCK_SIZE, GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS,
+ GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TEXTURE_SIZE,
+ GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VARYING_COMPONENTS, GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATOMIC_COUNTERS,
+ GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_ATTRIB_BINDINGS, GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET,
+ GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS,
+ GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS,
+ GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR,
+ GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX,
+ GL_PROGRAM_BINARY_FORMATS, GL_PROGRAM_PIPELINE_BINDING, GL_RASTERIZER_DISCARD,
+ GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING,
+ GL_SAMPLER_BINDING, GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS,
+ GL_SAMPLE_COVERAGE, GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX,
+ GL_SCISSOR_TEST, GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER,
+ GL_SHADER_STORAGE_BUFFER_BINDING, GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT,
+ GL_SHADER_STORAGE_BUFFER_SIZE, GL_SHADER_STORAGE_BUFFER_START, GL_STENCIL_BACK_FAIL,
+ GL_STENCIL_BACK_FUNC, GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS,
+ GL_STENCIL_BACK_REF, GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK,
+ GL_STENCIL_BITS, GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC,
+ GL_STENCIL_PASS_DEPTH_FAIL, GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST,
+ GL_STENCIL_VALUE_MASK, GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D,
+ GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_2D_MULTISAMPLE, GL_TEXTURE_BINDING_3D,
+ GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE, GL_TRANSFORM_FEEDBACK_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_SIZE,
+ GL_TRANSFORM_FEEDBACK_BUFFER_START, GL_TRANSFORM_FEEDBACK_PAUSED,
+ GL_UNIFORM_BUFFER_BINDING, GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE,
+ GL_UNIFORM_BUFFER_START, GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH,
+ GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE, GL_VIEWPORT:
+ {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetBooleanv(GLenum param, GLboolean* values) {
+ minRequiredVersion(2, 0)
+ switch (param) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM,
+ GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST,
+ GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_FRAMEBUFFER_BINDING,
+ GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE,
+ GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS,
+ GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS,
+ GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL,
+ GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP,
+ GL_UNPACK_ALIGNMENT, GL_VIEWPORT: {
+ // version 2.0
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.0
+ case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER,
+ GL_DRAW_FRAMEBUFFER_BINDING, GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION,
+ GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS,
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES,
+ GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS,
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT,
+ GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS,
+ GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING,
+ GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD,
+ GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS,
+ GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: {
+ minRequiredVersion(3, 0)
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.1
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(param)
+ }
+ }
+
+ v := values[0:stateVariableSize(param)]
+ ctx := GetContext()
+ switch (param) {
+ case GL_BLEND:
+ v[0] = ctx.Capabilities[GL_BLEND]
+ case GL_CULL_FACE:
+ v[0] = ctx.Capabilities[GL_CULL_FACE]
+ case GL_DEPTH_TEST:
+ v[0] = ctx.Capabilities[GL_DEPTH_TEST]
+ case GL_DITHER:
+ v[0] = ctx.Capabilities[GL_DITHER]
+ case GL_POLYGON_OFFSET_FILL:
+ v[0] = ctx.Capabilities[GL_POLYGON_OFFSET_FILL]
+ case GL_SAMPLE_ALPHA_TO_COVERAGE:
+ v[0] = ctx.Capabilities[GL_SAMPLE_ALPHA_TO_COVERAGE]
+ case GL_SAMPLE_COVERAGE:
+ v[0] = ctx.Capabilities[GL_SAMPLE_COVERAGE]
+ case GL_SCISSOR_TEST:
+ v[0] = ctx.Capabilities[GL_SCISSOR_TEST]
+ case GL_STENCIL_TEST:
+ v[0] = ctx.Capabilities[GL_STENCIL_TEST]
+
+ case GL_DEPTH_WRITEMASK:
+ v[0] = ctx.Rasterizing.DepthMask
+ case GL_COLOR_WRITEMASK: {
+ v[0] = ctx.Rasterizing.ColorMaskRed
+ v[1] = ctx.Rasterizing.ColorMaskGreen
+ v[2] = ctx.Rasterizing.ColorMaskBlue
+ v[3] = ctx.Rasterizing.ColorMaskAlpha
+ }
+ case GL_SAMPLE_COVERAGE_INVERT:
+ v[0] = ctx.Rasterizing.SampleCoverageInvert
+ case GL_SHADER_COMPILER:
+ v[0] = ?
+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
+ v[0] = ?
+
+ // TODO: all the values returned by glGetFloatv and glGetIntegerv can
+ // be returned here with a type conversion where GL_FALSE is only returned
+ // if the value is 0.0 (or 0).
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetFloatv(GLenum param, GLfloat* values) {
+ minRequiredVersion(2, 0)
+ switch (param) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM,
+ GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST,
+ GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_FRAMEBUFFER_BINDING,
+ GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE,
+ GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS,
+ GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS,
+ GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL,
+ GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP,
+ GL_UNPACK_ALIGNMENT, GL_VIEWPORT: {
+ // version 2.0
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.0
+ case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER,
+ GL_DRAW_FRAMEBUFFER_BINDING, GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION,
+ GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS,
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES,
+ GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS,
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT,
+ GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS,
+ GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING,
+ GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD,
+ GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS,
+ GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: {
+ minRequiredVersion(3, 0)
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.1
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(param)
+ }
+ }
+
+ v := values[0:stateVariableSize(param)]
+ ctx := GetContext()
+ switch (param) {
+ case GL_DEPTH_RANGE: {
+ v[0] = ctx.Rasterizing.DepthNear
+ v[1] = ctx.Rasterizing.DepthFar
+ }
+ case GL_LINE_WIDTH:
+ v[0] = ctx.Rasterizing.LineWidth
+ case GL_POLYGON_OFFSET_FACTOR:
+ v[0] = ctx.Rasterizing.PolygonOffsetFactor
+ case GL_POLYGON_OFFSET_UNITS:
+ v[0] = ctx.Rasterizing.PolygonOffsetUnits
+ case GL_SAMPLE_COVERAGE_VALUE:
+ v[0] = ctx.Rasterizing.SampleCoverageValue
+ case GL_COLOR_CLEAR_VALUE: {
+ v[0] = ctx.Clearing.ClearColor.Red
+ v[1] = ctx.Clearing.ClearColor.Green
+ v[2] = ctx.Clearing.ClearColor.Blue
+ v[3] = ctx.Clearing.ClearColor.Alpha
+ }
+ case GL_DEPTH_CLEAR_VALUE:
+ v[0] = ctx.Clearing.ClearDepth
+ case GL_ALIASED_LINE_WIDTH_RANGE: {
+ v[0] = ? /* smallest */
+ v[1] = ? /* largest */
+ }
+ case GL_ALIASED_POINT_SIZE_RANGE: {
+ v[0] = ? /* smallest */
+ v[1] = ? /* largest */
+ }
+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
+ v[0] = ?
+
+ // TODO: all the values returned by glGetBooleanv and glGetIntegerv can
+ // be returned here with a type conversion.
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetInteger64i_v(GLenum target, GLuint index, GLint64* data) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING,
+ GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE,
+ GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER,
+ GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS,
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH,
+ GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS,
+ GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE,
+ GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES,
+ GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES,
+ GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS,
+ GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS,
+ GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS,
+ GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR,
+ GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX,
+ GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER,
+ GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY,
+ GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES,
+ GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: {
+ // version 3.0
+ }
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetInteger64v(GLenum pname, GLint64* data) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING,
+ GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE,
+ GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER,
+ GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS,
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH,
+ GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS,
+ GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE,
+ GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES,
+ GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES,
+ GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS,
+ GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS,
+ GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS,
+ GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR,
+ GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX,
+ GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER,
+ GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY,
+ GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES,
+ GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: {
+ // version 3.0
+ }
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetIntegeri_v(GLenum target, GLuint index, GLint* data) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING,
+ GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM, GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE,
+ GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST, GL_DEPTH_WRITEMASK, GL_DITHER,
+ GL_DRAW_BUFFER, GL_DRAW_FRAMEBUFFER_BINDING, GL_ELEMENT_ARRAY_BUFFER_BINDING,
+ GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS,
+ GL_IMPLEMENTATION_COLOR_READ_FORMAT, GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH,
+ GL_MAJOR_VERSION, GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS,
+ GL_MAX_COLOR_ATTACHMENTS, GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_CUBE_MAP_TEXTURE_SIZE,
+ GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES, GL_MAX_ELEMENTS_VERTICES,
+ GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_BLOCKS,
+ GL_MAX_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_FRAGMENT_UNIFORM_VECTORS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_RENDERBUFFER_SIZE, GL_MAX_SAMPLES,
+ GL_MAX_SERVER_WAIT_TIMEOUT, GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_LOD_BIAS,
+ GL_MAX_TEXTURE_SIZE, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VARYING_VECTORS, GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_OUTPUT_COMPONENTS,
+ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MAX_VERTEX_UNIFORM_VECTORS, GL_MAX_VIEWPORT_DIMS,
+ GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET, GL_NUM_COMPRESSED_TEXTURE_FORMATS,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS, GL_PACK_SKIP_ROWS,
+ GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING, GL_POLYGON_OFFSET_FACTOR,
+ GL_POLYGON_OFFSET_FILL, GL_POLYGON_OFFSET_UNITS, GL_PRIMITIVE_RESTART_FIXED_INDEX,
+ GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD, GL_READ_BUFFER,
+ GL_READ_FRAMEBUFFER_BINDING, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_SAMPLES, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_2D_ARRAY,
+ GL_TEXTURE_BINDING_3D, GL_TEXTURE_BINDING_CUBE_MAP, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_ALIGNMENT, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES,
+ GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING, GL_VIEWPORT: {
+ // version 3.0
+ }
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGet.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGet.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGet.xhtml","OpenGL ES 3.1")
+cmd void glGetIntegerv(GLenum param, GLint* values) {
+ minRequiredVersion(2, 0)
+ switch (param) {
+ case GL_ACTIVE_TEXTURE, GL_ALIASED_LINE_WIDTH_RANGE, GL_ALIASED_POINT_SIZE_RANGE,
+ GL_ALPHA_BITS, GL_ARRAY_BUFFER_BINDING, GL_BLEND, GL_BLEND_COLOR, GL_BLEND_DST_ALPHA,
+ GL_BLEND_DST_RGB, GL_BLEND_EQUATION_ALPHA, GL_BLEND_EQUATION_RGB, GL_BLEND_SRC_ALPHA,
+ GL_BLEND_SRC_RGB, GL_BLUE_BITS, GL_COLOR_CLEAR_VALUE, GL_COLOR_WRITEMASK,
+ GL_COMPRESSED_TEXTURE_FORMATS, GL_CULL_FACE, GL_CULL_FACE_MODE, GL_CURRENT_PROGRAM,
+ GL_DEPTH_BITS, GL_DEPTH_CLEAR_VALUE, GL_DEPTH_FUNC, GL_DEPTH_RANGE, GL_DEPTH_TEST,
+ GL_DEPTH_WRITEMASK, GL_DITHER, GL_ELEMENT_ARRAY_BUFFER_BINDING, GL_FRAMEBUFFER_BINDING,
+ GL_FRONT_FACE, GL_GENERATE_MIPMAP_HINT, GL_GREEN_BITS, GL_IMPLEMENTATION_COLOR_READ_FORMAT,
+ GL_IMPLEMENTATION_COLOR_READ_TYPE, GL_LINE_WIDTH, GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+ GL_MAX_CUBE_MAP_TEXTURE_SIZE, GL_MAX_FRAGMENT_UNIFORM_VECTORS, GL_MAX_RENDERBUFFER_SIZE,
+ GL_MAX_TEXTURE_IMAGE_UNITS, GL_MAX_TEXTURE_SIZE, GL_MAX_VARYING_VECTORS,
+ GL_MAX_VERTEX_ATTRIBS, GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS, GL_MAX_VERTEX_UNIFORM_VECTORS,
+ GL_MAX_VIEWPORT_DIMS, GL_NUM_COMPRESSED_TEXTURE_FORMATS, GL_NUM_SHADER_BINARY_FORMATS,
+ GL_PACK_ALIGNMENT, GL_POLYGON_OFFSET_FACTOR, GL_POLYGON_OFFSET_FILL,
+ GL_POLYGON_OFFSET_UNITS, GL_RED_BITS, GL_RENDERBUFFER_BINDING, GL_SAMPLES,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_BUFFERS, GL_SAMPLE_COVERAGE,
+ GL_SAMPLE_COVERAGE_INVERT, GL_SAMPLE_COVERAGE_VALUE, GL_SCISSOR_BOX, GL_SCISSOR_TEST,
+ GL_SHADER_BINARY_FORMATS, GL_SHADER_COMPILER, GL_STENCIL_BACK_FAIL, GL_STENCIL_BACK_FUNC,
+ GL_STENCIL_BACK_PASS_DEPTH_FAIL, GL_STENCIL_BACK_PASS_DEPTH_PASS, GL_STENCIL_BACK_REF,
+ GL_STENCIL_BACK_VALUE_MASK, GL_STENCIL_BACK_WRITEMASK, GL_STENCIL_BITS,
+ GL_STENCIL_CLEAR_VALUE, GL_STENCIL_FAIL, GL_STENCIL_FUNC, GL_STENCIL_PASS_DEPTH_FAIL,
+ GL_STENCIL_PASS_DEPTH_PASS, GL_STENCIL_REF, GL_STENCIL_TEST, GL_STENCIL_VALUE_MASK,
+ GL_STENCIL_WRITEMASK, GL_SUBPIXEL_BITS, GL_TEXTURE_BINDING_2D, GL_TEXTURE_BINDING_CUBE_MAP,
+ GL_UNPACK_ALIGNMENT, GL_VIEWPORT: {
+ // version 2.0
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.0
+ case GL_COPY_READ_BUFFER_BINDING, GL_COPY_WRITE_BUFFER_BINDING, GL_DRAW_BUFFER,
+ GL_DRAW_FRAMEBUFFER_BINDING, GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_MAJOR_VERSION,
+ GL_MAX_3D_TEXTURE_SIZE, GL_MAX_ARRAY_TEXTURE_LAYERS, GL_MAX_COLOR_ATTACHMENTS,
+ GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS, GL_MAX_COMBINED_UNIFORM_BLOCKS,
+ GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS, GL_MAX_DRAW_BUFFERS, GL_MAX_ELEMENTS_INDICES,
+ GL_MAX_ELEMENTS_VERTICES, GL_MAX_ELEMENT_INDEX, GL_MAX_FRAGMENT_INPUT_COMPONENTS,
+ GL_MAX_FRAGMENT_UNIFORM_BLOCKS, GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
+ GL_MAX_PROGRAM_TEXEL_OFFSET, GL_MAX_SAMPLES, GL_MAX_SERVER_WAIT_TIMEOUT,
+ GL_MAX_TEXTURE_LOD_BIAS, GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+ GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS, GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+ GL_MAX_UNIFORM_BLOCK_SIZE, GL_MAX_UNIFORM_BUFFER_BINDINGS, GL_MAX_VARYING_COMPONENTS,
+ GL_MAX_VERTEX_OUTPUT_COMPONENTS, GL_MAX_VERTEX_UNIFORM_BLOCKS,
+ GL_MAX_VERTEX_UNIFORM_COMPONENTS, GL_MINOR_VERSION, GL_MIN_PROGRAM_TEXEL_OFFSET,
+ GL_NUM_EXTENSIONS, GL_NUM_PROGRAM_BINARY_FORMATS, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_PIXELS,
+ GL_PACK_SKIP_ROWS, GL_PIXEL_PACK_BUFFER_BINDING, GL_PIXEL_UNPACK_BUFFER_BINDING,
+ GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_PROGRAM_BINARY_FORMATS, GL_RASTERIZER_DISCARD,
+ GL_READ_BUFFER, GL_READ_FRAMEBUFFER_BINDING, GL_SAMPLER_BINDING,
+ GL_TEXTURE_BINDING_2D_ARRAY, GL_TEXTURE_BINDING_3D, GL_TRANSFORM_FEEDBACK_ACTIVE,
+ GL_TRANSFORM_FEEDBACK_BINDING, GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,
+ GL_TRANSFORM_FEEDBACK_BUFFER_SIZE, GL_TRANSFORM_FEEDBACK_BUFFER_START,
+ GL_TRANSFORM_FEEDBACK_PAUSED, GL_UNIFORM_BUFFER_BINDING,
+ GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, GL_UNIFORM_BUFFER_SIZE, GL_UNIFORM_BUFFER_START,
+ GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES, GL_UNPACK_SKIP_PIXELS,
+ GL_UNPACK_SKIP_ROWS, GL_VERTEX_ARRAY_BINDING: {
+ minRequiredVersion(3, 0)
+ }
+ // TODO: GL_FRAMEBUFFER_BINDING seems to be removed in 3.1
+ case GL_DISPATCH_INDIRECT_BUFFER_BINDING, GL_IMAGE_BINDING_LAYERED,
+ GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS, GL_MAX_COLOR_TEXTURE_SAMPLES,
+ GL_MAX_COMBINED_ATOMIC_COUNTERS, GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,
+ GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS, GL_MAX_COMPUTE_ATOMIC_COUNTERS,
+ GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS, GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,
+ GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS, GL_MAX_COMPUTE_UNIFORM_BLOCKS,
+ GL_MAX_COMPUTE_UNIFORM_COMPONENTS, GL_MAX_COMPUTE_WORK_GROUP_COUNT,
+ GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, GL_MAX_COMPUTE_WORK_GROUP_SIZE,
+ GL_MAX_FRAGMENT_ATOMIC_COUNTERS, GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,
+ GL_MAX_FRAMEBUFFER_HEIGHT, GL_MAX_FRAMEBUFFER_SAMPLES, GL_MAX_FRAMEBUFFER_WIDTH,
+ GL_MAX_INTEGER_SAMPLES, GL_MAX_SAMPLE_MASK_WORDS, GL_MAX_SHADER_STORAGE_BLOCK_SIZE,
+ GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS, GL_MAX_UNIFORM_LOCATIONS,
+ GL_MAX_VERTEX_ATOMIC_COUNTERS, GL_MAX_VERTEX_ATTRIB_BINDINGS,
+ GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET, GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,
+ GL_PROGRAM_PIPELINE_BINDING, GL_SHADER_STORAGE_BUFFER_BINDING,
+ GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT, GL_SHADER_STORAGE_BUFFER_SIZE,
+ GL_SHADER_STORAGE_BUFFER_START, GL_TEXTURE_BINDING_2D_MULTISAMPLE,
+ GL_VERTEX_BINDING_DIVISOR, GL_VERTEX_BINDING_OFFSET, GL_VERTEX_BINDING_STRIDE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(param)
+ }
+ }
+
+ v := values[0:stateVariableSize(param)]
+ ctx := GetContext()
+ switch (param) {
+ case GL_ACTIVE_TEXTURE:
+ v[0] = as!s32(ctx.ActiveTextureUnit)
+ case GL_ARRAY_BUFFER_BINDING:
+ v[0] = as!s32(ctx.BoundBuffers[GL_ARRAY_BUFFER])
+ case GL_ELEMENT_ARRAY_BUFFER_BINDING:
+ v[0] = as!s32(ctx.BoundBuffers[GL_ELEMENT_ARRAY_BUFFER])
+ case GL_BLEND_SRC_ALPHA:
+ v[0] = as!s32(ctx.Blending.SrcAlphaBlendFactor)
+ case GL_BLEND_SRC_RGB:
+ v[0] = as!s32(ctx.Blending.SrcRgbBlendFactor)
+ case GL_BLEND_DST_ALPHA:
+ v[0] = as!s32(ctx.Blending.DstAlphaBlendFactor)
+ case GL_BLEND_DST_RGB:
+ v[0] = as!s32(ctx.Blending.DstRgbBlendFactor)
+ case GL_BLEND_EQUATION_RGB:
+ v[0] = as!s32(ctx.Blending.BlendEquationRgb)
+ case GL_BLEND_EQUATION_ALPHA:
+ v[0] = as!s32(ctx.Blending.BlendEquationAlpha)
+ case GL_BLEND_COLOR: {
+ v[0] = as!s32(ctx.Blending.BlendColor.Red)
+ v[1] = as!s32(ctx.Blending.BlendColor.Green)
+ v[2] = as!s32(ctx.Blending.BlendColor.Blue)
+ v[3] = as!s32(ctx.Blending.BlendColor.Alpha)
+ }
+ case GL_DEPTH_FUNC:
+ v[0] = as!s32(ctx.Rasterizing.DepthTestFunction)
+ case GL_DEPTH_CLEAR_VALUE:
+ v[0] = as!s32(ctx.Clearing.ClearDepth)
+ case GL_STENCIL_WRITEMASK:
+ v[0] = as!s32(ctx.Rasterizing.StencilMask[GL_FRONT])
+ case GL_STENCIL_BACK_WRITEMASK:
+ v[0] = as!s32(ctx.Rasterizing.StencilMask[GL_BACK])
+ case GL_VIEWPORT: {
+ v[0] = ctx.Rasterizing.Viewport.X
+ v[1] = ctx.Rasterizing.Viewport.Y
+ v[2] = ctx.Rasterizing.Viewport.Width
+ v[3] = ctx.Rasterizing.Viewport.Height
+ }
+ case GL_SCISSOR_BOX: {
+ v[0] = ctx.Rasterizing.Scissor.X
+ v[1] = ctx.Rasterizing.Scissor.Y
+ v[2] = ctx.Rasterizing.Scissor.Width
+ v[3] = ctx.Rasterizing.Scissor.Height
+ }
+ case GL_FRONT_FACE:
+ v[0] = as!s32(ctx.Rasterizing.FrontFace)
+ case GL_CULL_FACE_MODE:
+ v[0] = as!s32(ctx.Rasterizing.CullFace)
+ case GL_STENCIL_CLEAR_VALUE:
+ v[0] = ctx.Clearing.ClearStencil
+ case GL_FRAMEBUFFER_BINDING:
+ v[0] = as!s32(ctx.BoundFramebuffers[GL_FRAMEBUFFER])
+ case GL_READ_FRAMEBUFFER_BINDING:
+ v[0] = as!s32(ctx.BoundFramebuffers[GL_READ_FRAMEBUFFER])
+ case GL_RENDERBUFFER_BINDING:
+ v[0] = as!s32(ctx.BoundRenderbuffers[GL_RENDERBUFFER])
+ case GL_CURRENT_PROGRAM:
+ v[0] = as!s32(ctx.BoundProgram)
+ case GL_TEXTURE_BINDING_2D:
+ v[0] = as!s32(ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_2D])
+ case GL_TEXTURE_BINDING_CUBE_MAP:
+ v[0] = as!s32(ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_CUBE_MAP])
+ case GL_GENERATE_MIPMAP_HINT:
+ v[0] = as!s32(ctx.GenerateMipmapHint)
+ case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS: {
+ result := ?
+ assert(result > 7)
+ v[0] = result
+ }
+ case GL_MAX_CUBE_MAP_TEXTURE_SIZE: {
+ result := ?
+ assert(result > 15)
+ v[0] = result
+ }
+ case GL_MAX_FRAGMENT_UNIFORM_VECTORS: {
+ result := ?
+ assert(result > 15)
+ v[0] = result
+ }
+ case GL_MAX_RENDERBUFFER_SIZE: {
+ result := ?
+ assert(result > 0)
+ v[0] = result
+ }
+ case GL_MAX_TEXTURE_IMAGE_UNITS: {
+ result := ?
+ assert(result > 7)
+ v[0] = result
+ }
+ case GL_MAX_TEXTURE_SIZE: {
+ result := ?
+ assert(result > 63)
+ v[0] = result
+ }
+ case GL_MAX_VARYING_VECTORS: {
+ result := ?
+ assert(result > 7)
+ v[0] = result
+ }
+ case GL_MAX_VERTEX_ATTRIBS: {
+ result := ?
+ assert(result > 7)
+ v[0] = result
+ }
+ case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS:
+ v[0] = ?
+ case GL_MAX_VERTEX_UNIFORM_VECTORS: {
+ result := ?
+ assert(result > 127)
+ v[0] = result
+ }
+ case GL_MAX_VIEWPORT_DIMS: {
+ max_width := ?
+ max_height := ?
+ assert(max_width > ctx.Rasterizing.Viewport.Width - 1)
+ assert(max_height > ctx.Rasterizing.Viewport.Height - 1)
+ v[0] = max_width
+ v[1] = max_height
+ }
+ case GL_NUM_COMPRESSED_TEXTURE_FORMATS: {
+ result := ?
+ assert(result > -1)
+ v[0] = result
+ }
+ case GL_NUM_SHADER_BINARY_FORMATS: {
+ result := ?
+ assert(result > -1)
+ v[0] = result
+ }
+ case GL_PACK_ALIGNMENT:
+ v[0] = ctx.PixelStorage[GL_PACK_ALIGNMENT]
+ case GL_UNPACK_ALIGNMENT:
+ v[0] = ctx.PixelStorage[GL_UNPACK_ALIGNMENT]
+ case GL_ALPHA_BITS:
+ v[0] = ?
+ case GL_BLUE_BITS:
+ v[0] = ?
+ case GL_GREEN_BITS:
+ v[0] = ?
+ case GL_RED_BITS:
+ v[0] = ?
+ case GL_DEPTH_BITS:
+ v[0] = ?
+ case GL_SAMPLE_BUFFERS:
+ v[0] = ?
+ case GL_SAMPLES:
+ v[0] = ?
+ /*
+ case GL_SHADER_BINARY_FORMATS:
+ values = ? // list of length GL_NUM_SHADER_BINARY_FORMATS
+ case GL_COMPRESSED_TEXTURE_FORMATS:
+ values = ? // list of length GL_NUM_COMPRESSED_TEXTURE_FORMATS
+ */
+ case GL_STENCIL_BITS:
+ v[0] = ?
+ case GL_SUBPIXEL_BITS: {
+ result := ?
+ assert(result > 3)
+ v[0] = result
+ }
+ case GL_IMPLEMENTATION_COLOR_READ_FORMAT:
+ v[0] = ?
+ case GL_IMPLEMENTATION_COLOR_READ_TYPE:
+ v[0] = ?
+ case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
+ v[0] = ?
+ case GL_GPU_DISJOINT_EXT:
+ v[0] = ?
+
+ // TODO: implement the following which depend on:
+ // glStencilOp, glStencilOpSeparate, glStencilFuncSeparate.
+ // GL_STENCIL_BACK_FAIL
+ // GL_STENCIL_BACK_FUNC
+ // GL_STENCIL_BACK_PASS_DEPTH_FAIL
+ // GL_STENCIL_BACK_PASS_DEPTH_PASS
+ // GL_STENCIL_BACK_REF
+ // GL_STENCIL_BACK_VALUE_MASK
+ // GL_STENCIL_FAIL
+ // GL_STENCIL_FUNC
+ // GL_STENCIL_PASS_DEPTH_FAIL
+ // GL_STENCIL_PASS_DEPTH_PASS
+ // GL_STENCIL_REF
+ // GL_STENCIL_VALUE_MASK
+
+ // TODO: all the values returned by glGetFloatv and glGetBooleanv can
+ // be returned here with a type conversion: "_most_ floating-point values
+ // are rounded to the nearest integer value".
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetInternalformativ.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetInternalformativ.xhtml","OpenGL ES 3.1")
+cmd void glGetInternalformativ(GLenum target,
+ GLenum internalformat,
+ GLenum pname,
+ GLsizei bufSize,
+ GLint* params) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_RENDERBUFFER: {
+ // version 3.0
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (internalformat) {
+ case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24,
+ GL_DEPTH_COMPONENT32F, GL_R11F_G11F_B10F, GL_R16F, GL_R16I, GL_R16UI, GL_R32F, GL_R32I,
+ GL_R32UI, GL_R8, GL_R8I, GL_R8UI, GL_R8_SNORM, GL_RG16F, GL_RG16I, GL_RG16UI, GL_RG32F,
+ GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RG8_SNORM, GL_RGB10_A2, GL_RGB10_A2UI,
+ GL_RGB16F, GL_RGB16I, GL_RGB16UI, GL_RGB32F, GL_RGB32I, GL_RGB32UI, GL_RGB565, GL_RGB5_A1,
+ GL_RGB8, GL_RGB8I, GL_RGB8UI, GL_RGB8_SNORM, GL_RGB9_E5, GL_RGBA16F, GL_RGBA16I,
+ GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I, GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I,
+ GL_RGBA8UI, GL_RGBA8_SNORM, GL_SRGB8, GL_SRGB8_ALPHA8: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(internalformat)
+ }
+ }
+ switch (pname) {
+ case GL_NUM_SAMPLE_COUNTS, GL_SAMPLES: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetString.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetString.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetString.xhtml","OpenGL ES 3.1")
+cmd const GLubyte* glGetString(GLenum param) {
+ minRequiredVersion(2, 0)
+ switch (param) {
+ case GL_EXTENSIONS, GL_RENDERER, GL_SHADING_LANGUAGE_VERSION, GL_VENDOR, GL_VERSION: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(param)
+ }
+ }
+
+ return null
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetString.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetString.xhtml","OpenGL ES 3.1")
+cmd const GLubyte* glGetStringi(GLenum name, GLuint index) {
+ minRequiredVersion(3, 0)
+ switch (name) {
+ case GL_EXTENSIONS: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(name)
+ }
+ }
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsEnabled.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsEnabled.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsEnabled.xhtml","OpenGL ES 3.1")
+cmd bool glIsEnabled(GLenum capability) {
+ minRequiredVersion(2, 0)
+ switch (capability) {
+ case GL_BLEND, GL_CULL_FACE, GL_DEPTH_TEST, GL_DITHER, GL_POLYGON_OFFSET_FILL,
+ GL_SAMPLE_ALPHA_TO_COVERAGE, GL_SAMPLE_COVERAGE, GL_SCISSOR_TEST, GL_STENCIL_TEST: {
+ // version 2.0
+ }
+ case GL_PRIMITIVE_RESTART_FIXED_INDEX, GL_RASTERIZER_DISCARD: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(capability)
+ }
+ }
+
+ ctx := GetContext()
+ return ctx.Capabilities[capability]
+}
+
diff --git a/gfxapi/gles/api/synchronization.api b/gfxapi/gles/api/synchronization.api
new file mode 100644
index 000000000..cec69988a
--- /dev/null
+++ b/gfxapi/gles/api/synchronization.api
@@ -0,0 +1,79 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glClientWaitSync.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glClientWaitSync.xhtml","OpenGL ES 3.1")
+cmd GLenum glClientWaitSync(GLsync sync, GLbitfield syncFlags, GLuint64 timeout) {
+ minRequiredVersion(3, 0)
+ supportsBits(syncFlags, GL_SYNC_FLUSH_COMMANDS_BIT)
+ if (GL_SYNC_FLUSH_COMMANDS_BIT in syncFlags) {
+ }
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteSync.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteSync.xhtml","OpenGL ES 3.1")
+cmd void glDeleteSync(GLsync sync) {
+ minRequiredVersion(3, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glFenceSync.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glFenceSync.xhtml","OpenGL ES 3.1")
+cmd GLsync glFenceSync(GLenum condition, GLbitfield syncFlags) {
+ minRequiredVersion(3, 0)
+ switch (condition) {
+ case GL_SYNC_GPU_COMMANDS_COMPLETE: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(condition)
+ }
+ }
+
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetSynciv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetSynciv.xhtml","OpenGL ES 3.1")
+cmd void glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_OBJECT_TYPE, GL_SYNC_CONDITION, GL_SYNC_FLAGS, GL_SYNC_STATUS: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsSync.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsSync.xhtml","OpenGL ES 3.1")
+cmd bool glIsSync(GLsync sync) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glWaitSync.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glWaitSync.xhtml","OpenGL ES 3.1")
+cmd void glWaitSync(GLsync sync, GLbitfield syncFlags, GLuint64 timeout) {
+ minRequiredVersion(3, 0)
+
+ assert(timeout == 0xFFFFFFFFFFFFFFFF) // GL_TIMEOUT_IGNORED
+}
+
diff --git a/gfxapi/gles/api/textures_and_samplers.api b/gfxapi/gles/api/textures_and_samplers.api
new file mode 100644
index 000000000..1985353c2
--- /dev/null
+++ b/gfxapi/gles/api/textures_and_samplers.api
@@ -0,0 +1,1328 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glActiveTexture.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glActiveTexture.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glActiveTexture.xhtml","OpenGL ES 3.1")
+cmd void glActiveTexture(GLenum unit) {
+ minRequiredVersion(2, 0)
+ switch (unit) {
+ case GL_TEXTURE0, GL_TEXTURE1, GL_TEXTURE10, GL_TEXTURE11, GL_TEXTURE12, GL_TEXTURE13,
+ GL_TEXTURE14, GL_TEXTURE15, GL_TEXTURE16, GL_TEXTURE17, GL_TEXTURE18, GL_TEXTURE19,
+ GL_TEXTURE2, GL_TEXTURE20, GL_TEXTURE21, GL_TEXTURE22, GL_TEXTURE23, GL_TEXTURE24,
+ GL_TEXTURE25, GL_TEXTURE26, GL_TEXTURE27, GL_TEXTURE28, GL_TEXTURE29, GL_TEXTURE3,
+ GL_TEXTURE30, GL_TEXTURE31, GL_TEXTURE4, GL_TEXTURE5, GL_TEXTURE6, GL_TEXTURE7,
+ GL_TEXTURE8, GL_TEXTURE9: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(unit)
+ }
+ }
+
+ ctx := GetContext()
+ ctx.ActiveTextureUnit = unit
+ if !(unit in ctx.TextureUnits) {
+ ctx.TextureUnits[unit] = ctx.TextureUnits[unit]
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindImageTexture.xhtml","OpenGL ES 3.1")
+cmd void glBindImageTexture(GLuint unit,
+ TextureId texture,
+ GLint level,
+ GLboolean layered,
+ GLint layer,
+ GLenum access,
+ GLenum format) {
+ minRequiredVersion(3, 1)
+ switch (access) {
+ case GL_READ_ONLY, GL_READ_WRITE, GL_WRITE_ONLY: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(access)
+ }
+ }
+ switch (format) {
+ case GL_R32F, GL_R32I, GL_R32UI, GL_RGBA16F, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I,
+ GL_RGBA32UI, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI, GL_RGBA8_SNORM: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindSampler.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindSampler.xhtml","OpenGL ES 3.1")
+cmd void glBindSampler(GLuint unit, SamplerId sampler) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glBindTexture.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindTexture.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindTexture.xhtml","OpenGL ES 3.1")
+cmd void glBindTexture(GLenum target, TextureId texture) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+ ctx := GetContext()
+ if !(texture in ctx.Instances.Textures) {
+ ctx.Instances.Textures[texture] = new!Texture()
+ }
+ ctx.TextureUnits[ctx.ActiveTextureUnit][target] = texture
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCompressedTexImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCompressedTexImage2D.xhtml","OpenGL ES 3.1")
+cmd void glCompressedTexImage2D(GLenum target,
+ GLint level,
+ GLenum format,
+ GLsizei width,
+ GLsizei height,
+ GLint border,
+ GLsizei image_size,
+ TexturePointer data) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+
+ assert(border == 0)
+ ctx := GetContext()
+ switch (target) {
+ case GL_TEXTURE_2D: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_2D]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: as!u32(image_size),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) && (data != null) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ t.Texture2D[level] = l
+ t.Kind = TEXTURE2D // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_CUBE_MAP]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: as!u32(image_size),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) && (data != null) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ cube := t.Cubemap[level]
+ cube.Faces[as!GLenum(target)] = l
+ t.Cubemap[level] = cube
+ t.Kind = CUBEMAP // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexImage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCompressedTexImage3D.xhtml","OpenGL ES 3.1")
+cmd void glCompressedTexImage3D(GLenum target,
+ GLint level,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLsizei imageSize,
+ const void* data) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (internalformat) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(internalformat)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCompressedTexSubImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexSubImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCompressedTexSubImage2D.xhtml","OpenGL ES 3.1")
+cmd void glCompressedTexSubImage2D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLsizei image_size,
+ TexturePointer data) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCompressedTexSubImage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCompressedTexSubImage3D.xhtml","OpenGL ES 3.1")
+cmd void glCompressedTexSubImage3D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLsizei imageSize,
+ const void* data) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCopyTexImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCopyTexImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCopyTexImage2D.xhtml","OpenGL ES 3.1")
+cmd void glCopyTexImage2D(GLenum target,
+ GLint level,
+ GLenum format,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height,
+ GLint border) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA: {
+ // version 2.0
+ }
+ case GL_R16I, GL_R16UI, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI, GL_RG16I, GL_RG16UI,
+ GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RGB10_A2, GL_RGB10_A2UI, GL_RGB565,
+ GL_RGB5_A1, GL_RGB8, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32I, GL_RGBA32UI, GL_RGBA4, GL_RGBA8,
+ GL_RGBA8I, GL_RGBA8UI, GL_SRGB8, GL_SRGB8_ALPHA8: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glCopyTexSubImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCopyTexSubImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCopyTexSubImage2D.xhtml","OpenGL ES 3.1")
+cmd void glCopyTexSubImage2D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glCopyTexSubImage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glCopyTexSubImage3D.xhtml","OpenGL ES 3.1")
+cmd void glCopyTexSubImage3D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLint x,
+ GLint y,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteSamplers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteSamplers.xhtml","OpenGL ES 3.1")
+cmd void glDeleteSamplers(GLsizei count, const SamplerId* samplers) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glDeleteTextures.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteTextures.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteTextures.xhtml","OpenGL ES 3.1")
+cmd void glDeleteTextures(GLsizei count, const TextureId* textures) {
+ minRequiredVersion(2, 0)
+
+ t := textures[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ ctx.Instances.Textures[t[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenSamplers.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenSamplers.xhtml","OpenGL ES 3.1")
+cmd void glGenSamplers(GLsizei count, SamplerId* samplers) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGenTextures.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenTextures.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenTextures.xhtml","OpenGL ES 3.1")
+cmd void glGenTextures(GLsizei count, TextureId* textures) {
+ minRequiredVersion(2, 0)
+
+ t := textures[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!TextureId(?)
+ ctx.Instances.Textures[id] = new!Texture()
+ t[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGenerateMipmap.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenerateMipmap.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenerateMipmap.xhtml","OpenGL ES 3.1")
+cmd void glGenerateMipmap(GLenum target) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetSamplerParameterfv(SamplerId sampler, GLenum pname, GLfloat* params) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetSamplerParameteriv(SamplerId sampler, GLenum pname, GLint* params) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetTexLevelParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat* params) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_3D,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_TEXTURE_ALPHA_SIZE, GL_TEXTURE_ALPHA_TYPE, GL_TEXTURE_BLUE_SIZE, GL_TEXTURE_BLUE_TYPE,
+ GL_TEXTURE_COMPRESSED, GL_TEXTURE_DEPTH, GL_TEXTURE_DEPTH_SIZE, GL_TEXTURE_DEPTH_TYPE,
+ GL_TEXTURE_FIXED_SAMPLE_LOCATIONS, GL_TEXTURE_GREEN_SIZE, GL_TEXTURE_GREEN_TYPE,
+ GL_TEXTURE_HEIGHT, GL_TEXTURE_INTERNAL_FORMAT, GL_TEXTURE_RED_SIZE, GL_TEXTURE_RED_TYPE,
+ GL_TEXTURE_SAMPLES, GL_TEXTURE_SHARED_SIZE, GL_TEXTURE_STENCIL_SIZE, GL_TEXTURE_WIDTH: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetTexLevelParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_2D_ARRAY, GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_3D,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_TEXTURE_ALPHA_SIZE, GL_TEXTURE_ALPHA_TYPE, GL_TEXTURE_BLUE_SIZE, GL_TEXTURE_BLUE_TYPE,
+ GL_TEXTURE_COMPRESSED, GL_TEXTURE_DEPTH, GL_TEXTURE_DEPTH_SIZE, GL_TEXTURE_DEPTH_TYPE,
+ GL_TEXTURE_FIXED_SAMPLE_LOCATIONS, GL_TEXTURE_GREEN_SIZE, GL_TEXTURE_GREEN_TYPE,
+ GL_TEXTURE_HEIGHT, GL_TEXTURE_INTERNAL_FORMAT, GL_TEXTURE_RED_SIZE, GL_TEXTURE_RED_TYPE,
+ GL_TEXTURE_SAMPLES, GL_TEXTURE_SHARED_SIZE, GL_TEXTURE_STENCIL_SIZE, GL_TEXTURE_WIDTH: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetTexParameterfv(GLenum target, GLenum parameter, GLfloat* values) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_IMMUTABLE_FORMAT, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD,
+ GL_TEXTURE_SWIZZLE_A, GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R,
+ GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE, GL_IMAGE_FORMAT_COMPATIBILITY_TYPE,
+ GL_TEXTURE_IMMUTABLE_LEVELS: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][target]
+ t := ctx.Instances.Textures[id]
+ values[0] = switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER: as!f32(t.MagFilter)
+ case GL_TEXTURE_MIN_FILTER: as!f32(t.MinFilter)
+ case GL_TEXTURE_WRAP_S: as!f32(t.WrapS)
+ case GL_TEXTURE_WRAP_T: as!f32(t.WrapT)
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: as!f32(t.MaxAnisotropy)
+ case GL_TEXTURE_SWIZZLE_R: as!f32(t.SwizzleR)
+ case GL_TEXTURE_SWIZZLE_G: as!f32(t.SwizzleG)
+ case GL_TEXTURE_SWIZZLE_B: as!f32(t.SwizzleB)
+ case GL_TEXTURE_SWIZZLE_A: as!f32(t.SwizzleA)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glGetTexParameteriv(GLenum target, GLenum parameter, GLint* values) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_IMMUTABLE_FORMAT, GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD,
+ GL_TEXTURE_SWIZZLE_A, GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R,
+ GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE, GL_IMAGE_FORMAT_COMPATIBILITY_TYPE,
+ GL_TEXTURE_IMMUTABLE_LEVELS: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][target]
+ t := ctx.Instances.Textures[id]
+ values[0] = switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER: as!s32(t.MagFilter)
+ case GL_TEXTURE_MIN_FILTER: as!s32(t.MinFilter)
+ case GL_TEXTURE_WRAP_S: as!s32(t.WrapS)
+ case GL_TEXTURE_WRAP_T: as!s32(t.WrapT)
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: as!s32(t.MaxAnisotropy)
+ case GL_TEXTURE_SWIZZLE_R: as!s32(t.SwizzleR)
+ case GL_TEXTURE_SWIZZLE_G: as!s32(t.SwizzleG)
+ case GL_TEXTURE_SWIZZLE_B: as!s32(t.SwizzleB)
+ case GL_TEXTURE_SWIZZLE_A: as!s32(t.SwizzleA)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsSampler.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsSampler.xhtml","OpenGL ES 3.1")
+cmd bool glIsSampler(SamplerId sampler) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glIsTexture.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsTexture.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsTexture.xhtml","OpenGL ES 3.1")
+cmd bool glIsTexture(TextureId texture) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ return texture in ctx.Instances.Textures
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glPixelStorei.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glPixelStorei.xhtml","OpenGL ES 3.1")
+cmd void glPixelStorei(GLenum parameter, GLint value) {
+ minRequiredVersion(2, 0)
+ switch (parameter) {
+ case GL_PACK_ALIGNMENT, GL_UNPACK_ALIGNMENT: {
+ // version 2.0
+ }
+ case GL_PACK_IMAGE_HEIGHT, GL_PACK_ROW_LENGTH, GL_PACK_SKIP_IMAGES, GL_PACK_SKIP_PIXELS,
+ GL_PACK_SKIP_ROWS, GL_UNPACK_IMAGE_HEIGHT, GL_UNPACK_ROW_LENGTH, GL_UNPACK_SKIP_IMAGES,
+ GL_UNPACK_SKIP_PIXELS, GL_UNPACK_SKIP_ROWS: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ assert((value == 1) || (value == 2) || (value == 4) || (value == 8))
+ ctx := GetContext()
+ ctx.PixelStorage[parameter] = value
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glSamplerParameterf(SamplerId sampler, GLenum pname, GLfloat param) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glSamplerParameterfv(SamplerId sampler, GLenum pname, const GLfloat* param) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glSamplerParameteri(SamplerId sampler, GLenum pname, GLint param) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glSamplerParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glSamplerParameter.xhtml","OpenGL ES 3.1")
+cmd void glSamplerParameteriv(SamplerId sampler, GLenum pname, const GLint* param) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE, GL_TEXTURE_MAG_FILTER,
+ GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MIN_LOD, GL_TEXTURE_WRAP_R,
+ GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexImage2D.xhtml","OpenGL ES 3.1")
+cmd void glTexImage2D(GLenum target,
+ GLint level,
+ GLint internal_format,
+ GLsizei width,
+ GLsizei height,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ TexturePointer data) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA: {
+ // version 2.0
+ }
+ case GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_RED, GL_RED_INTEGER, GL_RG, GL_RGBA_INTEGER,
+ GL_RGB_INTEGER, GL_RG_INTEGER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1,
+ GL_UNSIGNED_SHORT_5_6_5: {
+ // version 2.0
+ }
+ case GL_BYTE, GL_FLOAT, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_HALF_FLOAT, GL_INT, GL_SHORT,
+ GL_UNSIGNED_INT, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_24_8,
+ GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_5_9_9_9_REV, GL_UNSIGNED_SHORT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+
+ assert(internal_format == format)
+ assert(border == 0)
+ ctx := GetContext()
+ switch (target) {
+ case GL_TEXTURE_2D: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_2D]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: imageSize(as!u32(width), as!u32(height), format, type),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (data != null) {
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ } else {
+ l.Data = make!u8(l.Size)
+ }
+
+ t.Texture2D[level] = l
+ t.Kind = TEXTURE2D // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_CUBE_MAP]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: imageSize(as!u32(width), as!u32(height), format, type),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (data != null) {
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ } else {
+ l.Data = make!u8(l.Size)
+ }
+ cube := t.Cubemap[level]
+ cube.Faces[as!GLenum(target)] = l
+ t.Cubemap[level] = cube
+ t.Kind = CUBEMAP // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexImage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexImage3D.xhtml","OpenGL ES 3.1")
+cmd void glTexImage3D(GLenum target,
+ GLint level,
+ GLint internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLint border,
+ GLenum format,
+ GLenum type,
+ const void* pixels) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_ALPHA, GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RED,
+ GL_RED_INTEGER, GL_RG, GL_RGB, GL_RGBA, GL_RGBA_INTEGER, GL_RGB_INTEGER, GL_RG_INTEGER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ switch (type) {
+ case GL_BYTE, GL_FLOAT, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_HALF_FLOAT, GL_INT, GL_SHORT,
+ GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_24_8,
+ GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_5_9_9_9_REV, GL_UNSIGNED_SHORT,
+ GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_5_6_5: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glTexParameterf(GLenum target, GLenum parameter, GLfloat value) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD, GL_TEXTURE_SWIZZLE_A,
+ GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][target]
+ t := ctx.Instances.Textures[id]
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER: t.MagFilter = as!GLenum(value)
+ case GL_TEXTURE_MIN_FILTER: t.MinFilter = as!GLenum(value)
+ case GL_TEXTURE_WRAP_S: t.WrapS = as!GLenum(value)
+ case GL_TEXTURE_WRAP_T: t.WrapT = as!GLenum(value)
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: t.MaxAnisotropy = as!f32(value)
+ case GL_TEXTURE_SWIZZLE_R: t.SwizzleR = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_G: t.SwizzleG = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_B: t.SwizzleB = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_A: t.SwizzleA = as!GLenum(value)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glTexParameterfv(GLenum target, GLenum pname, const GLfloat* params) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD, GL_TEXTURE_SWIZZLE_A,
+ GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glTexParameteri(GLenum target, GLenum parameter, GLint value) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD, GL_TEXTURE_SWIZZLE_A,
+ GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(parameter)
+ }
+ }
+
+ ctx := GetContext()
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][target]
+ t := ctx.Instances.Textures[id]
+ switch (parameter) {
+ case GL_TEXTURE_MAG_FILTER: t.MagFilter = as!GLenum(value)
+ case GL_TEXTURE_MIN_FILTER: t.MinFilter = as!GLenum(value)
+ case GL_TEXTURE_WRAP_S: t.WrapS = as!GLenum(value)
+ case GL_TEXTURE_WRAP_T: t.WrapT = as!GLenum(value)
+ case GL_TEXTURE_MAX_ANISOTROPY_EXT: t.MaxAnisotropy = as!f32(value)
+ case GL_TEXTURE_SWIZZLE_R: t.SwizzleR = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_G: t.SwizzleG = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_B: t.SwizzleB = as!GLenum(value)
+ case GL_TEXTURE_SWIZZLE_A: t.SwizzleA = as!GLenum(value)
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexParameter.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexParameter.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexParameter.xhtml","OpenGL ES 3.1")
+cmd void glTexParameteriv(GLenum target, GLenum pname, const GLint* params) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 2.0
+ }
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (pname) {
+ case GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER, GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T: {
+ // version 2.0
+ }
+ case GL_TEXTURE_BASE_LEVEL, GL_TEXTURE_COMPARE_FUNC, GL_TEXTURE_COMPARE_MODE,
+ GL_TEXTURE_MAX_LEVEL, GL_TEXTURE_MAX_LOD, GL_TEXTURE_MIN_LOD, GL_TEXTURE_SWIZZLE_A,
+ GL_TEXTURE_SWIZZLE_B, GL_TEXTURE_SWIZZLE_G, GL_TEXTURE_SWIZZLE_R, GL_TEXTURE_WRAP_R: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_DEPTH_STENCIL_TEXTURE_MODE: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexStorage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexStorage2D.xhtml","OpenGL ES 3.1")
+cmd void glTexStorage2D(GLenum target,
+ GLsizei levels,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (internalformat) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8,
+ GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32F, GL_R11F_G11F_B10F,
+ GL_R16F, GL_R16I, GL_R16UI, GL_R32F, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI,
+ GL_R8_SNORM, GL_RG16F, GL_RG16I, GL_RG16UI, GL_RG32F, GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I,
+ GL_RG8UI, GL_RG8_SNORM, GL_RGB10_A2, GL_RGB10_A2UI, GL_RGB16F, GL_RGB16I, GL_RGB16UI,
+ GL_RGB32F, GL_RGB32I, GL_RGB32UI, GL_RGB565, GL_RGB5_A1, GL_RGB8, GL_RGB8I, GL_RGB8UI,
+ GL_RGB8_SNORM, GL_RGB9_E5, GL_RGBA16F, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I,
+ GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI, GL_RGBA8_SNORM, GL_SRGB8,
+ GL_SRGB8_ALPHA8: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(internalformat)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexStorage2DMultisample.xhtml","OpenGL ES 3.1")
+cmd void glTexStorage2DMultisample(GLenum target,
+ GLsizei samples,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLboolean fixedsamplelocations) {
+ minRequiredVersion(3, 1)
+ switch (target) {
+ case GL_TEXTURE_2D_MULTISAMPLE: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (internalformat) {
+ case GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24,
+ GL_DEPTH_COMPONENT32F, GL_R11F_G11F_B10F, GL_R16F, GL_R16I, GL_R16UI, GL_R32F, GL_R32I,
+ GL_R32UI, GL_R8, GL_R8I, GL_R8UI, GL_R8_SNORM, GL_RG16F, GL_RG16I, GL_RG16UI, GL_RG32F,
+ GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I, GL_RG8UI, GL_RG8_SNORM, GL_RGB10_A2, GL_RGB10_A2UI,
+ GL_RGB16F, GL_RGB16I, GL_RGB16UI, GL_RGB32F, GL_RGB32I, GL_RGB32UI, GL_RGB565, GL_RGB5_A1,
+ GL_RGB8, GL_RGB8I, GL_RGB8UI, GL_RGB8_SNORM, GL_RGB9_E5, GL_RGBA16F, GL_RGBA16I,
+ GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I, GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I,
+ GL_RGBA8UI, GL_RGBA8_SNORM, GL_SRGB8, GL_SRGB8_ALPHA8: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(internalformat)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexStorage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexStorage3D.xhtml","OpenGL ES 3.1")
+cmd void glTexStorage3D(GLenum target,
+ GLsizei levels,
+ GLenum internalformat,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (internalformat) {
+ case GL_COMPRESSED_R11_EAC, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RGB8_ETC2,
+ GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC,
+ GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC,
+ GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2,
+ GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_DEPTH24_STENCIL8, GL_DEPTH32F_STENCIL8,
+ GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT32F, GL_R11F_G11F_B10F,
+ GL_R16F, GL_R16I, GL_R16UI, GL_R32F, GL_R32I, GL_R32UI, GL_R8, GL_R8I, GL_R8UI,
+ GL_R8_SNORM, GL_RG16F, GL_RG16I, GL_RG16UI, GL_RG32F, GL_RG32I, GL_RG32UI, GL_RG8, GL_RG8I,
+ GL_RG8UI, GL_RG8_SNORM, GL_RGB10_A2, GL_RGB10_A2UI, GL_RGB16F, GL_RGB16I, GL_RGB16UI,
+ GL_RGB32F, GL_RGB32I, GL_RGB32UI, GL_RGB565, GL_RGB5_A1, GL_RGB8, GL_RGB8I, GL_RGB8UI,
+ GL_RGB8_SNORM, GL_RGB9_E5, GL_RGBA16F, GL_RGBA16I, GL_RGBA16UI, GL_RGBA32F, GL_RGBA32I,
+ GL_RGBA32UI, GL_RGBA4, GL_RGBA8, GL_RGBA8I, GL_RGBA8UI, GL_RGBA8_SNORM, GL_SRGB8,
+ GL_SRGB8_ALPHA8: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(internalformat)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexSubImage2D.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexSubImage2D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexSubImage2D.xhtml","OpenGL ES 3.1")
+cmd void glTexSubImage2D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLsizei width,
+ GLsizei height,
+ GLenum format,
+ GLenum type,
+ TexturePointer data) {
+ minRequiredVersion(2, 0)
+ switch (target) {
+ case GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, GL_TEXTURE_CUBE_MAP_POSITIVE_X,
+ GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RGB, GL_RGBA: {
+ // version 2.0
+ }
+ case GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_RED, GL_RED_INTEGER, GL_RG, GL_RGBA_INTEGER,
+ GL_RGB_INTEGER, GL_RG_INTEGER: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ switch (type) {
+ case GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1,
+ GL_UNSIGNED_SHORT_5_6_5: {
+ // version 2.0
+ }
+ case GL_BYTE, GL_FLOAT, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_HALF_FLOAT, GL_INT, GL_SHORT,
+ GL_UNSIGNED_INT, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_24_8,
+ GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_5_9_9_9_REV, GL_UNSIGNED_SHORT: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+
+ ctx := GetContext()
+ // TODO: This does not consider xoffset or yoffset and completely replaces the level.
+ // FIX.
+ switch (target) {
+ case GL_TEXTURE_2D: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_2D]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: imageSize(as!u32(width), as!u32(height), format, type),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) && (data != null) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ t.Texture2D[level] = l
+ t.Kind = TEXTURE2D // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
+ GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: {
+ id := ctx.TextureUnits[ctx.ActiveTextureUnit][GL_TEXTURE_CUBE_MAP]
+ t := ctx.Instances.Textures[id]
+ l := Image(
+ Width: width,
+ Height: height,
+ Size: imageSize(as!u32(width), as!u32(height), format, type),
+ Format: as!GLenum(format) /* TODO: Implicit cast? */,
+ )
+ if (ctx.BoundBuffers[GL_PIXEL_UNPACK_BUFFER] == 0) && (data != null) {
+ l.Data = clone(as!u8*(data)[0:l.Size])
+ }
+ cube := t.Cubemap[level]
+ cube.Faces[as!GLenum(target)] = l
+ t.Cubemap[level] = cube
+ t.Kind = CUBEMAP // TODO: Warning/Error if kind has changed?
+ // TODO: Warning/Error if format has changed
+ t.Format = as!GLenum(format) // TODO: Implicit cast?
+ }
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTexSubImage3D.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTexSubImage3D.xhtml","OpenGL ES 3.1")
+cmd void glTexSubImage3D(GLenum target,
+ GLint level,
+ GLint xoffset,
+ GLint yoffset,
+ GLint zoffset,
+ GLsizei width,
+ GLsizei height,
+ GLsizei depth,
+ GLenum format,
+ GLenum type,
+ const void* pixels) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TEXTURE_2D_ARRAY, GL_TEXTURE_3D: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ switch (format) {
+ case GL_ALPHA, GL_DEPTH_COMPONENT, GL_DEPTH_STENCIL, GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_RED,
+ GL_RED_INTEGER, GL_RG, GL_RGB, GL_RGBA, GL_RGBA_INTEGER, GL_RGB_INTEGER, GL_RG_INTEGER: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(format)
+ }
+ }
+ switch (type) {
+ case GL_BYTE, GL_FLOAT, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, GL_HALF_FLOAT, GL_INT, GL_SHORT,
+ GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_INT_10F_11F_11F_REV, GL_UNSIGNED_INT_24_8,
+ GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_INT_5_9_9_9_REV, GL_UNSIGNED_SHORT,
+ GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1, GL_UNSIGNED_SHORT_5_6_5: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/transform_feedback.api b/gfxapi/gles/api/transform_feedback.api
new file mode 100644
index 000000000..8fd03bdc9
--- /dev/null
+++ b/gfxapi/gles/api/transform_feedback.api
@@ -0,0 +1,118 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBeginTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBeginTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd void glBeginTransformFeedback(GLenum primitiveMode) {
+ minRequiredVersion(3, 0)
+ switch (primitiveMode) {
+ case GL_LINES, GL_POINTS, GL_TRIANGLES: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(primitiveMode)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd void glBindTransformFeedback(GLenum target, TransformFeedbackId id) {
+ minRequiredVersion(3, 0)
+ switch (target) {
+ case GL_TRANSFORM_FEEDBACK: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(target)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteTransformFeedbacks.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteTransformFeedbacks.xhtml","OpenGL ES 3.1")
+cmd void glDeleteTransformFeedbacks(GLsizei n, const TransformFeedbackId* ids) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBeginTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBeginTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd void glEndTransformFeedback() {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenTransformFeedbacks.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenTransformFeedbacks.xhtml","OpenGL ES 3.1")
+cmd void glGenTransformFeedbacks(GLsizei n, TransformFeedbackId* ids) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetTransformFeedbackVarying.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetTransformFeedbackVarying.xhtml","OpenGL ES 3.1")
+cmd void glGetTransformFeedbackVarying(ProgramId program,
+ GLuint index,
+ GLsizei bufSize,
+ GLsizei* length,
+ GLsizei* size,
+ GLenum* type,
+ GLchar* name) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd bool glIsTransformFeedback(TransformFeedbackId id) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glPauseTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glPauseTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd void glPauseTransformFeedback() {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glResumeTransformFeedback.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glResumeTransformFeedback.xhtml","OpenGL ES 3.1")
+cmd void glResumeTransformFeedback() {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glTransformFeedbackVaryings.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glTransformFeedbackVaryings.xhtml","OpenGL ES 3.1")
+cmd void glTransformFeedbackVaryings(ProgramId program,
+ GLsizei count,
+ const GLchar* const* varyings,
+ GLenum bufferMode) {
+ minRequiredVersion(3, 0)
+ switch (bufferMode) {
+ case GL_INTERLEAVED_ATTRIBS, GL_SEPARATE_ATTRIBS: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(bufferMode)
+ }
+ }
+ // TODO
+}
+
diff --git a/gfxapi/gles/api/vertex_arrays.api b/gfxapi/gles/api/vertex_arrays.api
new file mode 100644
index 000000000..5efa2ef1c
--- /dev/null
+++ b/gfxapi/gles/api/vertex_arrays.api
@@ -0,0 +1,402 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glBindVertexArray.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindVertexArray.xhtml","OpenGL ES 3.1")
+cmd void glBindVertexArray(VertexArrayId array) {
+ minRequiredVersion(3, 0)
+
+ ctx := GetContext()
+ if !(array in ctx.Instances.VertexArrays) {
+ ctx.Instances.VertexArrays[array] = new!VertexArray()
+ }
+ ctx.BoundVertexArray = array
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glBindVertexBuffer.xhtml","OpenGL ES 3.1")
+cmd void glBindVertexBuffer(GLuint bindingindex, BufferId buffer, GLintptr offset, GLsizei stride) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glDeleteVertexArrays.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glDeleteVertexArrays.xhtml","OpenGL ES 3.1")
+cmd void glDeleteVertexArrays(GLsizei count, const VertexArrayId* arrays) {
+ minRequiredVersion(3, 0)
+
+ ctx := GetContext()
+ a := arrays[0:count]
+ for i in (0 .. count) {
+ ctx.Instances.VertexArrays[a[i]] = null
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glEnableVertexAttribArray.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glEnableVertexAttribArray.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glEnableVertexAttribArray.xhtml","OpenGL ES 3.1")
+cmd void glDisableVertexAttribArray(AttributeLocation location) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.VertexAttributeArrays[location].Enabled = false
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glEnableVertexAttribArray.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glEnableVertexAttribArray.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glEnableVertexAttribArray.xhtml","OpenGL ES 3.1")
+cmd void glEnableVertexAttribArray(AttributeLocation location) {
+ minRequiredVersion(2, 0)
+
+ ctx := GetContext()
+ ctx.VertexAttributeArrays[location].Enabled = true
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGenVertexArrays.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGenVertexArrays.xhtml","OpenGL ES 3.1")
+cmd void glGenVertexArrays(GLsizei count, VertexArrayId* arrays) {
+ minRequiredVersion(3, 0)
+
+ a := arrays[0:count]
+ ctx := GetContext()
+ for i in (0 .. count) {
+ id := as!VertexArrayId(?)
+ ctx.Instances.VertexArrays[id] = new!VertexArray()
+ a[i] = id
+ }
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glGetVertexAttribIiv(AttributeLocation index, GLenum pname, GLint* params) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_CURRENT_VERTEX_ATTRIB, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR, GL_VERTEX_ATTRIB_ARRAY_ENABLED,
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE, GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE: {
+ // version 3.0
+ }
+ case GL_VERTEX_ATTRIB_BINDING: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glGetVertexAttribIuiv(AttributeLocation index, GLenum pname, GLuint* params) {
+ minRequiredVersion(3, 0)
+ switch (pname) {
+ case GL_CURRENT_VERTEX_ATTRIB, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+ GL_VERTEX_ATTRIB_ARRAY_DIVISOR, GL_VERTEX_ATTRIB_ARRAY_ENABLED,
+ GL_VERTEX_ATTRIB_ARRAY_INTEGER, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE, GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE: {
+ // version 3.0
+ }
+ case GL_VERTEX_ATTRIB_BINDING: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetVertexAttribPointerv.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttribPointerv.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetVertexAttribPointerv.xhtml","OpenGL ES 3.1")
+cmd void glGetVertexAttribPointerv(AttributeLocation index, GLenum pname, void** pointer) {
+ minRequiredVersion(2, 0)
+ switch (pname) {
+ case GL_VERTEX_ATTRIB_ARRAY_POINTER: {
+ // version 2.0
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glGetVertexAttribfv(AttributeLocation index, GLenum pname, GLfloat* params) {
+ minRequiredVersion(2, 0)
+ switch (pname) {
+ case GL_CURRENT_VERTEX_ATTRIB, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE, GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE: {
+ // version 2.0
+ }
+ case GL_VERTEX_ATTRIB_ARRAY_DIVISOR, GL_VERTEX_ATTRIB_ARRAY_INTEGER: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_VERTEX_ATTRIB_BINDING: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glGetVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glGetVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glGetVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glGetVertexAttribiv(AttributeLocation index, GLenum pname, GLint* params) {
+ minRequiredVersion(2, 0)
+ switch (pname) {
+ case GL_CURRENT_VERTEX_ATTRIB, GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+ GL_VERTEX_ATTRIB_ARRAY_ENABLED, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED,
+ GL_VERTEX_ATTRIB_ARRAY_SIZE, GL_VERTEX_ATTRIB_ARRAY_STRIDE, GL_VERTEX_ATTRIB_ARRAY_TYPE: {
+ // version 2.0
+ }
+ case GL_VERTEX_ATTRIB_ARRAY_DIVISOR, GL_VERTEX_ATTRIB_ARRAY_INTEGER: {
+ minRequiredVersion(3, 0)
+ }
+ case GL_VERTEX_ATTRIB_BINDING: {
+ minRequiredVersion(3, 1)
+ }
+ default: {
+ glErrorInvalidEnum(pname)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glIsVertexArray.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glIsVertexArray.xhtml","OpenGL ES 3.1")
+cmd bool glIsVertexArray(VertexArrayId array) {
+ minRequiredVersion(3, 0)
+ // TODO
+ return ?
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib1f(AttributeLocation location, GLfloat value0) {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib1fv(AttributeLocation location, const GLfloat* value) {
+ minRequiredVersion(2, 0)
+
+ read(value[0:1])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib2f(AttributeLocation location, GLfloat value0, GLfloat value1) {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib2fv(AttributeLocation location, const GLfloat* value) {
+ minRequiredVersion(2, 0)
+
+ read(value[0:2])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib3f(AttributeLocation location,
+ GLfloat value0,
+ GLfloat value1,
+ GLfloat value2) {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib3fv(AttributeLocation location, const GLfloat* value) {
+ minRequiredVersion(2, 0)
+
+ read(value[0:3])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib4f(AttributeLocation location,
+ GLfloat value0,
+ GLfloat value1,
+ GLfloat value2,
+ GLfloat value3) {
+ minRequiredVersion(2, 0)
+
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttrib.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttrib4fv(AttributeLocation location, const GLfloat* value) {
+ minRequiredVersion(2, 0)
+
+ read(value[0:4])
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribBinding.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribBinding(GLuint attribindex, GLuint bindingindex) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttribDivisor.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribDivisor.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribDivisor(AttributeLocation index, GLuint divisor) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribFormat.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribFormat(GLuint attribindex,
+ GLint size,
+ GLenum type,
+ GLboolean normalized,
+ GLuint relativeoffset) {
+ minRequiredVersion(3, 1)
+ switch (type) {
+ case GL_BYTE, GL_FIXED, GL_FLOAT, GL_HALF_FLOAT, GL_INT, GL_INT_2_10_10_10_REV, GL_SHORT,
+ GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_SHORT: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribI4i(AttributeLocation index, GLint x, GLint y, GLint z, GLint w) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribI4iv(AttributeLocation index, const GLint* v) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribI4ui(AttributeLocation index, GLuint x, GLuint y, GLuint z, GLuint w) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttrib.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttrib.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribI4uiv(AttributeLocation index, const GLuint* v) {
+ minRequiredVersion(3, 0)
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribFormat.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribIFormat(GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset) {
+ minRequiredVersion(3, 1)
+ switch (type) {
+ case GL_BYTE, GL_FIXED, GL_FLOAT, GL_HALF_FLOAT, GL_INT, GL_INT_2_10_10_10_REV, GL_SHORT,
+ GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_INT_2_10_10_10_REV, GL_UNSIGNED_SHORT: {
+ // version 3.1
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttribPointer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribPointer.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribIPointer(AttributeLocation index,
+ GLint size,
+ GLenum type,
+ GLsizei stride,
+ const void* pointer) {
+ minRequiredVersion(3, 0)
+ switch (type) {
+ case GL_BYTE, GL_INT, GL_SHORT, GL_UNSIGNED_BYTE, GL_UNSIGNED_INT, GL_UNSIGNED_SHORT: {
+ // version 3.0
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+ // TODO
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man/xhtml/glVertexAttribPointer.xml","OpenGL ES 2.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man3/html/glVertexAttribPointer.xhtml","OpenGL ES 3.0")
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexAttribPointer.xhtml","OpenGL ES 3.1")
+cmd void glVertexAttribPointer(AttributeLocation location,
+ GLint size,
+ GLenum type,
+ GLboolean normalized,
+ GLsizei stride,
+ VertexPointer data) {
+ minRequiredVersion(2, 0)
+ switch (type) {
+ case GL_BYTE, GL_FIXED, GL_FLOAT, GL_SHORT, GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT: {
+ // version 2.0
+ }
+ case GL_HALF_FLOAT, GL_INT, GL_INT_2_10_10_10_REV, GL_UNSIGNED_INT,
+ GL_UNSIGNED_INT_2_10_10_10_REV: {
+ minRequiredVersion(3, 0)
+ }
+ default: {
+ glErrorInvalidEnum(type)
+ }
+ }
+
+ assert((size >= 1) && (size <= 4))
+ assert(stride >= 0)
+ ctx := GetContext()
+ a := ctx.VertexAttributeArrays[location]
+ a.Size = as!u32(size)
+ a.Type = type
+ a.Normalized = normalized
+ a.Stride = stride
+ a.Pointer = data
+ a.Buffer = ctx.BoundBuffers[GL_ARRAY_BUFFER]
+}
+
+@Doc("https://www.khronos.org/opengles/sdk/docs/man31/html/glVertexBindingDivisor.xhtml","OpenGL ES 3.1")
+cmd void glVertexBindingDivisor(GLuint bindingindex, GLuint divisor) {
+ minRequiredVersion(3, 1)
+ // TODO
+}
+
diff --git a/tools/generate_gles_api/download.go b/tools/generate_gles_api/download.go
new file mode 100644
index 000000000..b194f15ea
--- /dev/null
+++ b/tools/generate_gles_api/download.go
@@ -0,0 +1,49 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "os"
+)
+
+// Download the given URL, optionally using disk cache
+func Download(url string) []byte {
+ filename := *cacheDir + string(os.PathSeparator) + CompileRegexp(`[^\w\.]+`).ReplaceAllString(url, "-")
+ if *cacheDir != "" {
+ if bytes, err := ioutil.ReadFile(filename); err == nil {
+ return bytes
+ }
+ }
+ resp, err := http.Get(url)
+ if err != nil {
+ panic(err)
+ }
+ if resp.StatusCode != 200 {
+ panic(fmt.Errorf("%s: %s", url, resp.Status))
+ }
+ bytes, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ panic(err)
+ }
+ resp.Body.Close()
+ if *cacheDir != "" {
+ os.MkdirAll(*cacheDir, 0750)
+ ioutil.WriteFile(filename, bytes, 0666)
+ }
+ return bytes
+}
diff --git a/tools/generate_gles_api/download_doc.go b/tools/generate_gles_api/download_doc.go
new file mode 100644
index 000000000..e512b7ece
--- /dev/null
+++ b/tools/generate_gles_api/download_doc.go
@@ -0,0 +1,672 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "encoding/xml"
+ "fmt"
+ "regexp"
+ "sort"
+ "strings"
+)
+
+// Download documentation from the khronos online man pages
+func DownloadDoc(version Version, cmdName string) *CommandDoc {
+ url, manPage, paramSectionIndex, paramSectionCount := GetDocUrl(version, cmdName)
+ page := &html{}
+ if err := xml.Unmarshal(Download(url), page); err != nil {
+ panic(err)
+ }
+ summary := page.FindClass("refnamediv").FindTag("p").Text()
+ paramNameTags := page.FindOne(func(h *html) bool {
+ return h.Class == "funcprototype-table" && h.FindClass("fsfunc").Text() == cmdName
+ }).FindClasses("pdparam")
+ paramSections := page.FindAll(func(h *html) bool {
+ return h.Class == "refsect1" && strings.HasPrefix(h.FindTag("h2").Text(), "Parameters")
+ })
+ paramDocs := make(map[string]string) // name -> doc
+ if len(paramSections) > 0 {
+ if len(paramSections) != paramSectionCount {
+ panic(fmt.Errorf("Expected %v parameter sections, but found %v", paramSectionCount, len(paramSections)))
+ }
+ dlTag := paramSections[paramSectionIndex].FindTag("dl").Children
+ for i := 0; i < len(dlTag); i += 2 {
+ for _, name := range dlTag[i].FindTags("code") {
+ paramDocs[name.Text()] = dlTag[i+1].XML
+ }
+ }
+ }
+ accpets, _ := getAcceptedValues(cmdName, "result", version)
+ params := map[int]ParamDoc{-1: ParamDoc{"result", summary, accpets}}
+ for paramIndex, paramNameTag := range paramNameTags {
+ if name := paramNameTag.Text(); name != "void" {
+ doc := parseParamDoc(name, paramDocs[name])
+ doc.Name = renameParam(cmdName, doc.Name)
+ if accpets, ok := getAcceptedValues(cmdName, doc.Name, version); ok {
+ doc.Accepts = accpets
+ }
+ sort.Sort(sort.StringSlice(doc.Accepts))
+ params[paramIndex] = doc
+ }
+ }
+ return &CommandDoc{
+ ManPage: manPage,
+ Url: url,
+ Summary: summary,
+ Params: params,
+ }
+}
+
+type CommandDoc struct {
+ ManPage string
+ Url string
+ Summary string
+ Params map[int]ParamDoc
+}
+
+type ParamDoc struct {
+ Name string
+ Summary string
+ Accepts []string
+}
+
+type html struct {
+ XMLName xml.Name
+ XML string `xml:",innerxml"`
+ Class string `xml:"class,attr"`
+ Children []*html `xml:",any"`
+}
+
+func (h *html) FindAll(pred func(*html) bool) (res []*html) {
+ if pred(h) {
+ res = append(res, h)
+ }
+ for _, child := range h.Children {
+ res = append(res, child.FindAll(pred)...)
+ }
+ return
+}
+
+func (h *html) FindOne(pred func(*html) bool) *html {
+ res := h.FindAll(pred)
+ if len(res) == 0 {
+ panic(fmt.Errorf("Could not find matching html element"))
+ } else if len(res) > 1 {
+ panic(fmt.Errorf("Found multiple matching html elements"))
+ } else {
+ return res[0]
+ }
+}
+
+func (h *html) FindTags(tag string) []*html {
+ return h.FindAll(func(h *html) bool { return h.XMLName.Local == tag })
+}
+
+func (h *html) FindTag(tag string) *html {
+ return h.FindOne(func(h *html) bool { return h.XMLName.Local == tag })
+}
+
+func (h *html) FindClasses(class string) []*html {
+ return h.FindAll(func(h *html) bool { return h.Class == class })
+}
+
+func (h *html) FindClass(class string) *html {
+ return h.FindOne(func(h *html) bool { return h.Class == class })
+}
+
+// Remove html tags to obtain plain text
+func htmlToText(page string) string {
+ page = strings.Replace(page, "<mml:msup><mml:mn>2</mml:mn>", "2^", -1)
+ page = CompileRegexp("<.*?>").ReplaceAllString(page, "")
+ page = strings.Replace(page, "&lt;", "<", -1)
+ page = strings.Replace(page, "&gt;", ">", -1)
+ page = CompileRegexp(`\s+`).ReplaceAllString(page, " ")
+ return strings.TrimSpace(page)
+}
+
+func (h *html) Text() string {
+ return htmlToText(h.XML)
+}
+
+// Get the full url for the given command, the page name (eg. "glUniform"), and the relevat section
+func GetDocUrl(version Version, cmdName string) (url, manPage string, paramSectionIndex int, paramSectionCount int) {
+
+ // Sometimes the man page is exactly the command name,
+ // however sometimes one page documents several command.
+ // (overload, enable/disable, begin/end)
+ // We use the following tables to find the relevat man page.
+ // We also sometimes have to specify which section of the page is relevat.
+
+ type redirect struct {
+ oldName string // regexp
+ newName string // man page
+ paramSectionIndex int
+ paramSectionCount int // for verification
+ }
+
+ var gles11redirects = []*redirect{
+ {"glAlphaFunc(x)", "glAlphaFunc", 0, 1},
+ {"glClearColor(x)", "glClearColor", 0, 1},
+ {"glClearDepth(f|x)", "glClearDepth", 0, 1},
+ {"glClipPlane(f|x)", "glClipPlane", 0, 1},
+ {"glColor4(f|x|ub)", "glColor", 0, 1},
+ {"glDepthRange(f|x)", "glDepthRange", 0, 1},
+ {"glDisable", "glEnable", 0, 1},
+ {"glDisableClientState", "glEnableClientState", 0, 1},
+ {"glFog(f|x)", "glFog", 0, 2},
+ {"glFog(f|x)v", "glFog", 1, 2},
+ {"glFrustum(f|x)", "glFrustum", 0, 1},
+ {"glGetBoolean(v)", "glGet", 0, 1},
+ {"glGetClipPlane(f|x)", "glGetClipPlane", 0, 1},
+ {"glGetFixed(v)", "glGet", 0, 1},
+ {"glGetFloat(v)", "glGet", 0, 1},
+ {"glGetInteger(v)", "glGet", 0, 1},
+ {"glGetLight(f|x)v", "glGetLight", 0, 1},
+ {"glGetMaterial(f|x)v", "glGetMaterial", 0, 1},
+ {"glGetTexEnv(f|i|x)v", "glGetTexEnv", 0, 1},
+ {"glGetTexParameter(f|i|x)v", "glGetTexParameter", 0, 1},
+ {"glLight(f|x)", "glLight", 0, 2},
+ {"glLight(f|x)v", "glLight", 1, 2},
+ {"glLightModel(f|x)", "glLightModel", 0, 2},
+ {"glLightModel(f|x)v", "glLightModel", 1, 2},
+ {"glLineWidth(x)", "glLineWidth", 0, 1},
+ {"glLoadMatrix(f|x)", "glLoadMatrix", 0, 1},
+ {"glMaterial(f|x)", "glMaterial", 0, 2},
+ {"glMaterial(f|x)v", "glMaterial", 1, 2},
+ {"glMultMatrix(f|x)", "glMultMatrix", 0, 1},
+ {"glMultiTexCoord4(f|x)", "glMultiTexCoord", 0, 1},
+ {"glNormal3(f|x)", "glNormal", 0, 1},
+ {"glOrtho(f|x)", "glOrtho", 0, 1},
+ {"glPointParameter(f|x)", "glPointParameter", 0, 2},
+ {"glPointParameter(f|x)v", "glPointParameter", 1, 2},
+ {"glPointSize(x)", "glPointSize", 0, 1},
+ {"glPolygonOffset(x)", "glPolygonOffset", 0, 1},
+ {"glPopMatrix", "glPushMatrix", 0, 1},
+ {"glRotate(f|x)", "glRotate", 0, 1},
+ {"glSampleCoverage(x)", "glSampleCoverage", 0, 1},
+ {"glScale(f|x)", "glScale", 0, 1},
+ {"glTexEnv(f|i|x)", "glTexEnv", 0, 2},
+ {"glTexEnv(f|i|x)v", "glTexEnv", 1, 2},
+ {"glTexParameter(f|i|x)", "glTexParameter", 0, 2},
+ {"glTexParameter(f|i|x)v", "glTexParameter", 1, 2},
+ {"glTranslate(f|x)", "glTranslate", 0, 1},
+ }
+
+ var gles20redirects = []*redirect{
+ {"glDisable", "glEnable", 1, 2},
+ {"glDisableVertexAttribArray", "glEnableVertexAttribArray", 0, 1},
+ {"glEnable", "glEnable", 0, 2},
+ {"glGetBooleanv", "glGet", 0, 1},
+ {"glGetFloatv", "glGet", 0, 1},
+ {"glGetIntegerv", "glGet", 0, 1},
+ {"glGetTexParameter(f|i)v", "glGetTexParameter", 0, 1},
+ {"glGetUniform(f|i)v", "glGetUniform", 0, 1},
+ {"glGetVertexAttrib(f|i)v", "glGetVertexAttrib", 0, 1},
+ {"glTexParameter(f|i)", "glTexParameter", 0, 2},
+ {"glTexParameter(f|i)v", "glTexParameter", 1, 2},
+ {"glUniform(1|2|3|4)(f|i|ui)", "glUniform", 0, 3},
+ {"glUniform(1|2|3|4)(f|i|ui)v", "glUniform", 1, 3},
+ {"glUniformMatrix(2|3|4|2x3|3x2|2x4|4x2|3x4|4x3)fv", "glUniform", 2, 3},
+ {"glVertexAttrib(1|2|3|4)f", "glVertexAttrib", 0, 2},
+ {"glVertexAttrib(1|2|3|4)fv", "glVertexAttrib", 1, 2},
+ }
+
+ var gles30redirects = append([]*redirect{
+ {"glBeginQuery", "glBeginQuery", 0, 2},
+ {"glClearBuffer(fi|fv|iv|uiv)", "glClearBuffer", 0, 1},
+ {"glDisable", "glEnable", 0, 1},
+ {"glEnable", "glEnable", 0, 1},
+ {"glEndQuery", "glBeginQuery", 1, 2},
+ {"glEndTransformFeedback", "glBeginTransformFeedback", 0, 1},
+ {"glGetBufferParameter(i)(|64)v", "glGetBufferParameter", 0, 1},
+ {"glGetInteger(|64)(|i_)v", "glGet", 0, 1},
+ {"glGetSamplerParameter(f|i)v", "glGetSamplerParameter", 0, 1},
+ {"glGetString(|i)", "glGetString", 0, 1},
+ {"glGetUniform(f|i|ui)v", "glGetUniform", 0, 1},
+ {"glGetVertexAttrib(f|Ii|Iui|i)v", "glGetVertexAttrib", 0, 1},
+ {"glMapBufferRange", "glMapBufferRange", 0, 2},
+ {"glSamplerParameter(f|i)(|v)", "glSamplerParameter", 0, 1},
+ {"glTexParameter(f|i)(|v)", "glTexParameter", 0, 1},
+ {"glUniform(1|2|3|4)(f|i|ui)(|v)", "glUniform", 0, 1},
+ {"glUniformMatrix(2|3|4|2x3|3x2|2x4|4x2|3x4|4x3)fv", "glUniform", 0, 1},
+ {"glUnmapBuffer", "glMapBufferRange", 1, 2},
+ {"glVertexAttrib(1f|2f|3f|4f|I4i|I4ui)(|v)", "glVertexAttrib", 0, 1},
+ {"glVertexAttrib(|I)Pointer", "glVertexAttribPointer", 0, 1},
+ }, gles20redirects...)
+
+ var gles31redirects = append([]*redirect{
+ {"glCreateShaderProgram(v)", "glCreateShaderProgram", 0, 1},
+ {"glGetBoolean(|i_)v", "glGet", 0, 1},
+ {"glGetProgramInterface(iv)", "glGetProgramInterface", 0, 1},
+ {"glGetProgramPipeline(iv)", "glGetProgramPipeline", 0, 1},
+ {"glGetProgramResource(iv)", "glGetProgramResource", 0, 1},
+ {"glGetTexLevelParameter(f|i)v", "glGetTexLevelParameter", 0, 1},
+ {"glMemoryBarrier(|ByRegion)", "glMemoryBarrier", 0, 1},
+ {"glProgramUniform(1|2|3|4)(f|i|ui)(|v)", "glProgramUniform", 0, 1},
+ {"glProgramUniformMatrix(2|3|4|2x3|3x2|2x4|4x2|3x4|4x3)fv", "glProgramUniform", 0, 1},
+ {"glVertexAttrib(|I)Format", "glVertexAttribFormat", 0, 1},
+ }, gles30redirects...)
+
+ var redirects []*redirect
+ var urlFormat string
+ switch version {
+ case "1.1":
+ redirects, urlFormat = gles11redirects, "https://www.khronos.org/opengles/sdk/1.1/docs/man/%s.xml"
+ case "2.0":
+ redirects, urlFormat = gles20redirects, "https://www.khronos.org/opengles/sdk/docs/man/xhtml/%s.xml"
+ case "3.0":
+ redirects, urlFormat = gles30redirects, "https://www.khronos.org/opengles/sdk/docs/man3/html/%s.xhtml"
+ case "3.1":
+ redirects, urlFormat = gles31redirects, "https://www.khronos.org/opengles/sdk/docs/man31/html/%s.xhtml"
+ default:
+ panic(fmt.Errorf("Uknown api version: %v", version))
+ }
+
+ for _, redir := range redirects {
+ if CompileRegexp("^(?:" + redir.oldName + ")$").MatchString(cmdName) {
+ return fmt.Sprintf(urlFormat, redir.newName), redir.newName, redir.paramSectionIndex, redir.paramSectionCount
+ }
+ }
+ return fmt.Sprintf(urlFormat, cmdName), cmdName, 0, 1
+}
+
+func GetExtensionUrl(extension string) string {
+ match := CompileRegexp(`^GL_(([A-Z]+)_\w+)$`).FindStringSubmatch(extension)
+ vendor := match[2]
+ page := match[1] + `.txt`
+ // most of the time the page name includes the vendor prefix, but sometimes it does not
+ for _, rename := range []struct{ oldName, newName string }{
+ {"AMD_performance_monitor.txt", "performance_monitor.txt"},
+ {"APPLE_rgb_422.txt", "rgb_422.txt"},
+ {"EXT_blend_minmax.txt", "blend_minmax.txt"},
+ {"EXT_draw_instanced.txt", "draw_instanced.txt"},
+ {"EXT_multi_draw_arrays.txt", "multi_draw_arrays.txt"},
+ {"EXT_post_depth_coverage.txt", "post_depth_coverage.txt"},
+ {"EXT_raster_multisample.txt", "raster_multisample.txt"},
+ {"EXT_shader_integer_mix.txt", "shader_integer_mix.txt"},
+ {"EXT_texture_compression_dxt1.txt", "texture_compression_dxt1.txt"},
+ {"EXT_texture_compression_s3tc.txt", "texture_compression_s3tc.txt"},
+ {"EXT_texture_filter_anisotropic.txt", "texture_filter_anisotropic.txt"},
+ {"EXT_texture_filter_minmax.txt", "texture_filter_minmax.txt"},
+ {"EXT_texture_lod_bias.txt", "texture_lod_bias.txt"},
+ {"EXT_texture_sRGB_decode.txt", "texture_sRGB_decode.txt"},
+ {"FJ_shader_binary_GCCSO.txt", "shader_binary_GCCSO.txt"},
+ {"INTEL_performance_query.txt", "performance_query.txt"},
+ {"KHR_blend_equation_advanced.txt", "blend_equation_advanced.txt"},
+ {"KHR_context_flush_control.txt", "context_flush_control.txt"},
+ {"KHR_debug.txt", "debug.txt"},
+ {"KHR_robust_buffer_access_behavior.txt", "robust_buffer_access_behavior.txt"},
+ {"KHR_robustness.txt", "robustness.txt"},
+ {"KHR_texture_compression_astc_hdr.txt", "texture_compression_astc_hdr.txt"},
+ {"NV_bindless_texture.txt", "bindless_texture.txt"},
+ {"NV_blend_equation_advanced.txt", "blend_equation_advanced.txt"},
+ {"NV_conditional_render.txt", "conditional_render.txt"},
+ {"NV_conservative_raster.txt", "conservative_raster.txt"},
+ {"NV_draw_texture.txt", "draw_texture.txt"},
+ {"NV_coverage_sample.txt", "EGL_NV_coverage_sample.txt"},
+ {"NV_depth_nonlinear.txt", "EGL_NV_depth_nonlinear.txt"},
+ {"NV_fence.txt", "fence.txt"},
+ {"NV_fill_rectangle.txt", "fill_rectangle.txt"},
+ {"NV_fragment_coverage_to_color.txt", "fragment_coverage_to_color.txt"},
+ {"NV_fragment_shader_interlock.txt", "fragment_shader_interlock.txt"},
+ {"NV_framebuffer_mixed_samples.txt", "framebuffer_mixed_samples.txt"},
+ {"NV_geometry_shader_passthrough.txt", "geometry_shader_passthrough.txt"},
+ {"NV_internalformat_sample_query.txt", "internalformat_sample_query.txt"},
+ {"NV_path_rendering.txt", "path_rendering.txt"},
+ {"NV_path_rendering_shared_edge.txt", "path_rendering_shared_edge.txt"},
+ {"NV_sample_locations.txt", "sample_locations.txt"},
+ {"NV_sample_mask_override_coverage.txt", "sample_mask_override_coverage.txt"},
+ {"NV_viewport_array2.txt", "viewport_array2.txt"},
+ {"OVR_multiview.txt", "multiview.txt"},
+ {"OVR_multiview2.txt", "multiview2.txt"},
+ } {
+ if page == rename.oldName {
+ page = rename.newName
+ }
+ }
+ url := fmt.Sprintf("https://www.khronos.org/registry/gles/extensions/%s/%s", vendor, page)
+ Download(url)
+ return url
+}
+
+// More often than not, the accpted GLenum values can be extracted using regexp.
+func parseParamDoc(paramName, doc string) ParamDoc {
+ // Remove noise
+ for _, tag := range []string{"<span>", "</span>", "<p>", "</p>"} {
+ doc = strings.Replace(doc, tag, "", -1)
+ }
+
+ // Regexp for enum value. Represented in phrases as $
+ exprConst := `(?:<code class="constant">(\w+)</code>(?:,|\.|\s|and|or)*)`
+
+ // Remove the default value doc
+ phrases := []string{
+ "The initial value is $.",
+ "The intial value is $.", // typo in docs
+ }
+ for _, phrase := range phrases {
+ // Must follow sentence; relaxed whitespace; must be end of doc
+ expr := `\.\s*` + strings.Replace(regexp.QuoteMeta(phrase), ` `, `\s+`, -1) + `\s*$`
+ expr = strings.Replace(expr, `\$`, exprConst, -1)
+ if loc := CompileRegexp(expr).FindStringIndex(doc); loc != nil {
+ doc = doc[:loc[0]+1]
+ }
+ }
+
+ // List of the common phrases which the man pages use
+ paramNameTag := `<em class="parameter"><code>` + paramName + `</code></em>`
+ phrases = []string{
+ "$ are accepted",
+ "$ is accepted",
+ "Accepted symbolic names are $",
+ "Accepted values are $",
+ "Can be either $",
+ "Eight symbolic constants are accepted: $",
+ "Eight symbolic constants are valid: $",
+ "Eight tokens are valid: $",
+ "It must be $",
+ "May be $",
+ "May be either $",
+ "Must be $",
+ "Must be either $",
+ "Must be one of $",
+ "Must be one of the following symbolic constants: $",
+ "Six symbolic constants are accepted: $",
+ "Symbolic constants $ are accepted",
+ "The allowed flags are $",
+ "The following symbolic constants are accepted: $",
+ "The following symbolic values are accepted: $",
+ "The following symbols are accepted: $",
+ "The symbolic constant must be $",
+ "The symbolic constant must be one of $",
+ "The three masks are $",
+ "These values are accepted: $",
+ "These values are accepted: $",
+ "Three symbolic constants are valid: $",
+ "Valid masks are $",
+ "Which can be one of the following: $",
+ paramNameTag + " can be one of the following: $",
+ paramNameTag + " may be $",
+ paramNameTag + " must be $",
+ paramNameTag + " must be either $",
+ paramNameTag + " must be one of $",
+ }
+ var enumValues []string
+ for _, phrase := range phrases {
+ // Must follow sentence (dot); relaxed whitespace; must be end of doc
+ expr := `\.\s*` + strings.Replace(regexp.QuoteMeta(phrase), ` `, `\s+`, -1) + `(?:\.|,|\s)*$`
+ expr = strings.Replace(expr, `\$`, exprConst+`*`, -1)
+ if loc := CompileRegexp(expr).FindStringIndex(doc); loc != nil {
+ for _, match := range CompileRegexp(exprConst).FindAllStringSubmatch(doc[loc[0]:loc[1]], -1) {
+ enumValues = append(enumValues, match[1])
+ }
+ // remove the enum list from the doc
+ doc = doc[:loc[0]+1]
+ break
+ }
+ }
+ return ParamDoc{
+ Name: paramName,
+ Summary: htmlToText(doc),
+ Accepts: enumValues,
+ }
+}
+
+// rename parameters so that they match names in the khronos registry
+// this used to be important, but it is used just for verification now
+func renameParam(cmdName, paramName string) string {
+ var renames = []struct {
+ cmdName string // regexp
+ newName string
+ oldName string
+ }{
+ {"glBlendFuncSeparate", "dfactorAlpha", "dstAlpha"},
+ {"glBlendFuncSeparate", "dfactorRGB", "dstRGB"},
+ {"glBlendFuncSeparate", "sfactorAlpha", "srcAlpha"},
+ {"glBlendFuncSeparate", "sfactorRGB", "srcRGB"},
+ {"glClearBuffer(fi|fv|iv|uiv)", "drawbuffer", "drawBuffer"},
+ {"glClearDepthf", "d", "depth"},
+ {"glClipPlanef", "eqn", "equation"},
+ {"glClipPlanef", "p", "plane"},
+ {"glCopyBufferSubData", "readOffset", "readoffset"},
+ {"glCopyBufferSubData", "readTarget", "readtarget"},
+ {"glCopyBufferSubData", "writeOffset", "writeoffset"},
+ {"glCopyBufferSubData", "writeTarget", "writetarget"},
+ {"glCreateShader", "type", "shaderType"},
+ {"glDeleteSamplers", "count", "n"},
+ {"glDepthRange(f|x)", "f", "far"},
+ {"glDepthRange(f|x)", "f", "farVal"},
+ {"glDepthRange(f|x)", "n", "near"},
+ {"glDepthRange(f|x)", "n", "nearVal"},
+ {"glDrawArraysInstanced", "instancecount", "primcount"},
+ {"glDrawElementsInstanced", "instancecount", "primcount"},
+ {"glFogxv", "param", "params"},
+ {"glFrustum(f|x)", "b", "bottom"},
+ {"glFrustum(f|x)", "f", "far"},
+ {"glFrustum(f|x)", "l", "left"},
+ {"glFrustum(f|x)", "n", "near"},
+ {"glFrustum(f|x)", "r", "right"},
+ {"glFrustum(f|x)", "t", "top"},
+ {"glGenSamplers", "count", "n"},
+ {"glGetBooleanv", "data", "params"},
+ {"glGetBufferParameteri(64|)v", "params", "data"},
+ {"glGetBufferParameteri(64|)v", "pname", "value"},
+ {"glGetFloatv", "data", "params"},
+ {"glGetIntegerv", "data", "params"},
+ {"glGetProgramBinary", "bufSize", "bufsize"},
+ {"glGetProgramInfoLog", "bufSize", "maxLength"},
+ {"glGetShaderInfoLog", "bufSize", "maxLength"},
+ {"glGetShaderPrecisionFormat", "precisiontype", "precisionType"},
+ {"glGetShaderPrecisionFormat", "shadertype", "shaderType"},
+ {"glIsSampler", "sampler", "id"},
+ {"glLightModelxv", "param", "params"},
+ {"glMaterialxv", "param", "params"},
+ {"glMultiTexCoord4x", "texture", "target"},
+ {"glOrtho(f|x)", "b", "bottom"},
+ {"glOrtho(f|x)", "f", "far"},
+ {"glOrtho(f|x)", "l", "left"},
+ {"glOrtho(f|x)", "n", "near"},
+ {"glOrtho(f|x)", "r", "right"},
+ {"glOrtho(f|x)", "t", "top"},
+ {"glReadPixels", "pixels", "data"},
+ {"glSamplerParameter(fv|iv)", "param", "params"},
+ {"glShaderBinary", "binaryformat", "binaryFormat"},
+ {"glShaderBinary", "count", "n"},
+ {"glStencilOp", "fail", "sfail"},
+ {"glStencilOp", "zfail", "dpfail"},
+ {"glStencilOp", "zpass", "dppass"},
+ {"glTex(Sub|)Image(2D|3D)", "pixels", "data"},
+ {"glTexImage(2D|3D)", "internalformat", "internalFormat"},
+ {"glVertexAttrib(1f|2f|3f|4f|I4i|I4ui)", "w", "v3"},
+ {"glVertexAttrib(1f|2f|3f|4f|I4i|I4ui)", "x", "v0"},
+ {"glVertexAttrib(1f|2f|3f|4f|I4i|I4ui)", "y", "v1"},
+ {"glVertexAttrib(1f|2f|3f|4f|I4i|I4ui)", "z", "v2"},
+ }
+ for _, rename := range renames {
+ if CompileRegexp("^(?:" + rename.cmdName + ")$").MatchString(cmdName) {
+ if rename.oldName == paramName {
+ return rename.newName
+ }
+ }
+ }
+ return paramName
+}
+
+func listContains(commaSeparatedList, value string) bool {
+ if strings.Contains(commaSeparatedList, value) {
+ for _, v := range strings.Split(commaSeparatedList, ",") {
+ if v == value {
+ return true
+ }
+ }
+ }
+ return false
+}
+
+// If the enum values can not be automatically extracted from the documentation,
+// we use the hand-written table blow. (which can also be used for overrides)
+func getAcceptedValues(cmdName, paramName string, apiVersion Version) ([]string, bool) {
+
+ var GL_TEXTUREi = "GL_TEXTURE0,GL_TEXTURE1,GL_TEXTURE2,GL_TEXTURE3,GL_TEXTURE4,GL_TEXTURE5,GL_TEXTURE6,GL_TEXTURE7,GL_TEXTURE8,GL_TEXTURE9,GL_TEXTURE10,GL_TEXTURE11,GL_TEXTURE12,GL_TEXTURE13,GL_TEXTURE14,GL_TEXTURE15,GL_TEXTURE16,GL_TEXTURE17,GL_TEXTURE18,GL_TEXTURE19,GL_TEXTURE20,GL_TEXTURE21,GL_TEXTURE22,GL_TEXTURE23,GL_TEXTURE24,GL_TEXTURE25,GL_TEXTURE26,GL_TEXTURE27,GL_TEXTURE28,GL_TEXTURE29,GL_TEXTURE30,GL_TEXTURE31"
+ var GL_CLIP_PLANEi = "GL_CLIP_PLANE0,GL_CLIP_PLANE1,GL_CLIP_PLANE2,GL_CLIP_PLANE3,GL_CLIP_PLANE4,GL_CLIP_PLANE5"
+ var GL_LIGHTi = "GL_LIGHT0,GL_LIGHT1,GL_LIGHT2,GL_LIGHT3,GL_LIGHT4,GL_LIGHT5,GL_LIGHT6,GL_LIGHT7"
+ var GL_COLOR_ATTACHMENTi = "GL_COLOR_ATTACHMENT0,GL_COLOR_ATTACHMENT1,GL_COLOR_ATTACHMENT2,GL_COLOR_ATTACHMENT3,GL_COLOR_ATTACHMENT4,GL_COLOR_ATTACHMENT5,GL_COLOR_ATTACHMENT6,GL_COLOR_ATTACHMENT7,GL_COLOR_ATTACHMENT8,GL_COLOR_ATTACHMENT9,GL_COLOR_ATTACHMENT10,GL_COLOR_ATTACHMENT11,GL_COLOR_ATTACHMENT12,GL_COLOR_ATTACHMENT13,GL_COLOR_ATTACHMENT14,GL_COLOR_ATTACHMENT15"
+
+ // TODO: When is GL_BACK,GL_DEPTH,GL_STENCIL valid for attachments?
+ // TODO: glGetProgramResourceiv - is GL_TRANSFORM_FEEDBACK_BUFFER supported or not?
+ // TODO: glGetActiveAttrib - accepts value of GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES
+
+ var enumMetadata = []struct {
+ // all field are comma separated values
+ cmdName string
+ paramName string
+ apiVersion string
+ acceptedValues string
+ }{
+ {"glActiveTexture", "texture", "1.1,2.0,3.0,3.1", GL_TEXTUREi},
+ {"glBeginTransformFeedback", "primitiveMode", "3.0,3.1", "GL_POINTS,GL_LINES,GL_TRIANGLES"},
+ {"glBindFramebuffer", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glBindImageTexture", "access", "3.1", "GL_READ_ONLY,GL_WRITE_ONLY,GL_READ_WRITE"},
+ {"glBindImageTexture", "format", "3.1", "GL_RGBA32F,GL_RGBA16F,GL_R32F,GL_RGBA32UI,GL_RGBA16UI,GL_RGBA8UI,GL_R32UI,GL_RGBA32I,GL_RGBA16I,GL_RGBA8I,GL_R32I,GL_RGBA8,GL_RGBA8_SNORM"},
+ {"glBlendFunc,glBlendFuncSeparate", "dfactor,dfactorRGB,dfactorAlpha", "2.0,3.0,3.1", "GL_ZERO,GL_ONE,GL_SRC_COLOR,GL_ONE_MINUS_SRC_COLOR,GL_DST_COLOR,GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA,GL_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_COLOR,GL_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA"},
+ {"glBlendFunc,glBlendFuncSeparate", "sfactor,sfactorRGB,sfactorAlpha", "2.0,3.0,3.1", "GL_ZERO,GL_ONE,GL_SRC_COLOR,GL_ONE_MINUS_SRC_COLOR,GL_DST_COLOR,GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA,GL_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_COLOR,GL_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA,GL_SRC_ALPHA_SATURATE"},
+ {"glCheckFramebufferStatus", "result", "2.0", "GL_FRAMEBUFFER_COMPLETE,GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS,GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,GL_FRAMEBUFFER_UNSUPPORTED"},
+ {"glCheckFramebufferStatus", "result", "3.0,3.1", "GL_FRAMEBUFFER_COMPLETE,GL_FRAMEBUFFER_UNDEFINED,GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT,GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,GL_FRAMEBUFFER_UNSUPPORTED,GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"},
+ {"glCheckFramebufferStatus", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glClearBufferfi", "buffer", "3.0,3.1", "GL_DEPTH_STENCIL"},
+ {"glClearBufferfv", "buffer", "3.0,3.1", "GL_COLOR,GL_DEPTH"},
+ {"glClearBufferiv", "buffer", "3.0,3.1", "GL_COLOR,GL_STENCIL"},
+ {"glClearBufferuiv", "buffer", "3.0,3.1", "GL_COLOR"},
+ {"glClientActiveTexture", "texture", "1.1", GL_TEXTUREi},
+ {"glClientWaitSync", "result", "3.0,3.1", "GL_ALREADY_SIGNALED,GL_TIMEOUT_EXPIRED,GL_CONDITION_SATISFIED,GL_WAIT_FAILED"},
+ {"glClipPlanef", "p", "1.1", GL_CLIP_PLANEi},
+ {"glClipPlanex", "plane", "1.1", GL_CLIP_PLANEi},
+ {"glColorPointer", "type", "1.1", "GL_UNSIGNED_BYTE,GL_FIXED,GL_FLOAT"}, // TODO
+ {"glCompressedTexImage2D", "internalformat", "2.0", ""}, // provided by extensions only
+ {"glCompressedTexImage2D,glCompressedTexImage3D,glCompressedTexSubImage2D,glCompressedTexSubImage3D", "internalformat,format", "3.0,3.1", "GL_COMPRESSED_R11_EAC,GL_COMPRESSED_SIGNED_R11_EAC,GL_COMPRESSED_RG11_EAC,GL_COMPRESSED_SIGNED_RG11_EAC,GL_COMPRESSED_RGB8_ETC2,GL_COMPRESSED_SRGB8_ETC2,GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_RGBA8_ETC2_EAC,GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"},
+ {"glCompressedTexSubImage2D", "format", "1.1", "GL_PALETTE4_RGB8_OES,GL_PALETTE4_RGBA8_OES,GL_PALETTE4_R5_G6_B5_OES,GL_PALETTE4_RGBA4_OES,GL_PALETTE4_RGB5_A1_OES,GL_PALETTE8_RGB8_OES,GL_PALETTE8_RGBA8_OES,GL_PALETTE8_R5_G6_B5_OES,GL_PALETTE8_RGBA4_OES,GL_PALETTE8_RGB5_A1_OES"},
+ {"glCompressedTexSubImage2D", "format", "2.0", ""},
+ {"glCopyBufferSubData", "readTarget,writeTarget", "3.0,3.1", "GL_ARRAY_BUFFER,GL_COPY_READ_BUFFER,GL_COPY_WRITE_BUFFER,GL_ELEMENT_ARRAY_BUFFER,GL_PIXEL_PACK_BUFFER,GL_PIXEL_UNPACK_BUFFER,GL_TRANSFORM_FEEDBACK_BUFFER,GL_UNIFORM_BUFFER"},
+ {"glCreateShader", "type", "3.1", "GL_VERTEX_SHADER,GL_FRAGMENT_SHADER,GL_COMPUTE_SHADER"},
+ {"glCreateShaderProgramv", "type", "3.1", "GL_VERTEX_SHADER,GL_FRAGMENT_SHADER,GL_COMPUTE_SHADER"}, // TODO
+ {"glDrawBuffers", "bufs", "3.0,3.1", "GL_NONE,GL_BACK," + GL_COLOR_ATTACHMENTi},
+ {"glDrawElementsIndirect", "type", "3.1", "GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT,GL_UNSIGNED_INT"},
+ {"glEnable,glDisable", "cap", "1.1", "GL_ALPHA_TEST,GL_BLEND,GL_COLOR_LOGIC_OP,GL_COLOR_MATERIAL,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_FOG,GL_LIGHTING,GL_LINE_SMOOTH,GL_MULTISAMPLE,GL_NORMALIZE,GL_POINT_SMOOTH,GL_POINT_SPRITE_OES,GL_POLYGON_OFFSET_FILL,GL_RESCALE_NORMAL,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_ALPHA_TO_ONE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST,GL_TEXTURE_2D," + GL_CLIP_PLANEi + "," + GL_LIGHTi},
+ {"glEnable,glDisable", "cap", "2.0", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glEnable,glDisable", "cap", "3.0", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_RASTERIZER_DISCARD,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glEnable,glDisable", "cap", "3.1", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_RASTERIZER_DISCARD,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SAMPLE_MASK,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glFramebufferParameteri", "pname", "3.1", "GL_FRAMEBUFFER_DEFAULT_WIDTH,GL_FRAMEBUFFER_DEFAULT_HEIGHT,GL_FRAMEBUFFER_DEFAULT_SAMPLES,GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS"},
+ {"glFramebufferParameteri", "target", "3.1", "GL_READ_FRAMEBUFFER,GL_DRAW_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glFramebufferRenderbuffer", "attachment", "3.0,3.1", "GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT,GL_DEPTH_STENCIL_ATTACHMENT," + GL_COLOR_ATTACHMENTi},
+ {"glFramebufferRenderbuffer", "renderbuffertarget", "3.0,3.1", "GL_RENDERBUFFER"},
+ {"glFramebufferRenderbuffer", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glFramebufferTexture2D", "attachment", "3.0,3.1", "GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT,GL_DEPTH_STENCIL_ATTACHMENT," + GL_COLOR_ATTACHMENTi},
+ {"glFramebufferTexture2D", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glFramebufferTexture2D", "textarget", "3.0", "GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z,GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"},
+ {"glFramebufferTexture2D", "textarget", "3.1", "GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z,GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,GL_TEXTURE_2D_MULTISAMPLE"},
+ {"glFramebufferTextureLayer", "attachment", "3.0,3.1", "GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT,GL_DEPTH_STENCIL_ATTACHMENT," + GL_COLOR_ATTACHMENTi},
+ {"glFramebufferTextureLayer", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glGetActiveAttrib", "type", "2.0", "GL_FLOAT,GL_FLOAT_VEC2,GL_FLOAT_VEC3,GL_FLOAT_VEC4,GL_FLOAT_MAT2,GL_FLOAT_MAT3,GL_FLOAT_MAT4"},
+ {"glGetActiveAttrib,glGetTransformFeedbackVarying", "type", "3.0,3.1", "GL_FLOAT,GL_FLOAT_VEC2,GL_FLOAT_VEC3,GL_FLOAT_VEC4,GL_FLOAT_MAT2,GL_FLOAT_MAT3,GL_FLOAT_MAT4,GL_FLOAT_MAT2x3,GL_FLOAT_MAT2x4,GL_FLOAT_MAT3x2,GL_FLOAT_MAT3x4,GL_FLOAT_MAT4x2,GL_FLOAT_MAT4x3,GL_INT,GL_INT_VEC2,GL_INT_VEC3,GL_INT_VEC4,GL_UNSIGNED_INT,GL_UNSIGNED_INT_VEC2,GL_UNSIGNED_INT_VEC3,GL_UNSIGNED_INT_VEC4"},
+ {"glGetActiveUniform", "type", "2.0", "GL_FLOAT,GL_FLOAT_VEC2,GL_FLOAT_VEC3,GL_FLOAT_VEC4,GL_INT,GL_INT_VEC2,GL_INT_VEC3,GL_INT_VEC4,GL_BOOL,GL_BOOL_VEC2,GL_BOOL_VEC3,GL_BOOL_VEC4,GL_FLOAT_MAT2,GL_FLOAT_MAT3,GL_FLOAT_MAT4,GL_SAMPLER_2D,GL_SAMPLER_CUBE"},
+ {"glGetActiveUniform", "type", "3.0,3.1", "GL_FLOAT,GL_FLOAT_VEC2,GL_FLOAT_VEC3,GL_FLOAT_VEC4,GL_INT,GL_INT_VEC2,GL_INT_VEC3,GL_INT_VEC4,GL_UNSIGNED_INT,GL_UNSIGNED_INT_VEC2,GL_UNSIGNED_INT_VEC3,GL_UNSIGNED_INT_VEC4,GL_BOOL,GL_BOOL_VEC2,GL_BOOL_VEC3,GL_BOOL_VEC4,GL_FLOAT_MAT2,GL_FLOAT_MAT3,GL_FLOAT_MAT4,GL_FLOAT_MAT2x3,GL_FLOAT_MAT2x4,GL_FLOAT_MAT3x2,GL_FLOAT_MAT3x4,GL_FLOAT_MAT4x2,GL_FLOAT_MAT4x3,GL_SAMPLER_2D,GL_SAMPLER_3D,GL_SAMPLER_CUBE,GL_SAMPLER_2D_SHADOW,GL_SAMPLER_2D_ARRAY,GL_SAMPLER_2D_ARRAY_SHADOW,GL_SAMPLER_CUBE_SHADOW,GL_INT_SAMPLER_2D,GL_INT_SAMPLER_3D,GL_INT_SAMPLER_CUBE,GL_INT_SAMPLER_2D_ARRAY,GL_UNSIGNED_INT_SAMPLER_2D,GL_UNSIGNED_INT_SAMPLER_3D,GL_UNSIGNED_INT_SAMPLER_CUBE,GL_UNSIGNED_INT_SAMPLER_2D_ARRAY"},
+ {"glGetActiveUniformBlockiv", "pname", "3.0,3.1", "GL_UNIFORM_BLOCK_BINDING,GL_UNIFORM_BLOCK_DATA_SIZE,GL_UNIFORM_BLOCK_NAME_LENGTH,GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS,GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER"},
+ {"glGetActiveUniformsiv", "pname", "3.0,3.1", "GL_UNIFORM_TYPE,GL_UNIFORM_SIZE,GL_UNIFORM_NAME_LENGTH,GL_UNIFORM_BLOCK_INDEX,GL_UNIFORM_OFFSET,GL_UNIFORM_ARRAY_STRIDE,GL_UNIFORM_MATRIX_STRIDE,GL_UNIFORM_IS_ROW_MAJOR"},
+ {"glGetBooleanv,glGetBooleani_v,glGetFloatv,glGetInteger64i_v,glGetInteger64v,glGetIntegeri_v,glGetIntegerv", "pname,target", "3.0", "GL_ACTIVE_TEXTURE,GL_ALIASED_LINE_WIDTH_RANGE,GL_ALIASED_POINT_SIZE_RANGE,GL_ALPHA_BITS,GL_ARRAY_BUFFER_BINDING,GL_BLEND,GL_BLEND_COLOR,GL_BLEND_DST_ALPHA,GL_BLEND_DST_RGB,GL_BLEND_EQUATION_ALPHA,GL_BLEND_EQUATION_RGB,GL_BLEND_SRC_ALPHA,GL_BLEND_SRC_RGB,GL_BLUE_BITS,GL_COLOR_CLEAR_VALUE,GL_COLOR_WRITEMASK,GL_COMPRESSED_TEXTURE_FORMATS,GL_COPY_READ_BUFFER_BINDING,GL_COPY_WRITE_BUFFER_BINDING,GL_CULL_FACE,GL_CULL_FACE_MODE,GL_CURRENT_PROGRAM,GL_DEPTH_BITS,GL_DEPTH_CLEAR_VALUE,GL_DEPTH_FUNC,GL_DEPTH_RANGE,GL_DEPTH_TEST,GL_DEPTH_WRITEMASK,GL_DITHER,GL_DRAW_BUFFER,GL_DRAW_FRAMEBUFFER_BINDING,GL_ELEMENT_ARRAY_BUFFER_BINDING,GL_FRAGMENT_SHADER_DERIVATIVE_HINT,GL_FRONT_FACE,GL_GENERATE_MIPMAP_HINT,GL_GREEN_BITS,GL_IMPLEMENTATION_COLOR_READ_FORMAT,GL_IMPLEMENTATION_COLOR_READ_TYPE,GL_LINE_WIDTH,GL_MAJOR_VERSION,GL_MAX_3D_TEXTURE_SIZE,GL_MAX_ARRAY_TEXTURE_LAYERS,GL_MAX_COLOR_ATTACHMENTS,GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,GL_MAX_COMBINED_UNIFORM_BLOCKS,GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,GL_MAX_CUBE_MAP_TEXTURE_SIZE,GL_MAX_DRAW_BUFFERS,GL_MAX_ELEMENT_INDEX,GL_MAX_ELEMENTS_INDICES,GL_MAX_ELEMENTS_VERTICES,GL_MAX_FRAGMENT_INPUT_COMPONENTS,GL_MAX_FRAGMENT_UNIFORM_BLOCKS,GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,GL_MAX_FRAGMENT_UNIFORM_VECTORS,GL_MAX_PROGRAM_TEXEL_OFFSET,GL_MAX_RENDERBUFFER_SIZE,GL_MAX_SAMPLES,GL_MAX_SERVER_WAIT_TIMEOUT,GL_MAX_TEXTURE_IMAGE_UNITS,GL_MAX_TEXTURE_LOD_BIAS,GL_MAX_TEXTURE_SIZE,GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,GL_MAX_UNIFORM_BLOCK_SIZE,GL_MAX_UNIFORM_BUFFER_BINDINGS,GL_MAX_VARYING_COMPONENTS,GL_MAX_VARYING_VECTORS,GL_MAX_VERTEX_ATTRIBS,GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,GL_MAX_VERTEX_OUTPUT_COMPONENTS,GL_MAX_VERTEX_UNIFORM_BLOCKS,GL_MAX_VERTEX_UNIFORM_COMPONENTS,GL_MAX_VERTEX_UNIFORM_VECTORS,GL_MAX_VIEWPORT_DIMS,GL_MIN_PROGRAM_TEXEL_OFFSET,GL_MINOR_VERSION,GL_NUM_COMPRESSED_TEXTURE_FORMATS,GL_NUM_EXTENSIONS,GL_NUM_PROGRAM_BINARY_FORMATS,GL_NUM_SHADER_BINARY_FORMATS,GL_PACK_ALIGNMENT,GL_PACK_ROW_LENGTH,GL_PACK_SKIP_PIXELS,GL_PACK_SKIP_ROWS,GL_PIXEL_PACK_BUFFER_BINDING,GL_PIXEL_UNPACK_BUFFER_BINDING,GL_POLYGON_OFFSET_FACTOR,GL_POLYGON_OFFSET_FILL,GL_POLYGON_OFFSET_UNITS,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_PROGRAM_BINARY_FORMATS,GL_RASTERIZER_DISCARD,GL_READ_BUFFER,GL_READ_FRAMEBUFFER_BINDING,GL_RED_BITS,GL_RENDERBUFFER_BINDING,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_BUFFERS,GL_SAMPLE_COVERAGE,GL_SAMPLE_COVERAGE_INVERT,GL_SAMPLE_COVERAGE_VALUE,GL_SAMPLER_BINDING,GL_SAMPLES,GL_SCISSOR_BOX,GL_SCISSOR_TEST,GL_SHADER_BINARY_FORMATS,GL_SHADER_COMPILER,GL_STENCIL_BACK_FAIL,GL_STENCIL_BACK_FUNC,GL_STENCIL_BACK_PASS_DEPTH_FAIL,GL_STENCIL_BACK_PASS_DEPTH_PASS,GL_STENCIL_BACK_REF,GL_STENCIL_BACK_VALUE_MASK,GL_STENCIL_BACK_WRITEMASK,GL_STENCIL_BITS,GL_STENCIL_CLEAR_VALUE,GL_STENCIL_FAIL,GL_STENCIL_FUNC,GL_STENCIL_PASS_DEPTH_FAIL,GL_STENCIL_PASS_DEPTH_PASS,GL_STENCIL_REF,GL_STENCIL_TEST,GL_STENCIL_VALUE_MASK,GL_STENCIL_WRITEMASK,GL_SUBPIXEL_BITS,GL_TEXTURE_BINDING_2D,GL_TEXTURE_BINDING_2D_ARRAY,GL_TEXTURE_BINDING_3D,GL_TEXTURE_BINDING_CUBE_MAP,GL_TRANSFORM_FEEDBACK_BINDING,GL_TRANSFORM_FEEDBACK_ACTIVE,GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,GL_TRANSFORM_FEEDBACK_PAUSED,GL_TRANSFORM_FEEDBACK_BUFFER_SIZE,GL_TRANSFORM_FEEDBACK_BUFFER_START,GL_UNIFORM_BUFFER_BINDING,GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,GL_UNIFORM_BUFFER_SIZE,GL_UNIFORM_BUFFER_START,GL_UNPACK_ALIGNMENT,GL_UNPACK_IMAGE_HEIGHT,GL_UNPACK_ROW_LENGTH,GL_UNPACK_SKIP_IMAGES,GL_UNPACK_SKIP_PIXELS,GL_UNPACK_SKIP_ROWS,GL_VERTEX_ARRAY_BINDING,GL_VIEWPORT"},
+ {"glGetBooleanv,glGetBooleani_v,glGetFloatv,glGetInteger64i_v,glGetInteger64v,glGetIntegeri_v,glGetIntegerv", "pname,target", "3.1", "GL_ACTIVE_TEXTURE,GL_ALIASED_LINE_WIDTH_RANGE,GL_ALIASED_POINT_SIZE_RANGE,GL_ALPHA_BITS,GL_ARRAY_BUFFER_BINDING,GL_BLEND,GL_BLEND_COLOR,GL_BLEND_DST_ALPHA,GL_BLEND_DST_RGB,GL_BLEND_EQUATION_ALPHA,GL_BLEND_EQUATION_RGB,GL_BLEND_SRC_ALPHA,GL_BLEND_SRC_RGB,GL_BLUE_BITS,GL_COLOR_CLEAR_VALUE,GL_COLOR_WRITEMASK,GL_COMPRESSED_TEXTURE_FORMATS,GL_COPY_READ_BUFFER_BINDING,GL_COPY_WRITE_BUFFER_BINDING,GL_CULL_FACE,GL_CULL_FACE_MODE,GL_CURRENT_PROGRAM,GL_DEPTH_BITS,GL_DEPTH_CLEAR_VALUE,GL_DEPTH_FUNC,GL_DEPTH_RANGE,GL_DEPTH_TEST,GL_DEPTH_WRITEMASK,GL_DISPATCH_INDIRECT_BUFFER_BINDING,GL_DITHER,GL_DRAW_BUFFER,GL_DRAW_FRAMEBUFFER_BINDING,GL_ELEMENT_ARRAY_BUFFER_BINDING,GL_FRAGMENT_SHADER_DERIVATIVE_HINT,GL_FRONT_FACE,GL_GENERATE_MIPMAP_HINT,GL_GREEN_BITS,GL_IMAGE_BINDING_LAYERED,GL_IMPLEMENTATION_COLOR_READ_FORMAT,GL_IMPLEMENTATION_COLOR_READ_TYPE,GL_LINE_WIDTH,GL_MAJOR_VERSION,GL_MAX_3D_TEXTURE_SIZE,GL_MAX_ARRAY_TEXTURE_LAYERS,GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS,GL_MAX_COLOR_ATTACHMENTS,GL_MAX_COLOR_TEXTURE_SAMPLES,GL_MAX_COMBINED_ATOMIC_COUNTERS,GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS,GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS,GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,GL_MAX_COMBINED_UNIFORM_BLOCKS,GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,GL_MAX_COMPUTE_ATOMIC_COUNTERS,GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS,GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS,GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS,GL_MAX_COMPUTE_UNIFORM_BLOCKS,GL_MAX_COMPUTE_UNIFORM_COMPONENTS,GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS,GL_MAX_COMPUTE_WORK_GROUP_COUNT,GL_MAX_COMPUTE_WORK_GROUP_SIZE,GL_MAX_CUBE_MAP_TEXTURE_SIZE,GL_MAX_DRAW_BUFFERS,GL_MAX_ELEMENT_INDEX,GL_MAX_ELEMENTS_INDICES,GL_MAX_ELEMENTS_VERTICES,GL_MAX_FRAGMENT_ATOMIC_COUNTERS,GL_MAX_FRAGMENT_INPUT_COMPONENTS,GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS,GL_MAX_FRAGMENT_UNIFORM_BLOCKS,GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,GL_MAX_FRAGMENT_UNIFORM_VECTORS,GL_MAX_FRAMEBUFFER_HEIGHT,GL_MAX_FRAMEBUFFER_SAMPLES,GL_MAX_FRAMEBUFFER_WIDTH,GL_MAX_INTEGER_SAMPLES,GL_MAX_PROGRAM_TEXEL_OFFSET,GL_MAX_RENDERBUFFER_SIZE,GL_MAX_SAMPLE_MASK_WORDS,GL_MAX_SAMPLES,GL_MAX_SERVER_WAIT_TIMEOUT,GL_MAX_SHADER_STORAGE_BLOCK_SIZE,GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS,GL_MAX_TEXTURE_IMAGE_UNITS,GL_MAX_TEXTURE_LOD_BIAS,GL_MAX_TEXTURE_SIZE,GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,GL_MAX_UNIFORM_BLOCK_SIZE,GL_MAX_UNIFORM_BUFFER_BINDINGS,GL_MAX_UNIFORM_LOCATIONS,GL_MAX_VARYING_COMPONENTS,GL_MAX_VARYING_VECTORS,GL_MAX_VERTEX_ATOMIC_COUNTERS,GL_MAX_VERTEX_ATTRIB_BINDINGS,GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET,GL_MAX_VERTEX_ATTRIBS,GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS,GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,GL_MAX_VERTEX_OUTPUT_COMPONENTS,GL_MAX_VERTEX_UNIFORM_BLOCKS,GL_MAX_VERTEX_UNIFORM_COMPONENTS,GL_MAX_VERTEX_UNIFORM_VECTORS,GL_MAX_VIEWPORT_DIMS,GL_MIN_PROGRAM_TEXEL_OFFSET,GL_MINOR_VERSION,GL_NUM_COMPRESSED_TEXTURE_FORMATS,GL_NUM_EXTENSIONS,GL_NUM_PROGRAM_BINARY_FORMATS,GL_NUM_SHADER_BINARY_FORMATS,GL_PACK_ALIGNMENT,GL_PACK_ROW_LENGTH,GL_PACK_SKIP_PIXELS,GL_PACK_SKIP_ROWS,GL_PIXEL_PACK_BUFFER_BINDING,GL_PIXEL_UNPACK_BUFFER_BINDING,GL_POLYGON_OFFSET_FACTOR,GL_POLYGON_OFFSET_FILL,GL_POLYGON_OFFSET_UNITS,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_PROGRAM_BINARY_FORMATS,GL_PROGRAM_PIPELINE_BINDING,GL_RASTERIZER_DISCARD,GL_READ_BUFFER,GL_READ_FRAMEBUFFER_BINDING,GL_RED_BITS,GL_RENDERBUFFER_BINDING,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_BUFFERS,GL_SAMPLE_COVERAGE,GL_SAMPLE_COVERAGE_INVERT,GL_SAMPLE_COVERAGE_VALUE,GL_SAMPLER_BINDING,GL_SAMPLES,GL_SCISSOR_BOX,GL_SCISSOR_TEST,GL_SHADER_BINARY_FORMATS,GL_SHADER_COMPILER,GL_SHADER_STORAGE_BUFFER_BINDING,GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT,GL_SHADER_STORAGE_BUFFER_SIZE,GL_SHADER_STORAGE_BUFFER_START,GL_STENCIL_BACK_FAIL,GL_STENCIL_BACK_FUNC,GL_STENCIL_BACK_PASS_DEPTH_FAIL,GL_STENCIL_BACK_PASS_DEPTH_PASS,GL_STENCIL_BACK_REF,GL_STENCIL_BACK_VALUE_MASK,GL_STENCIL_BACK_WRITEMASK,GL_STENCIL_BITS,GL_STENCIL_CLEAR_VALUE,GL_STENCIL_FAIL,GL_STENCIL_FUNC,GL_STENCIL_PASS_DEPTH_FAIL,GL_STENCIL_PASS_DEPTH_PASS,GL_STENCIL_REF,GL_STENCIL_TEST,GL_STENCIL_VALUE_MASK,GL_STENCIL_WRITEMASK,GL_SUBPIXEL_BITS,GL_TEXTURE_BINDING_2D,GL_TEXTURE_BINDING_2D_ARRAY,GL_TEXTURE_BINDING_3D,GL_TEXTURE_BINDING_CUBE_MAP,GL_TEXTURE_BINDING_2D_MULTISAMPLE,GL_TRANSFORM_FEEDBACK_BINDING,GL_TRANSFORM_FEEDBACK_ACTIVE,GL_TRANSFORM_FEEDBACK_BUFFER_BINDING,GL_TRANSFORM_FEEDBACK_PAUSED,GL_TRANSFORM_FEEDBACK_BUFFER_SIZE,GL_TRANSFORM_FEEDBACK_BUFFER_START,GL_UNIFORM_BUFFER_BINDING,GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT,GL_UNIFORM_BUFFER_SIZE,GL_UNIFORM_BUFFER_START,GL_UNPACK_ALIGNMENT,GL_UNPACK_IMAGE_HEIGHT,GL_UNPACK_ROW_LENGTH,GL_UNPACK_SKIP_IMAGES,GL_UNPACK_SKIP_PIXELS,GL_UNPACK_SKIP_ROWS,GL_VERTEX_ARRAY_BINDING,GL_VERTEX_BINDING_DIVISOR,GL_VERTEX_BINDING_OFFSET,GL_VERTEX_BINDING_STRIDE,GL_VIEWPORT"},
+ {"glGetBooleanv,glGetFloatv,glGetIntegerv", "pname", "2.0", "GL_ACTIVE_TEXTURE,GL_ALIASED_LINE_WIDTH_RANGE,GL_ALIASED_POINT_SIZE_RANGE,GL_ALPHA_BITS,GL_ARRAY_BUFFER_BINDING,GL_BLEND,GL_BLEND_COLOR,GL_BLEND_DST_ALPHA,GL_BLEND_DST_RGB,GL_BLEND_EQUATION_ALPHA,GL_BLEND_EQUATION_RGB,GL_BLEND_SRC_ALPHA,GL_BLEND_SRC_RGB,GL_BLUE_BITS,GL_COLOR_CLEAR_VALUE,GL_COLOR_WRITEMASK,GL_COMPRESSED_TEXTURE_FORMATS,GL_CULL_FACE,GL_CULL_FACE_MODE,GL_CURRENT_PROGRAM,GL_DEPTH_BITS,GL_DEPTH_CLEAR_VALUE,GL_DEPTH_FUNC,GL_DEPTH_RANGE,GL_DEPTH_TEST,GL_DEPTH_WRITEMASK,GL_DITHER,GL_ELEMENT_ARRAY_BUFFER_BINDING,GL_FRAMEBUFFER_BINDING,GL_FRONT_FACE,GL_GENERATE_MIPMAP_HINT,GL_GREEN_BITS,GL_IMPLEMENTATION_COLOR_READ_FORMAT,GL_IMPLEMENTATION_COLOR_READ_TYPE,GL_LINE_WIDTH,GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,GL_MAX_CUBE_MAP_TEXTURE_SIZE,GL_MAX_FRAGMENT_UNIFORM_VECTORS,GL_MAX_RENDERBUFFER_SIZE,GL_MAX_TEXTURE_IMAGE_UNITS,GL_MAX_TEXTURE_SIZE,GL_MAX_VARYING_VECTORS,GL_MAX_VERTEX_ATTRIBS,GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,GL_MAX_VERTEX_UNIFORM_VECTORS,GL_MAX_VIEWPORT_DIMS,GL_NUM_COMPRESSED_TEXTURE_FORMATS,GL_NUM_SHADER_BINARY_FORMATS,GL_PACK_ALIGNMENT,GL_POLYGON_OFFSET_FACTOR,GL_POLYGON_OFFSET_FILL,GL_POLYGON_OFFSET_UNITS,GL_RED_BITS,GL_RENDERBUFFER_BINDING,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_BUFFERS,GL_SAMPLE_COVERAGE,GL_SAMPLE_COVERAGE_INVERT,GL_SAMPLE_COVERAGE_VALUE,GL_SAMPLES,GL_SCISSOR_BOX,GL_SCISSOR_TEST,GL_SHADER_BINARY_FORMATS,GL_SHADER_COMPILER,GL_STENCIL_BACK_FAIL,GL_STENCIL_BACK_FUNC,GL_STENCIL_BACK_PASS_DEPTH_FAIL,GL_STENCIL_BACK_PASS_DEPTH_PASS,GL_STENCIL_BACK_REF,GL_STENCIL_BACK_VALUE_MASK,GL_STENCIL_BACK_WRITEMASK,GL_STENCIL_BITS,GL_STENCIL_CLEAR_VALUE,GL_STENCIL_FAIL,GL_STENCIL_FUNC,GL_STENCIL_PASS_DEPTH_FAIL,GL_STENCIL_PASS_DEPTH_PASS,GL_STENCIL_REF,GL_STENCIL_TEST,GL_STENCIL_VALUE_MASK,GL_STENCIL_WRITEMASK,GL_SUBPIXEL_BITS,GL_TEXTURE_BINDING_2D,GL_TEXTURE_BINDING_CUBE_MAP,GL_UNPACK_ALIGNMENT,GL_VIEWPORT"},
+ {"glGetBooleanv,glGetFloatv,glGetIntegerv,glGetFixedv", "pname", "1.1", "GL_ACTIVE_TEXTURE,GL_ALIASED_POINT_SIZE_RANGE,GL_ALIASED_LINE_WIDTH_RANGE,GL_ALPHA_BITS,GL_ALPHA_TEST,GL_ALPHA_TEST_FUNC,GL_ALPHA_TEST_REF,GL_ARRAY_BUFFER_BINDING,GL_BLEND,GL_BLEND_DST,GL_BLEND_SRC,GL_BLUE_BITS,GL_CLIENT_ACTIVE_TEXTURE,GL_COLOR_ARRAY,GL_COLOR_ARRAY_BUFFER_BINDING,GL_COLOR_ARRAY_SIZE,GL_COLOR_ARRAY_STRIDE,GL_COLOR_ARRAY_TYPE,GL_COLOR_CLEAR_VALUE,GL_COLOR_LOGIC_OP,GL_COLOR_MATERIAL,GL_COLOR_WRITEMASK,GL_COMPRESSED_TEXTURE_FORMATS,GL_CULL_FACE,GL_CULL_FACE_MODE,GL_CURRENT_COLOR,GL_CURRENT_NORMAL,GL_CURRENT_TEXTURE_COORDS,GL_DEPTH_BITS,GL_DEPTH_CLEAR_VALUE,GL_DEPTH_FUNC,GL_DEPTH_RANGE,GL_DEPTH_TEST,GL_DEPTH_WRITEMASK,GL_ELEMENT_ARRAY_BUFFER_BINDING,GL_FOG,GL_FOG_COLOR,GL_FOG_DENSITY,GL_FOG_END,GL_FOG_HINT,GL_FOG_MODE,GL_FOG_START,GL_FRONT_FACE,GL_GREEN_BITS,GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES,GL_IMPLEMENTATION_COLOR_READ_TYPE_OES,GL_LIGHT_MODEL_AMBIENT,GL_LIGHT_MODEL_TWO_SIDE,GL_LIGHTING,GL_LINE_SMOOTH,GL_LINE_SMOOTH_HINT,GL_LINE_WIDTH,GL_LOGIC_OP_MODE,GL_MATRIX_MODE,GL_MAX_CLIP_PLANES,GL_MAX_LIGHTS,GL_MAX_MODELVIEW_STACK_DEPTH,GL_MAX_PROJECTION_STACK_DEPTH,GL_MAX_TEXTURE_SIZE,GL_MAX_TEXTURE_STACK_DEPTH,GL_MAX_TEXTURE_UNITS,GL_MAX_VIEWPORT_DIMS,GL_MODELVIEW_MATRIX,GL_MODELVIEW_STACK_DEPTH,GL_MULTISAMPLE,GL_NORMAL_ARRAY,GL_NORMAL_ARRAY_BUFFER_BINDING,GL_NORMAL_ARRAY_STRIDE,GL_NORMAL_ARRAY_TYPE,GL_NORMALIZE,GL_NUM_COMPRESSED_TEXTURE_FORMATS,GL_PACK_ALIGNMENT,GL_PERSPECTIVE_CORRECTION_HINT,GL_POINT_DISTANCE_ATTENUATION,GL_POINT_FADE_THRESHOLD_SIZE,GL_POINT_SIZE,GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES,GL_POINT_SIZE_ARRAY_OES,GL_POINT_SIZE_ARRAY_STRIDE_OES,GL_POINT_SIZE_ARRAY_TYPE_OES,GL_POINT_SIZE_MAX,GL_POINT_SIZE_MIN,GL_POINT_SMOOTH,GL_POINT_SMOOTH_HINT,GL_POINT_SPRITE_OES,GL_POLYGON_OFFSET_FACTOR,GL_POLYGON_OFFSET_FILL,GL_POLYGON_OFFSET_UNITS,GL_PROJECTION_MATRIX,GL_PROJECTION_STACK_DEPTH,GL_RED_BITS,GL_RESCALE_NORMAL,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_ALPHA_TO_ONE,GL_SAMPLE_BUFFERS,GL_SAMPLE_COVERAGE,GL_SAMPLE_COVERAGE_INVERT,GL_SAMPLE_COVERAGE_VALUE,GL_SAMPLES,GL_SCISSOR_BOX,GL_SCISSOR_TEST,GL_SHADE_MODEL,GL_SMOOTH_LINE_WIDTH_RANGE,GL_SMOOTH_POINT_SIZE_RANGE,GL_STENCIL_BITS,GL_STENCIL_CLEAR_VALUE,GL_STENCIL_FAIL,GL_STENCIL_FUNC,GL_STENCIL_PASS_DEPTH_FAIL,GL_STENCIL_PASS_DEPTH_PASS,GL_STENCIL_REF,GL_STENCIL_TEST,GL_STENCIL_VALUE_MASK,GL_STENCIL_WRITEMASK,GL_SUBPIXEL_BITS,GL_TEXTURE_2D,GL_TEXTURE_BINDING_2D,GL_TEXTURE_COORD_ARRAY,GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING,GL_TEXTURE_COORD_ARRAY_SIZE,GL_TEXTURE_COORD_ARRAY_STRIDE,GL_TEXTURE_COORD_ARRAY_TYPE,GL_TEXTURE_MATRIX,GL_TEXTURE_STACK_DEPTH,GL_UNPACK_ALIGNMENT,GL_VIEWPORT,GL_VERTEX_ARRAY,GL_VERTEX_ARRAY_BUFFER_BINDING,GL_VERTEX_ARRAY_SIZE,GL_VERTEX_ARRAY_STRIDE,GL_VERTEX_ARRAY_TYPE," + GL_CLIP_PLANEi + "," + GL_LIGHTi},
+ {"glGetClipPlanef,glGetClipPlanex", "plane", "1.1", GL_CLIP_PLANEi},
+ {"glGetError", "result", "1.1", "GL_NO_ERROR,GL_INVALID_ENUM,GL_INVALID_VALUE,GL_INVALID_OPERATION,GL_STACK_OVERFLOW,GL_STACK_UNDERFLOW,GL_OUT_OF_MEMORY"},
+ {"glGetError", "result", "2.0,3.0,3.1", "GL_NO_ERROR,GL_INVALID_ENUM,GL_INVALID_VALUE,GL_INVALID_OPERATION,GL_INVALID_FRAMEBUFFER_OPERATION,GL_OUT_OF_MEMORY"},
+ {"glGetFramebufferAttachmentParameteriv", "attachment", "3.0,3.1", "GL_BACK,GL_DEPTH,GL_STENCIL,GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT,GL_DEPTH_STENCIL_ATTACHMENT," + GL_COLOR_ATTACHMENTi},
+ {"glGetFramebufferAttachmentParameteriv", "pname", "3.0,3.1", "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE,GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER"},
+ {"glGetFramebufferAttachmentParameteriv", "target", "3.0,3.1", "GL_DRAW_FRAMEBUFFER,GL_READ_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glGetFramebufferParameteriv", "pname", "3.1", "GL_FRAMEBUFFER_DEFAULT_WIDTH,GL_FRAMEBUFFER_DEFAULT_HEIGHT,GL_FRAMEBUFFER_DEFAULT_SAMPLES,GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS"},
+ {"glGetFramebufferParameteriv", "target", "3.1", "GL_READ_FRAMEBUFFER,GL_DRAW_FRAMEBUFFER,GL_FRAMEBUFFER"},
+ {"glGetInternalformativ", "internalformat", "3.0,3.1", "GL_R8,GL_R8_SNORM,GL_R16F,GL_R32F,GL_R8UI,GL_R8I,GL_R16UI,GL_R16I,GL_R32UI,GL_R32I,GL_RG8,GL_RG8_SNORM,GL_RG16F,GL_RG32F,GL_RG8UI,GL_RG8I,GL_RG16UI,GL_RG16I,GL_RG32UI,GL_RG32I,GL_RGB8,GL_SRGB8,GL_RGB565,GL_RGB8_SNORM,GL_R11F_G11F_B10F,GL_RGB9_E5,GL_RGB16F,GL_RGB32F,GL_RGB8UI,GL_RGB8I,GL_RGB16UI,GL_RGB16I,GL_RGB32UI,GL_RGB32I,GL_RGBA8,GL_SRGB8_ALPHA8,GL_RGBA8_SNORM,GL_RGB5_A1,GL_RGBA4,GL_RGB10_A2,GL_RGBA16F,GL_RGBA32F,GL_RGBA8UI,GL_RGBA8I,GL_RGB10_A2UI,GL_RGBA16UI,GL_RGBA16I,GL_RGBA32I,GL_RGBA32UI,GL_DEPTH_COMPONENT16,GL_DEPTH_COMPONENT24,GL_DEPTH_COMPONENT32F,GL_DEPTH24_STENCIL8,GL_DEPTH32F_STENCIL8"},
+ {"glGetInternalformativ", "pname", "3.0,3.1", "GL_NUM_SAMPLE_COUNTS,GL_SAMPLES"},
+ {"glGetLightfv,glGetLightxv", "light", "1.1", GL_LIGHTi},
+ {"glGetMaterialfv,glGetMaterialxv", "face", "1.1", "GL_FRONT,GL_BACK"},
+ {"glGetProgramInterfaceiv", "pname", "3.1", "GL_ACTIVE_RESOURCES,GL_MAX_NAME_LENGTH,GL_MAX_NUM_ACTIVE_VARIABLES"},
+ {"glGetProgramInterfaceiv", "programInterface", "3.1", "GL_UNIFORM,GL_UNIFORM_BLOCK,GL_ATOMIC_COUNTER_BUFFER,GL_PROGRAM_INPUT,GL_PROGRAM_OUTPUT,GL_TRANSFORM_FEEDBACK_VARYING,GL_BUFFER_VARIABLE,GL_SHADER_STORAGE_BLOCK,GL_TRANSFORM_FEEDBACK_BUFFER"},
+ {"glGetProgramPipelineiv", "pname", "3.1", "GL_ACTIVE_PROGRAM,GL_VERTEX_SHADER,GL_FRAGMENT_SHADER,GL_COMPUTE_SHADER,GL_INFO_LOG_LENGTH,GL_VALIDATE_STATUS"},
+ {"glGetProgramResourceIndex", "programInterface", "3.1", "GL_UNIFORM,GL_UNIFORM_BLOCK,GL_PROGRAM_INPUT,GL_PROGRAM_OUTPUT,GL_TRANSFORM_FEEDBACK_VARYING,GL_BUFFER_VARIABLE,GL_SHADER_STORAGE_BLOCK"},
+ {"glGetProgramResourceLocation", "programInterface", "3.1", "GL_UNIFORM,GL_PROGRAM_INPUT,GL_PROGRAM_OUTPUT,GL_TRANSFORM_FEEDBACK_BUFFER"},
+ {"glGetProgramResourceName", "programInterface", "3.1", "GL_UNIFORM,GL_UNIFORM_BLOCK,GL_PROGRAM_INPUT,GL_PROGRAM_OUTPUT,GL_TRANSFORM_FEEDBACK_VARYING,GL_BUFFER_VARIABLE,GL_SHADER_STORAGE_BLOCK"},
+ {"glGetProgramResourceiv", "programInterface", "3.1", "GL_ATOMIC_COUNTER_BUFFER,GL_BUFFER_VARIABLE,GL_PROGRAM_INPUT,GL_PROGRAM_OUTPUT,GL_SHADER_STORAGE_BLOCK,GL_TRANSFORM_FEEDBACK_VARYING,GL_UNIFORM,GL_UNIFORM_BLOCK,GL_TRANSFORM_FEEDBACK_BUFFER"},
+ {"glGetProgramResourceiv", "props", "3.1", "GL_NAME_LENGTH,GL_TYPE,GL_ARRAY_SIZE,GL_OFFSET,GL_BLOCK_INDEX,GL_ARRAY_STRIDE,GL_MATRIX_STRIDE,GL_IS_ROW_MAJOR,GL_ATOMIC_COUNTER_BUFFER_INDEX,GL_BUFFER_BINDING,GL_BUFFER_DATA_SIZE,GL_NUM_ACTIVE_VARIABLES,GL_ACTIVE_VARIABLES,GL_REFERENCED_BY_VERTEX_SHADER,GL_REFERENCED_BY_FRAGMENT_SHADER,GL_REFERENCED_BY_COMPUTE_SHADER,GL_TOP_LEVEL_ARRAY_SIZE,GL_TOP_LEVEL_ARRAY_STRIDE,GL_LOCATION,GL_LOCATION_INDEX,GL_LOCATION_COMPONENT"},
+ {"glGetRenderbufferParameteriv", "pname", "3.0,3.1", "GL_RENDERBUFFER_WIDTH,GL_RENDERBUFFER_HEIGHT,GL_RENDERBUFFER_INTERNAL_FORMAT,GL_RENDERBUFFER_RED_SIZE,GL_RENDERBUFFER_GREEN_SIZE,GL_RENDERBUFFER_BLUE_SIZE,GL_RENDERBUFFER_ALPHA_SIZE,GL_RENDERBUFFER_DEPTH_SIZE,GL_RENDERBUFFER_STENCIL_SIZE,GL_RENDERBUFFER_SAMPLES"},
+ {"glGetShaderPrecisionFormat", "precisiontype", "3.0,3.1", "GL_LOW_FLOAT,GL_MEDIUM_FLOAT,GL_HIGH_FLOAT,GL_LOW_INT,GL_MEDIUM_INT,GL_HIGH_INT"},
+ {"glGetString", "name", "1.1", "GL_VENDOR,GL_RENDERER,GL_VERSION,GL_EXTENSIONS"},
+ {"glGetString", "name", "2.0", "GL_VENDOR,GL_RENDERER,GL_VERSION,GL_SHADING_LANGUAGE_VERSION,GL_EXTENSIONS"},
+ {"glGetString", "name", "3.0,3.1", "GL_EXTENSIONS,GL_RENDERER,GL_SHADING_LANGUAGE_VERSION,GL_VENDOR,GL_VERSION"},
+ {"glGetStringi", "name", "3.0,3.1", "GL_EXTENSIONS"},
+ {"glGetSynciv", "pname", "3.0,3.1", "GL_OBJECT_TYPE,GL_SYNC_STATUS,GL_SYNC_CONDITION,GL_SYNC_FLAGS"},
+ {"glGetTexLevelParameterfv,glGetTexLevelParameteriv", "target", "3.1", "GL_TEXTURE_2D,GL_TEXTURE_3D,GL_TEXTURE_2D_ARRAY,GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_CUBE_MAP_POSITIVE_X,GL_TEXTURE_CUBE_MAP_NEGATIVE_X,GL_TEXTURE_CUBE_MAP_POSITIVE_Y,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,GL_TEXTURE_CUBE_MAP_POSITIVE_Z,GL_TEXTURE_CUBE_MAP_NEGATIVE_Z"},
+ {"glGetTexParameterfv,glGetTexParameteriv,glGetTexParameterxv", "target", "1.1", "GL_TEXTURE_2D"},
+ {"glInvalidateFramebuffer,glInvalidateSubFramebuffer", "attachments", "3.0,3.1", "GL_DEPTH_ATTACHMENT,GL_STENCIL_ATTACHMENT,GL_DEPTH_STENCIL_ATTACHMENT," + GL_COLOR_ATTACHMENTi},
+ {"glIsEnabled", "cap", "1.1", "GL_ALPHA_TEST,GL_BLEND,GL_COLOR_ARRAY,GL_COLOR_LOGIC_OP,GL_COLOR_MATERIAL,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_FOG,GL_LIGHTING,GL_LINE_SMOOTH,GL_MULTISAMPLE,GL_NORMAL_ARRAY,GL_NORMALIZE,GL_POINT_SIZE_ARRAY_OES,GL_POINT_SMOOTH,GL_POINT_SPRITE_OES,GL_POLYGON_OFFSET_FILL,GL_RESCALE_NORMAL,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_ALPHA_TO_ONE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST,GL_TEXTURE_2D,GL_TEXTURE_COORD_ARRAY,GL_VERTEX_ARRAY," + GL_CLIP_PLANEi + "," + GL_LIGHTi},
+ {"glIsEnabled", "cap", "2.0", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glIsEnabled", "cap", "3.0", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_RASTERIZER_DISCARD,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glIsEnabled", "cap", "3.1", "GL_BLEND,GL_CULL_FACE,GL_DEPTH_TEST,GL_DITHER,GL_POLYGON_OFFSET_FILL,GL_PRIMITIVE_RESTART_FIXED_INDEX,GL_RASTERIZER_DISCARD,GL_SAMPLE_ALPHA_TO_COVERAGE,GL_SAMPLE_COVERAGE,GL_SCISSOR_TEST,GL_STENCIL_TEST"},
+ {"glLightf,glLightfv,glLightx,glLightxv", "light", "1.1", GL_LIGHTi},
+ {"glMapBufferRange", "access", "3.0,3.1", "GL_MAP_READ_BIT,GL_MAP_WRITE_BIT,GL_MAP_INVALIDATE_RANGE_BIT,GL_MAP_INVALIDATE_BUFFER_BIT,GL_MAP_FLUSH_EXPLICIT_BIT,GL_MAP_UNSYNCHRONIZED_BIT"},
+ {"glMapBufferRange,glUnmapBuffer", "target", "3.0", "GL_ARRAY_BUFFER,GL_COPY_READ_BUFFER,GL_COPY_WRITE_BUFFER,GL_ELEMENT_ARRAY_BUFFER,GL_PIXEL_PACK_BUFFER,GL_PIXEL_UNPACK_BUFFER,GL_TRANSFORM_FEEDBACK_BUFFER,GL_UNIFORM_BUFFER"},
+ {"glMapBufferRange,glUnmapBuffer", "target", "3.1", "GL_ARRAY_BUFFER,GL_ATOMIC_COUNTER_BUFFER,GL_COPY_READ_BUFFER,GL_COPY_WRITE_BUFFER,GL_DISPATCH_INDIRECT_BUFFER,GL_DRAW_INDIRECT_BUFFER,GL_ELEMENT_ARRAY_BUFFER,GL_PIXEL_PACK_BUFFER,GL_PIXEL_UNPACK_BUFFER,GL_SHADER_STORAGE_BUFFER,GL_TRANSFORM_FEEDBACK_BUFFER,GL_UNIFORM_BUFFER"},
+ {"glMemoryBarrier,glMemoryBarrierByRegion", "barriers", "3.1", "GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT,GL_ELEMENT_ARRAY_BARRIER_BIT,GL_UNIFORM_BARRIER_BIT,GL_TEXTURE_FETCH_BARRIER_BIT,GL_SHADER_IMAGE_ACCESS_BARRIER_BIT,GL_COMMAND_BARRIER_BIT,GL_PIXEL_BUFFER_BARRIER_BIT,GL_TEXTURE_UPDATE_BARRIER_BIT,GL_BUFFER_UPDATE_BARRIER_BIT,GL_FRAMEBUFFER_BARRIER_BIT,GL_TRANSFORM_FEEDBACK_BARRIER_BIT,GL_ATOMIC_COUNTER_BARRIER_BIT,GL_SHADER_STORAGE_BARRIER_BIT,GL_ALL_BARRIER_BITS"},
+ {"glMultiTexCoord4f", "target", "1.1", GL_TEXTUREi},
+ {"glMultiTexCoord4x", "texture", "1.1", GL_TEXTUREi},
+ {"glPixelStorei", "pname", "1.1,2.0", "GL_PACK_ALIGNMENT,GL_UNPACK_ALIGNMENT"},
+ {"glPixelStorei", "pname", "3.0,3.1", "GL_PACK_ROW_LENGTH,GL_PACK_IMAGE_HEIGHT,GL_PACK_SKIP_PIXELS,GL_PACK_SKIP_ROWS,GL_PACK_SKIP_IMAGES,GL_PACK_ALIGNMENT,GL_UNPACK_ROW_LENGTH,GL_UNPACK_IMAGE_HEIGHT,GL_UNPACK_SKIP_PIXELS,GL_UNPACK_SKIP_ROWS,GL_UNPACK_SKIP_IMAGES,GL_UNPACK_ALIGNMENT"},
+ {"glProgramBinary", "binaryFormat", "3.0,3.1", ""}, // implementation dependent
+ {"glProgramParameteri", "pname", "3.0", "GL_PROGRAM_BINARY_RETRIEVABLE_HINT"},
+ {"glProgramParameteri", "pname", "3.1", "GL_PROGRAM_BINARY_RETRIEVABLE_HINT,GL_PROGRAM_SEPARABLE"},
+ {"glReadBuffer", "src", "3.0,3.1", "GL_BACK,GL_NONE," + GL_COLOR_ATTACHMENTi},
+ {"glReadPixels", "format", "1.1", "GL_ALPHA,GL_RGB,GL_RGBA"},
+ {"glReadPixels", "format", "3.0,3.1", "GL_RED,GL_RED_INTEGER,GL_RG,GL_RG_INTEGER,GL_RGB,GL_RGB_INTEGER,GL_RGBA,GL_RGBA_INTEGER,GL_LUMINANCE_ALPHA,GL_LUMINANCE,GL_ALPHA"},
+ {"glReadPixels", "type", "1.1", "GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4,GL_UNSIGNED_SHORT_5_5_5_1"},
+ {"glReadPixels", "type", "3.0,3.1", "GL_UNSIGNED_BYTE,GL_BYTE,GL_HALF_FLOAT,GL_FLOAT,GL_UNSIGNED_SHORT_5_6_5,GL_UNSIGNED_SHORT_4_4_4_4,GL_UNSIGNED_SHORT_5_5_5_1,GL_UNSIGNED_INT_2_10_10_10_REV,GL_UNSIGNED_INT_10F_11F_11F_REV,GL_UNSIGNED_INT_5_9_9_9_REV,GL_UNSIGNED_INT,GL_INT,GL_FLOAT"},
+ {"glRenderbufferStorage,glRenderbufferStorageMultisample", "internalformat", "3.0,3.1", "GL_R8,GL_R8UI,GL_R8I,GL_R16UI,GL_R16I,GL_R32UI,GL_R32I,GL_RG8,GL_RG8UI,GL_RG8I,GL_RG16UI,GL_RG16I,GL_RG32UI,GL_RG32I,GL_RGB8,GL_RGB565,GL_RGBA8,GL_SRGB8_ALPHA8,GL_RGB5_A1,GL_RGBA4,GL_RGB10_A2,GL_RGBA8UI,GL_RGBA8I,GL_RGB10_A2UI,GL_RGBA16UI,GL_RGBA16I,GL_RGBA32I,GL_RGBA32UI,GL_DEPTH_COMPONENT16,GL_DEPTH_COMPONENT24,GL_DEPTH_COMPONENT32F,GL_DEPTH24_STENCIL8,GL_DEPTH32F_STENCIL8,GL_STENCIL_INDEX8"},
+ {"glRenderbufferStorage,glRenderbufferStorageMultisample", "target", "3.0,3.1", "GL_RENDERBUFFER"},
+ {"glShaderBinary", "binaryformat", "2.0,3.0,3.1", ""}, // OpenGL ES defines no specific binary formats
+ {"glStencilOp", "fail,zfail,zpass", "1.1", "GL_KEEP,GL_ZERO,GL_REPLACE,GL_INCR,GL_DECR,GL_INVERT"},
+ {"glStencilOp,glStencilOpSeparate", "fail,zfail,zpass,sfail,dpfail,dppass", "2.0,3.0,3.1", "GL_KEEP,GL_ZERO,GL_REPLACE,GL_INCR,GL_INCR_WRAP,GL_DECR,GL_DECR_WRAP,GL_INVERT"},
+ {"glTexCoordPointer,glVertexPointer,glNormalPointer", "type", "1.1", "GL_BYTE,GL_SHORT,GL_FIXED,GL_FLOAT"}, // TODO: common profile?
+ {"glTexParameterf,glTexParameterfv,glTexParameteri,glTexParameteriv", "target", "1.1", "GL_TEXTURE_2D"},
+ {"glTexParameterf,glTexParameterfv,glTexParameteri,glTexParameteriv", "target", "2.0", "GL_TEXTURE_2D,GL_TEXTURE_CUBE_MAP"},
+ {"glTexParameterf,glTexParameterfv,glTexParameteri,glTexParameteriv", "target", "3.0", "GL_TEXTURE_2D,GL_TEXTURE_3D,GL_TEXTURE_2D_ARRAY,GL_TEXTURE_CUBE_MAP"},
+ {"glTexParameterf,glTexParameterfv,glTexParameteri,glTexParameteriv", "target", "3.1", "GL_TEXTURE_2D,GL_TEXTURE_3D,GL_TEXTURE_2D_ARRAY,GL_TEXTURE_2D_MULTISAMPLE,GL_TEXTURE_CUBE_MAP"},
+ {"glTexParameterx,glTexParameterxv", "target", "1.1", "GL_TEXTURE_2D"},
+ {"glTexStorage2D,glTexStorage3D", "internalformat", "3.0,3.1", "GL_R8,GL_R8_SNORM,GL_R16F,GL_R32F,GL_R8UI,GL_R8I,GL_R16UI,GL_R16I,GL_R32UI,GL_R32I,GL_RG8,GL_RG8_SNORM,GL_RG16F,GL_RG32F,GL_RG8UI,GL_RG8I,GL_RG16UI,GL_RG16I,GL_RG32UI,GL_RG32I,GL_RGB8,GL_SRGB8,GL_RGB565,GL_RGB8_SNORM,GL_R11F_G11F_B10F,GL_RGB9_E5,GL_RGB16F,GL_RGB32F,GL_RGB8UI,GL_RGB8I,GL_RGB16UI,GL_RGB16I,GL_RGB32UI,GL_RGB32I,GL_RGBA8,GL_SRGB8_ALPHA8,GL_RGBA8_SNORM,GL_RGB5_A1,GL_RGBA4,GL_RGB10_A2,GL_RGBA16F,GL_RGBA32F,GL_RGBA8UI,GL_RGBA8I,GL_RGB10_A2UI,GL_RGBA16UI,GL_RGBA16I,GL_RGBA32I,GL_RGBA32UI,GL_DEPTH_COMPONENT16,GL_DEPTH_COMPONENT24,GL_DEPTH_COMPONENT32F,GL_DEPTH24_STENCIL8,GL_DEPTH32F_STENCIL8,GL_COMPRESSED_R11_EAC,GL_COMPRESSED_SIGNED_R11_EAC,GL_COMPRESSED_RG11_EAC,GL_COMPRESSED_SIGNED_RG11_EAC,GL_COMPRESSED_RGB8_ETC2,GL_COMPRESSED_SRGB8_ETC2,GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,GL_COMPRESSED_RGBA8_ETC2_EAC,GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC"},
+ {"glTexStorage2DMultisample", "internalformat", "3.1", "GL_R8,GL_R8_SNORM,GL_R16F,GL_R32F,GL_R8UI,GL_R8I,GL_R16UI,GL_R16I,GL_R32UI,GL_R32I,GL_RG8,GL_RG8_SNORM,GL_RG16F,GL_RG32F,GL_RG8UI,GL_RG8I,GL_RG16UI,GL_RG16I,GL_RG32UI,GL_RG32I,GL_RGB8,GL_SRGB8,GL_RGB565,GL_RGB8_SNORM,GL_R11F_G11F_B10F,GL_RGB9_E5,GL_RGB16F,GL_RGB32F,GL_RGB8UI,GL_RGB8I,GL_RGB16UI,GL_RGB16I,GL_RGB32UI,GL_RGB32I,GL_RGBA8,GL_SRGB8_ALPHA8,GL_RGBA8_SNORM,GL_RGB5_A1,GL_RGBA4,GL_RGB10_A2,GL_RGBA16F,GL_RGBA32F,GL_RGBA8UI,GL_RGBA8I,GL_RGB10_A2UI,GL_RGBA16UI,GL_RGBA16I,GL_RGBA32I,GL_RGBA32UI,GL_DEPTH_COMPONENT16,GL_DEPTH_COMPONENT24,GL_DEPTH_COMPONENT32F,GL_DEPTH24_STENCIL8,GL_DEPTH32F_STENCIL8"},
+ {"glUseProgramStages", "stages", "3.1", "GL_VERTEX_SHADER_BIT,GL_FRAGMENT_SHADER_BIT,GL_COMPUTE_SHADER_BIT,GL_ALL_SHADER_BITS"},
+ {"glVertexAttribFormat,glVertexAttribIFormat", "type", "3.1", "GL_BYTE,GL_SHORT,GL_INT,GL_FIXED,GL_FLOAT,GL_HALF_FLOAT,GL_UNSIGNED_BYTE,GL_UNSIGNED_SHORT,GL_UNSIGNED_INT,GL_INT_2_10_10_10_REV,GL_UNSIGNED_INT_2_10_10_10_REV"},
+ {"glVertexAttribIPointer", "type", "3.0,3.1", "GL_BYTE,GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT,GL_UNSIGNED_INT"},
+ {"glVertexAttribPointer", "type", "3.0,3.1", "GL_BYTE,GL_UNSIGNED_BYTE,GL_SHORT,GL_UNSIGNED_SHORT,GL_INT,GL_UNSIGNED_INT,GL_HALF_FLOAT,GL_FLOAT,GL_FIXED,GL_INT_2_10_10_10_REV,GL_UNSIGNED_INT_2_10_10_10_REV"},
+ }
+ for _, row := range enumMetadata {
+ if listContains(row.cmdName, cmdName) &&
+ listContains(row.paramName, paramName) &&
+ listContains(row.apiVersion, string(apiVersion)) {
+ if row.acceptedValues != "" {
+ return strings.Split(row.acceptedValues, ","), true
+ } else {
+ return nil, true
+ }
+ }
+ }
+ return nil, false
+}
diff --git a/tools/generate_gles_api/download_reg.go b/tools/generate_gles_api/download_reg.go
new file mode 100644
index 000000000..eeb399def
--- /dev/null
+++ b/tools/generate_gles_api/download_reg.go
@@ -0,0 +1,228 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "encoding/xml"
+ "fmt"
+ "strings"
+)
+
+const url = "https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/api/gl.xml"
+
+// Download the khronos XML registry file
+func DownloadReg() *Registry {
+ bytes := Download(url)
+ reg := &Registry{}
+ if err := xml.Unmarshal(bytes, reg); err != nil {
+ panic(err.Error())
+ }
+ return reg
+}
+
+type KhronosAPI string
+type Version string
+
+const GLES1API = KhronosAPI("gles1")
+const GLES2API = KhronosAPI("gles2") // Includes GLES 3.0 and later
+
+func (v Version) String() string { return fmt.Sprintf("%s", string(v)) }
+
+type Registry struct {
+ Group []Group `xml:"groups>group"`
+ Enums []Enums `xml:"enums"`
+ Command []Command `xml:"commands>command"`
+ Feature []Feature `xml:"feature"`
+ Extension []ExtensionElement `xml:"extensions>extension"`
+}
+
+type NamedElementList []NamedElement
+type NamedElement struct {
+ Name string `xml:"name,attr"`
+}
+
+type Group struct {
+ NamedElement
+ Enum NamedElementList `xml:"enum"`
+}
+
+type Enums struct {
+ Namespace string `xml:"namespace,attr"`
+ Group string `xml:"group,attr"`
+ Type string `xml:"type,attr"` // "bitmask"
+ Comment string `xml:"comment,attr"`
+ Enum []Enum `xml:"enum"`
+}
+
+type Enum struct {
+ NamedElement
+ Value string `xml:"value,attr"`
+ Type string `xml:"type,attr"` // "u" or "ull"
+ API KhronosAPI `xml:"api,attr"`
+ Alias string `xml:"alias,attr"`
+}
+
+type Command struct {
+ Proto ProtoOrParam `xml:"proto"`
+ Param []ProtoOrParam `xml:"param"`
+ Alias NamedElement `xml:"alias"`
+}
+
+type ProtoOrParam struct {
+ InnerXML string `xml:",innerxml"`
+ Chardata string `xml:",chardata"`
+ Group string `xml:"group,attr"`
+ Length string `xml:"len,attr"`
+ Ptype string `xml:"ptype"`
+ Name string `xml:"name"`
+}
+
+type Feature struct {
+ NamedElement
+ API KhronosAPI `xml:"api,attr"`
+ Number Version `xml:"number,attr"`
+ Require RequireOrRemoveList `xml:"require"`
+ Remove RequireOrRemoveList `xml:"remove"`
+}
+
+type ExtensionElement struct {
+ NamedElement
+ Supported string `xml:"supported,attr"`
+ Require RequireOrRemoveList `xml:"require"`
+ Remove RequireOrRemoveList `xml:"remove"`
+}
+
+type RequireOrRemoveList []RequireOrRemove
+type RequireOrRemove struct {
+ API KhronosAPI `xml:"api,attr"` // for extensions only
+ Profile string `xml:"profile,attr"`
+ Comment string `xml:"comment,attr"`
+ Enum NamedElementList `xml:"enum"`
+ Command NamedElementList `xml:"command"`
+}
+
+func (l NamedElementList) Contains(name string) bool {
+ for _, v := range l {
+ if v.Name == name {
+ return true
+ }
+ }
+ return false
+}
+
+func (r *RequireOrRemove) Contains(name string) bool {
+ return r.Enum.Contains(name) || r.Command.Contains(name)
+}
+
+func (l RequireOrRemoveList) Contains(name string) bool {
+ for _, v := range l {
+ if v.Contains(name) {
+ return true
+ }
+ }
+ return false
+}
+
+func (e *ExtensionElement) IsSupported(api KhronosAPI) bool {
+ for _, v := range strings.Split(e.Supported, "|") {
+ if KhronosAPI(v) == api {
+ return true
+ }
+ }
+ return false
+}
+
+func (c Command) Name() string {
+ return c.Proto.Name
+}
+
+func (p ProtoOrParam) Type() string {
+ name := p.InnerXML
+ name = name[:strings.Index(name, "<name>")]
+ name = strings.Replace(name, "<ptype>", "", 1)
+ name = strings.Replace(name, "</ptype>", "", 1)
+ name = strings.TrimSpace(name)
+ return name
+}
+
+// Add the return value as param "result" at slot -1
+func (cmd *Command) ParamsAndResult() map[int]ProtoOrParam {
+ result := cmd.Proto
+ result.Name = "result"
+ results := map[int]ProtoOrParam{-1: result}
+ for i, param := range cmd.Param {
+ results[i] = param
+ }
+ return results
+}
+
+// Return sorted list of versions which support the given symbol
+func (r *Registry) GetVersions(api KhronosAPI, name string) []Version {
+ version, found := Version(""), false
+ for _, feature := range r.Feature {
+ if feature.API == api {
+ if feature.Require.Contains(name) {
+ if found {
+ panic(fmt.Errorf("redefinition of %s", name))
+ }
+ version, found = feature.Number, true
+ }
+ if feature.Remove != nil {
+ // not used in GLES
+ panic(fmt.Errorf("remove tag is not supported"))
+ }
+ }
+ }
+ if found {
+ switch version {
+ case "1.0":
+ return []Version{"1.0", "1.1"}
+ case "2.0":
+ return []Version{"2.0", "3.0", "3.1"}
+ case "3.0":
+ return []Version{"3.0", "3.1"}
+ case "3.1":
+ return []Version{"3.1"}
+ default:
+ panic(fmt.Errorf("Uknown GLES version: %v", version))
+ }
+ } else {
+ return nil
+ }
+}
+
+// Return extensions which define the given symbol
+func (r *Registry) GetExtensions(api KhronosAPI, name string) []string {
+ var extensions []string
+ExtensionLoop:
+ for _, extension := range r.Extension {
+ if extension.IsSupported(api) {
+ for _, require := range extension.Require {
+ if require.API == "" || require.API == api {
+ if require.Contains(name) {
+ extensions = append(extensions, extension.Name)
+ // sometimes the extension repeats definition - ignore
+ continue ExtensionLoop
+ }
+ }
+ }
+ if extension.Remove != nil {
+ // not used in GLES
+ panic(fmt.Errorf("remove tag is not supported"))
+ }
+ }
+ }
+ return extensions
+}
diff --git a/tools/generate_gles_api/generate_api.go b/tools/generate_gles_api/generate_api.go
new file mode 100644
index 000000000..ee143b8d9
--- /dev/null
+++ b/tools/generate_gles_api/generate_api.go
@@ -0,0 +1,416 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "strconv"
+ "strings"
+)
+
+const indent = " "
+
+// Generate the "gles.api" file from combined online and hand written data.
+func GenerateApi(reg *Registry, api KhronosAPI) {
+ files := map[string]*os.File{}
+ printEnums(createFile(files, "glenum"), reg, api, false)
+ printEnums(createFile(files, "glbitfield"), reg, api, true)
+ for _, cmd := range reg.Command {
+ versions := reg.GetVersions(api, cmd.Name())
+ extensions := reg.GetExtensions(api, cmd.Name())
+ if versions != nil {
+ printCommand(createFile(files, getCategory(cmd.Name())), reg, &cmd, api)
+ }
+ if extensions != nil {
+ if isInAndroidExtensionPack(extensions) {
+ printCommand(createFile(files, "android_extension_pack"), reg, &cmd, api)
+ } else {
+ printCommand(createFile(files, "extensions"), reg, &cmd, api)
+ }
+ }
+ }
+ for _, file := range files {
+ if err := file.Close(); err != nil {
+ panic(err)
+ }
+ }
+}
+
+func createFile(files map[string]*os.File, basename string) *os.File {
+ filename := *apiDir + string(os.PathSeparator) + basename + ".api"
+ if file, ok := files[filename]; ok {
+ return file
+ }
+ file, err := os.Create(filename)
+ if err != nil {
+ panic(err)
+ }
+ files[filename] = file
+ fmt.Fprint(file, `// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+`)
+ return file
+}
+
+func getCategory(cmdName string) string {
+ var table = []struct {
+ category string
+ cmdName string // Regexp
+ }{
+ {"asynchronous_queries", ".*(Query|Queries).*"},
+ {"synchronization", ".*Sync.*"},
+ {"programs_and_shaders", ".*(Program|Shader|Compute|Uniform|MemoryBarrier|GetFragDataLocation|glValidateProgram|AttribLocation|GetActiveAttrib).*"},
+ {"framebuffer", ".*(Framebuffer|Renderbuffer).*|glReadBuffer|glReadPixels|gl(Color|Depth|Stencil)Mask|glClear.*|glInvalidate.*"},
+ {"textures_and_samplers", ".*(Tex|Image|Sampler|PixelStorei|GenerateMipmap).*"},
+ {"transform_feedback", "gl(.*TransformFeedback.*)"},
+ {"vertex_arrays", ".*Vertex(Attrib|Buffer|Binding|Array).*"},
+ {"draw_commands", "glDraw.*"},
+ {"rasterization", "gl(GetMultisamplefv|LineWidth|FrontFace|CullFace|PolygonOffset|DepthRangef|Viewport)"},
+ {"fragment_operations", "glScissor|glSample.*|glStencil.*|glDepthFunc|glBlend.*"},
+ {"state_queries", "gl(GetBoolean|GetInteger|GetFloat|IsEnabled|GetString|GetInternalformativ).*"},
+ {"other", "glEnable|glDisable|glIsEnabled|glHint|glGetError|glFlush|glFinish"},
+ {"buffer_objects", ".*Buffer.*"},
+ }
+ for _, row := range table {
+ if CompileRegexp("^(?:" + row.cmdName + ")").MatchString(cmdName) {
+ return row.category
+ }
+ }
+ panic(fmt.Errorf("Can not find category of %v", cmdName))
+}
+
+func isInAndroidExtensionPack(extensions []string) (result bool) {
+ aep := map[string]bool{
+ "GL_KHR_debug": true,
+ "GL_KHR_texture_compression_astc_ldr": true,
+ "GL_KHR_blend_equation_advanced": true,
+ "GL_OES_sample_shading": true,
+ "GL_OES_sample_variables": true,
+ "GL_OES_shader_image_atomic": true,
+ "GL_OES_shader_multisample_interpolation": true,
+ "GL_OES_texture_stencil8": true,
+ "GL_OES_texture_storage_multisample_2d_array": true,
+ "GL_EXT_copy_image": true,
+ "GL_EXT_draw_buffers_indexed": true,
+ "GL_EXT_geometry_shader": true,
+ "GL_EXT_gpu_shader5": true,
+ "GL_EXT_primitive_bounding_box": true,
+ "GL_EXT_shader_io_blocks": true,
+ "GL_EXT_tessellation_shader": true,
+ "GL_EXT_texture_border_clamp": true,
+ "GL_EXT_texture_buffer": true,
+ "GL_EXT_texture_cube_map_array": true,
+ "GL_EXT_texture_sRGB_decode": true,
+ }
+ for _, extension := range extensions {
+ if aep[extension] {
+ return true
+ }
+ }
+ return false
+}
+
+func wrap(text string, width int, linePrefix string) string {
+ if len(text) > width {
+ if idx := strings.LastIndex(text[0:width], " "); idx != -1 {
+ return text[0:idx] + "\n" + wrap(linePrefix+text[idx+1:], width, linePrefix)
+ }
+ }
+ return text
+}
+
+func printEnums(out io.Writer, r *Registry, api KhronosAPI, bitfields bool) {
+ if bitfields {
+ fmt.Fprintf(out, "bitfield GLbitfield {\n")
+ } else {
+ fmt.Fprintf(out, "enum GLenum {\n")
+ }
+ for _, enums := range r.Enums {
+ if (enums.Type == "bitmask") == bitfields && enums.Namespace == "GL" && len(enums.Enum) > 0 {
+ for _, enum := range enums.Enum {
+ // The following 64bit values are not proper GLenum values.
+ if enum.Name == "GL_TIMEOUT_IGNORED" || enum.Name == "GL_TIMEOUT_IGNORED_APPLE" {
+ continue
+ }
+ if enum.API == "" || enum.API == api {
+ var value uint32
+ if v, err := strconv.ParseUint(enum.Value, 0, 32); err == nil {
+ value = uint32(v)
+ } else if v, err := strconv.ParseInt(enum.Value, 0, 32); err == nil {
+ value = uint32(v)
+ } else {
+ panic(fmt.Errorf("Failed to parse enum value %v", enum.Value))
+ }
+ fmt.Fprintf(out, indent+"%-64s = 0x%08X,\n", enum.Name, value)
+ }
+ }
+ }
+ }
+ fmt.Fprintf(out, "}\n\n")
+}
+
+func renameType(cmdName string, paramIndex int, paramType, paramName string) string {
+ if paramType == "const void *" {
+ if oldType, ok := oldParamType(cmdName, paramIndex); ok {
+ if strings.Contains(oldType, "Pointer") {
+ return oldType
+ }
+ }
+ }
+ if paramType == "const GLchar *" {
+ if oldType, ok := oldParamType(cmdName, paramIndex); ok {
+ if oldType == "string" {
+ return oldType
+ }
+ }
+ }
+
+ // Find the root GL type, ignoring any prefix or sufix
+ loc := CompileRegexp(`\bGL\w+\b`).FindStringIndex(paramType)
+ if loc == nil {
+ return paramType
+ }
+ glType := paramType[loc[0]:loc[1]]
+
+ // Type substitution table
+ table := []struct {
+ oldType string
+ cmdName string // regexp
+ paramName string // regexp
+ newType string
+ }{
+ {"GLboolean", "glIs.*", "result", "bool"},
+ {"GLint", ".*Uniform.*", "location|result", "UniformLocation"},
+ {"GLuint", ".*", "program(|s)", "ProgramId"},
+ {"GLuint", ".*", "texture(|s)", "TextureId"},
+ {"GLuint", ".*", "uniformBlockIndex", "UniformBlockId"},
+ {"GLuint", ".*(Query|Queries).*", "id(|s)", "QueryId"},
+ {"GLuint", ".*Buffer.*", "buffer(|s)", "BufferId"},
+ {"GLuint", ".*Framebuffer.*", "framebuffer(|s)", "FramebufferId"},
+ {"GLuint", ".*Program.*", "pipeline(|s)", "PipelineId"},
+ {"GLuint", ".*Renderbuffer.*", "renderbuffer(|s)", "RenderbufferId"},
+ {"GLuint", ".*Sampler.*", "sampler(|s)", "SamplerId"},
+ {"GLuint", ".*Shader.*", "shader(|s)", "ShaderId"},
+ {"GLuint", ".*TransformFeedback.*", "id(|s)", "TransformFeedbackId"},
+ {"GLuint", ".*VertexArray.*", "array(|s)", "VertexArrayId"},
+ {"GLuint", "glCreateProgram", "result", "ProgramId"},
+ {"GLuint", "glCreateShader", "result", "ShaderId"},
+ {"GLuint", "glCreateShaderProgramv", "result", "ProgramId"},
+ {"GLuint", "glGetUniformBlockIndex", "result", "UniformBlockId"},
+ {"GLuint", ".*Attrib.*", "result|index", "AttributeLocation"},
+ }
+ for _, row := range table {
+ if row.oldType == glType &&
+ CompileRegexp("^(?:"+row.paramName+")$").MatchString(paramName) &&
+ CompileRegexp("^(?:"+row.cmdName+")$").MatchString(cmdName) {
+ // Replacte the GL type, but keep the original prefix and sufix
+ return paramType[:loc[0]] + row.newType + paramType[loc[1]:]
+ }
+ }
+ return paramType
+}
+
+func printChecks(out io.Writer, cmd *Command, versions []Version) {
+ if versions == nil {
+ return
+ }
+ fmt.Fprintf(out, indent+"minRequiredVersion(%v)\n", strings.Replace(string(versions[0]), ".", ", ", -1))
+ for paramIndex, param := range cmd.Param {
+ paramName := oldParamName(cmd.Name(), paramIndex, param.Name)
+ if param.Type() == "GLenum" {
+ fmt.Fprintf(out, indent+"switch (%s) {\n", paramName)
+ seen := map[string]Version{}
+ for _, version := range versions {
+ doc := DownloadDoc(version, cmd.Name())
+ var newCases []string
+ for _, value := range doc.Params[paramIndex].Accepts {
+ if _, ok := seen[value]; !ok {
+ newCases = append(newCases, value)
+ }
+ seen[value] = version
+ }
+ // Check that the set of accepted values is increasing from verions to version.
+ for k, v := range seen {
+ if v != version {
+ fmt.Fprintf(out, indent+indent+"// TODO: %s seems to be removed in %v\n", k, version)
+ }
+ }
+ if newCases != nil {
+ line := fmt.Sprintf(indent+indent+"case %s: {\n", strings.Join(newCases, ", "))
+ fmt.Fprint(out, wrap(line, 100, indent+indent+indent+indent))
+ if version != versions[0] {
+ fmt.Fprintf(out, indent+indent+indent+"minRequiredVersion(%v)\n", strings.Replace(string(version), ".", ", ", -1))
+ } else {
+ fmt.Fprintf(out, indent+indent+indent+"// version %v\n", version)
+ }
+ fmt.Fprint(out, indent+indent+"}\n")
+ }
+ }
+ fmt.Fprint(out, indent+indent+"default: {\n")
+ fmt.Fprintf(out, indent+indent+indent+"glErrorInvalidEnum(%s)\n", paramName)
+ fmt.Fprint(out, indent+indent+"}\n")
+ fmt.Fprintf(out, indent+"}\n")
+ }
+ if param.Type() == "GLbitfield" {
+ bits := []string{}
+ seen := map[string]Version{} // name -> min_version
+ for _, version := range versions {
+ doc := DownloadDoc(version, cmd.Name())
+ for _, value := range doc.Params[paramIndex].Accepts {
+ if _, ok := seen[value]; !ok {
+ bits = append(bits, value)
+ seen[value] = version
+ }
+ }
+ }
+ if len(bits) > 0 {
+ fmt.Fprintf(out, indent+"supportsBits(%s, %s)\n", paramName, strings.Join(bits, "|"))
+ for _, bit := range bits {
+ version := seen[bit]
+ fmt.Fprintf(out, indent+"if (%s in %s) {\n", bit, paramName)
+ if version != versions[0] {
+ fmt.Fprintf(out, indent+indent+"minRequiredVersion(%v)\n", strings.Replace(string(version), ".", ", ", -1))
+ }
+ fmt.Fprintf(out, indent+"}\n")
+ }
+ }
+ }
+ }
+}
+
+func printCommand(out io.Writer, reg *Registry, cmd *Command, api KhronosAPI) {
+ versions := reg.GetVersions(api, cmd.Name())
+ extensions := reg.GetExtensions(api, cmd.Name())
+ if versions != nil && extensions != nil {
+ panic(fmt.Errorf("%s is both core feature and extension", cmd.Name()))
+ }
+
+ // Print comments
+ for _, version := range versions {
+ url, _, _, _ := GetDocUrl(version, cmd.Name())
+ fmt.Fprintf(out, `@Doc("%s","OpenGL ES %v")`+"\n", url, version)
+ }
+ for _, extension := range extensions {
+ url := GetExtensionUrl(extension)
+ fmt.Fprintf(out, `@Doc("%s","%v")`+"\n", url, extension)
+ }
+
+ // Print function signature
+ sig := &bytes.Buffer{}
+ fmt.Fprintf(sig, "cmd %s %s(", renameType(cmd.Name(), -1, cmd.Proto.Type(), "result"), cmd.Name())
+ leadWidth := sig.Len()
+ maxTypeWidth := 0
+ paramTypes := []string{}
+ for paramIndex, param := range cmd.Param {
+ paramType := renameType(cmd.Name(), paramIndex, param.Type(), param.Name)
+ paramTypes = append(paramTypes, paramType)
+ if typeWidth := len(paramType); typeWidth > maxTypeWidth {
+ maxTypeWidth = typeWidth
+ }
+ }
+ for i, param := range cmd.Param {
+ if i > 0 {
+ fmt.Fprintf(sig, ",\n%s", strings.Repeat(" ", leadWidth))
+ }
+ format := fmt.Sprintf("%%-%vs %%s", maxTypeWidth)
+ fmt.Fprintf(sig, format, paramTypes[i], oldParamName(cmd.Name(), i, param.Name))
+ if oldType, ok := oldParamType(cmd.Name(), i); ok {
+ newType := strings.Replace(paramTypes[i], " *", "*", -1)
+ if newType != oldType {
+ // fmt.Printf("Changed type of %s:%s from %s to %s\n", cmd.Name(), param.Name, oldType, newType)
+ }
+ }
+ }
+ fmt.Fprintf(sig, ")")
+ longSig := string(sig.Bytes())
+ shortSig := CompileRegexp(`\s+`).ReplaceAllString(longSig, " ")
+ if len(shortSig)+2 <= 100 {
+ fmt.Fprintf(out, "%s ", shortSig)
+ } else {
+ fmt.Fprintf(out, "%s ", longSig)
+ }
+
+ // Print function body
+ fmt.Fprintf(out, "{\n")
+ for _, extension := range extensions {
+ fmt.Fprintf(out, indent+"requiresExtension(%s)\n", extension)
+ }
+ if len(extensions) > 1 {
+ fmt.Fprintf(out, indent+"// TODO: Multiple extensions\n")
+ }
+ printChecks(out, cmd, versions)
+ foundOldCode := false
+ if oldApi != nil {
+ // Try to add the old code
+ for _, apiCmd := range oldApi.Commands {
+ if apiCmd.Name.Value == cmd.Name() {
+ childs := apiCmd.Block.CST.Children
+ if len(childs) > 0 {
+ start := apiCmd.Block.CST.Children[0].Token()
+ end := apiCmd.Block.CST.Children[len(childs)-1].Token()
+ fmt.Fprintf(out, "%s", string(start.Runes[start.End:end.Start]))
+ foundOldCode = true
+ }
+ }
+ }
+ }
+ if !foundOldCode {
+ fmt.Fprintf(out, indent+"// TODO\n")
+ if cmd.Proto.Type() != "void" {
+ fmt.Fprint(out, indent+"return ?\n")
+ }
+ }
+ fmt.Fprintf(out, "}\n")
+ fmt.Fprintf(out, "\n")
+}
+
+// Rename parameters so that they match our old api file
+func oldParamName(cmdName string, paramIndex int, paramName string) string {
+ if oldApi != nil {
+ for _, cmd := range oldApi.Commands {
+ if cmd.Name.Value == cmdName {
+ return cmd.Parameters[paramIndex].Name.Value
+ }
+ }
+ }
+ return paramName
+}
+
+func oldParamType(cmdName string, paramIndex int) (string, bool) {
+ if oldApi != nil {
+ for _, cmd := range oldApi.Commands {
+ if cmd.Name.Value == cmdName {
+ token := cmd.Parameters[paramIndex].Type.Node().Token()
+ return string(token.Runes[token.Start:token.End]), true
+ }
+ }
+ }
+ return "", false
+}
diff --git a/tools/generate_gles_api/generate_csv.go b/tools/generate_gles_api/generate_csv.go
new file mode 100644
index 000000000..263a5589f
--- /dev/null
+++ b/tools/generate_gles_api/generate_csv.go
@@ -0,0 +1,64 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "encoding/csv"
+ "fmt"
+ "os"
+ "strings"
+)
+
+// Print most of our data to CSV file
+func GenerateCsv(reg *Registry, api KhronosAPI) {
+ out, err := os.Create(*csvDir + string(os.PathSeparator) + "gles.csv")
+ if err != nil {
+ panic(err)
+ }
+ writer := csv.NewWriter(out)
+ writer.Write([]string{"command", "version", "paramIndex", "paramType", "paramName", "accepts"})
+ for _, cmd := range reg.Command {
+ cmdName := cmd.Proto.Name
+ for _, version := range reg.GetVersions(api, cmdName) {
+ doc := DownloadDoc(version, cmdName)
+ if len(doc.Params)-1 /* result */ != len(cmd.Param) {
+ panic(fmt.Errorf("%s: param count mismatch: %v vs %v", cmdName, len(doc.Params), len(cmd.Param)))
+ }
+ printCsvCommand(writer, &cmd, string(version), doc)
+ }
+ for _, extension := range reg.GetExtensions(api, cmdName) {
+ printCsvCommand(writer, &cmd, extension, &CommandDoc{})
+ }
+ }
+ writer.Flush()
+ if err := out.Close(); err != nil {
+ panic(err)
+ }
+}
+
+func printCsvCommand(writer *csv.Writer, cmd *Command, definedBy string, doc *CommandDoc) {
+ for i := -1; i < len(cmd.Param); i++ {
+ param := cmd.ParamsAndResult()[i]
+ accepts := ""
+ if doc.Params != nil {
+ paramDoc := doc.Params[i]
+ if paramDoc.Name != param.Name {
+ panic(fmt.Errorf("%s: param name mismatch: %s vs %s\n", cmd.Proto.Name, param.Name, paramDoc.Name))
+ }
+ accepts = strings.Join(paramDoc.Accepts, "|")
+ }
+ writer.Write([]string{cmd.Proto.Name, definedBy, fmt.Sprintf("%v", i), param.Type(), param.Name, accepts})
+ }
+}
diff --git a/tools/generate_gles_api/main.go b/tools/generate_gles_api/main.go
new file mode 100644
index 000000000..4771814cc
--- /dev/null
+++ b/tools/generate_gles_api/main.go
@@ -0,0 +1,60 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "android.googlesource.com/platform/tools/gpu/api/ast"
+ "android.googlesource.com/platform/tools/gpu/api/parser"
+ "flag"
+ "fmt"
+ "io/ioutil"
+)
+
+var (
+ apiDir = flag.String("api", "", "Directory for the api output files")
+ csvDir = flag.String("csv", "", "Directory for the csv output file")
+ cacheDir = flag.String("cache", "", "Directory for caching downloaded files")
+ oldApiPath = flag.String("oldapi", "", "Filename of the old api file to use for reference")
+ oldApi *ast.API
+)
+
+func main() {
+ flag.Parse()
+ if *apiDir == "" && *csvDir == "" {
+ flag.PrintDefaults()
+ return
+ }
+ if *oldApiPath != "" {
+ f, err := ioutil.ReadFile(*oldApiPath)
+ if err != nil {
+ panic(err)
+ }
+ api, errs := parser.Parse(string(f))
+ if len(errs) > 0 {
+ for i, e := range errs {
+ fmt.Printf("%d: %v", i, e)
+ }
+ return
+ }
+ oldApi = api
+ }
+ reg := DownloadReg()
+ if *apiDir != "" {
+ GenerateApi(reg, GLES2API)
+ }
+ if *csvDir != "" {
+ GenerateCsv(reg, GLES2API)
+ }
+}
diff --git a/tools/generate_gles_api/util.go b/tools/generate_gles_api/util.go
new file mode 100644
index 000000000..6fb6e20ec
--- /dev/null
+++ b/tools/generate_gles_api/util.go
@@ -0,0 +1,30 @@
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package main
+
+import (
+ "regexp"
+)
+
+var regexpCache = make(map[string]*regexp.Regexp)
+
+func CompileRegexp(exp string) *regexp.Regexp {
+ re, ok := regexpCache[exp]
+ if !ok {
+ re = regexp.MustCompile(exp)
+ regexpCache[exp] = re
+ }
+ return re
+}