diff options
author | Roland Scheidegger <[email protected]> | 2010-05-04 15:58:29 +0200 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2010-05-04 15:58:29 +0200 |
commit | 0ae2f59c0287f4baec6c7de5f2f0fdf736fba26d (patch) | |
tree | ee14bf3e8bba80649541c4e13fc07c60baf6c248 | |
parent | 7662e3519bef3802024da3050b886068281e02b1 (diff) | |
parent | 1c920c61764b17fd9fb4a89d2db7355fbe1d7565 (diff) |
Merge commit 'origin/master' into gallium-msaa
236 files changed, 7291 insertions, 5946 deletions
diff --git a/configs/autoconf.in b/configs/autoconf.in index 3ef385a8a66..119aadb6d4f 100644 --- a/configs/autoconf.in +++ b/configs/autoconf.in @@ -14,6 +14,8 @@ ARCH_FLAGS = @ARCH_FLAGS@ ASM_FLAGS = @ASM_FLAGS@ PIC_FLAGS = @PIC_FLAGS@ DEFINES = @DEFINES@ +API_DEFINES = @API_DEFINES@ +APIS = @APIS@ CFLAGS = @CPPFLAGS@ @CFLAGS@ \ $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES) CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ \ @@ -31,9 +33,10 @@ LLVM_LDFLAGS = @LLVM_LDFLAGS@ LLVM_LIBS = @LLVM_LIBS@ -# Assembler +# Source selection MESA_ASM_SOURCES = @MESA_ASM_SOURCES@ GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@ +ES_SOURCES = @ES1_SOURCES@ @ES2_SOURCES@ # Misc tools and flags MAKE = @MAKE@ @@ -53,6 +56,8 @@ GLU_LIB = GLU GLUT_LIB = glut GLW_LIB = GLw OSMESA_LIB = @OSMESA_LIB@ +GLESv1_CM_LIB = GLESv1_CM +GLESv2_LIB = GLESv2 # Library names (actual file names) GL_LIB_NAME = @GL_LIB_NAME@ @@ -61,6 +66,8 @@ GLUT_LIB_NAME = @GLUT_LIB_NAME@ GLW_LIB_NAME = @GLW_LIB_NAME@ OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ EGL_LIB_NAME = @EGL_LIB_NAME@ +GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ +GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ # Globs used to install the lib and all symlinks GL_LIB_GLOB = @GL_LIB_GLOB@ @@ -69,6 +76,8 @@ GLUT_LIB_GLOB = @GLUT_LIB_GLOB@ GLW_LIB_GLOB = @GLW_LIB_GLOB@ OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@ EGL_LIB_GLOB = @EGL_LIB_GLOB@ +GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ +GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ # Directories to build LIB_DIR = @LIB_DIR@ @@ -110,6 +119,8 @@ GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \ $(EXTRA_LIB_PATH) @GLW_LIB_DEPS@ APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@ +GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_LIB_DEPS@ +GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@ # DRI dependencies DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@ @@ -158,6 +169,8 @@ GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@ GLW_PC_CFLAGS = @GLW_PC_CFLAGS@ OSMESA_PC_REQ = @OSMESA_PC_REQ@ OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ +GLESv1_CM_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ +GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ EGL_DRI2_CFLAGS = @EGL_DRI2_CFLAGS@ EGL_DRI2_LIBS = @EGL_DRI2_LIBS@ diff --git a/configure.ac b/configure.ac index 01ed1b3cd31..354c220b5c9 100644 --- a/configure.ac +++ b/configure.ac @@ -279,6 +279,8 @@ GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION} GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION} OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION} EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION} +GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION} +GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION} GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*' GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*' @@ -286,6 +288,8 @@ GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*' GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*' OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*' EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*' +GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*' +GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*' AC_SUBST([GL_LIB_NAME]) AC_SUBST([GLU_LIB_NAME]) @@ -293,6 +297,8 @@ AC_SUBST([GLUT_LIB_NAME]) AC_SUBST([GLW_LIB_NAME]) AC_SUBST([OSMESA_LIB_NAME]) AC_SUBST([EGL_LIB_NAME]) +AC_SUBST([GLESv1_CM_LIB_NAME]) +AC_SUBST([GLESv2_LIB_NAME]) AC_SUBST([GL_LIB_GLOB]) AC_SUBST([GLU_LIB_GLOB]) @@ -300,6 +306,8 @@ AC_SUBST([GLUT_LIB_GLOB]) AC_SUBST([GLW_LIB_GLOB]) AC_SUBST([OSMESA_LIB_GLOB]) AC_SUBST([EGL_LIB_GLOB]) +AC_SUBST([GLESv1_CM_LIB_GLOB]) +AC_SUBST([GLESv2_LIB_GLOB]) dnl dnl Arch/platform-specific settings @@ -654,6 +662,10 @@ dri) # need DRM libs, -lpthread, etc. GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" + GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" + GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" + GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS" + GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS" ;; osmesa) # No libGL for osmesa @@ -665,6 +677,8 @@ AC_SUBST([GL_PC_REQ_PRIV]) AC_SUBST([GL_PC_LIB_PRIV]) AC_SUBST([GL_PC_CFLAGS]) AC_SUBST([DRI_PC_REQ_PRIV]) +AC_SUBST([GLESv1_LIB_DEPS]) +AC_SUBST([GLESv2_LIB_DEPS]) dnl dnl More X11 setup @@ -712,6 +726,51 @@ if test "x$with_dri_drivers" = x; then with_dri_drivers=no fi +dnl Determine which APIs to support +AC_ARG_ENABLE([opengl], + [AS_HELP_STRING([--disable-opengl], + [disable support for standard OpenGL API @<:@default=no@:>@])], + [enable_opengl="$enableval"], + [enable_opengl=yes]) +AC_ARG_ENABLE([gles1], + [AS_HELP_STRING([--enable-gles1], + [enable support for OpenGL ES 1.x API @<:@default=no@:>@])], + [enable_gles1="$enableval"], + [enable_gles1=no]) +AC_ARG_ENABLE([gles2], + [AS_HELP_STRING([--enable-gles2], + [enable support for OpenGL ES 2.x API @<:@default=no@:>@])], + [enable_gles2="$enableval"], + [enable_gles2=no]) + +API_DEFINES="" +APIS="" +ES1_SOURCES="" +ES2_SOURCES="" +if test "x$enable_opengl" = xno; then + API_DEFINES="$API_DEFINES -DFEATURE_GL=0" +else + API_DEFINES="$API_DEFINES -DFEATURE_GL=1" + APIS="$APIS gl" +fi +if test "x$enable_gles1" = xyes; then + API_DEFINES="$API_DEFINES -DFEATURE_ES1=1" + APIS="$APIS es1" + ES1_SOURCES='$(ES1_SOURCES)' +fi +if test "x$enable_gles2" = xyes; then + API_DEFINES="$API_DEFINES -DFEATURE_ES2=1" + APIS="$APIS es2" + ES2_SOURCES='$(ES2_SOURCES)' +fi +if test "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then + SRC_DIRS="$SRC_DIRS gles" +fi +AC_SUBST([API_DEFINES]) +AC_SUBST([APIS]) +AC_SUBST([ES1_SOURCES]) +AC_SUBST([ES2_SOURCES]) + dnl If $with_dri_drivers is yes, directories will be added through dnl platform checks DRI_DIRS="" diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index a952a1db9b3..172669e3955 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -736,7 +736,11 @@ struct __DRIdri2LoaderExtensionRec { * constructors for DRI2. */ #define __DRI_DRI2 "DRI_DRI2" -#define __DRI_DRI2_VERSION 1 +#define __DRI_DRI2_VERSION 2 + +#define __DRI_API_OPENGL 0 +#define __DRI_API_GLES 1 +#define __DRI_API_GLES2 2 struct __DRIdri2ExtensionRec { __DRIextension base; @@ -755,6 +759,14 @@ struct __DRIdri2ExtensionRec { __DRIcontext *shared, void *loaderPrivate); + /* Since version 2 */ + unsigned int (*getAPIMask)(__DRIscreen *screen); + + __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen, + int api, + const __DRIconfig *config, + __DRIcontext *shared, + void *data); }; diff --git a/progs/demos/gloss.c b/progs/demos/gloss.c index 450861e5778..ddfd548b8b9 100644 --- a/progs/demos/gloss.c +++ b/progs/demos/gloss.c @@ -282,6 +282,13 @@ static void Init( int argc, char *argv[] ) } } + if (convolve && !glutExtensionSupported("GL_ARB_imaging")) { + fprintf(stderr, + "GL_ARB_imaging is not supported, disabling convolution.\n"); + exit(1); + } + + if (fullscreen) glutFullScreen(); diff --git a/progs/demos/vao_demo.c b/progs/demos/vao_demo.c index 5ce07ecc63b..b81004b067d 100644 --- a/progs/demos/vao_demo.c +++ b/progs/demos/vao_demo.c @@ -272,7 +272,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/egl/opengles2/Makefile b/progs/egl/opengles2/Makefile index 1ee2af24127..89feb34acc1 100644 --- a/progs/egl/opengles2/Makefile +++ b/progs/egl/opengles2/Makefile @@ -6,7 +6,9 @@ include $(TOP)/configs/current INCLUDE_DIRS = \ -I$(TOP)/include \ - $(X11_CFLAGS) + -I$(TOP)/progs/egl/eglut \ + $(X11_CFLAGS) \ + HEADERS = $(TOP)/include/GLES/egl.h @@ -18,11 +20,12 @@ ES2_LIB_DEPS = \ ES2_LIBS = \ -L$(TOP)/$(LIB_DIR) -lEGL \ - -L$(TOP)/$(LIB_DIR) -lGLESv2 $(LIBDRM_LIB) $(X11_LIBS) + -L$(TOP)/$(LIB_DIR) -lGLESv2 $(LIBDRM_LIB) $(X11_LIBS) \ PROGRAMS = \ es2_info \ - tri + tri \ + es2gears .c.o: @@ -43,7 +46,8 @@ es2_info: es2_info.o $(ES2_LIB_DEPS) tri: tri.o $(ES2_LIB_DEPS) $(CC) $(CFLAGS) tri.o $(ES2_LIBS) -o $@ - +es2gears: es2gears.o $(ES2_LIB_DEPS) + $(CC) $(CFLAGS) es2gears.o ../eglut/libeglut-x11.a $(ES2_LIBS) -lm -o $@ clean: rm -f *.o *~ diff --git a/progs/egl/opengles2/es2gears.c b/progs/egl/opengles2/es2gears.c new file mode 100644 index 00000000000..8e7a3e52490 --- /dev/null +++ b/progs/egl/opengles2/es2gears.c @@ -0,0 +1,421 @@ +/* + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/* + * Ported to GLES2. + * Kristian Høgsberg <[email protected]> + * May 3, 2010 + */ + +/* + * Command line options: + * -info print GL implementation information + * + */ + + +#define GL_GLEXT_PROTOTYPES +#define EGL_EGLEXT_PROTOTYPES + +#include <math.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/time.h> +#include <unistd.h> +#include <GLES2/gl2.h> +#include <EGL/egl.h> +#include <EGL/eglext.h> +#include "eglut.h" + +struct gear { + GLfloat *vertices; + GLuint vbo; + int count; +}; + +static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0; +static struct gear *gear1, *gear2, *gear3; +static GLfloat angle = 0.0; +static GLuint proj_location, light_location, color_location; +static GLfloat proj[16]; + +static GLfloat * +vert(GLfloat *p, GLfloat x, GLfloat y, GLfloat z, GLfloat *n) +{ + p[0] = x; + p[1] = y; + p[2] = z; + p[3] = n[0]; + p[4] = n[1]; + p[5] = n[2]; + + return p + 6; +} + +/* Draw a gear wheel. You'll probably want to call this function when + * building a display list since we do a lot of trig here. + * + * Input: inner_radius - radius of hole at center + * outer_radius - radius at center of teeth + * width - width of gear + * teeth - number of teeth + * tooth_depth - depth of tooth + */ +static struct gear * +gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width, + GLint teeth, GLfloat tooth_depth) +{ + GLint i; + GLfloat r0, r1, r2; + GLfloat da; + GLfloat *p, *v; + struct gear *gear; + double s[5], c[5]; + GLfloat verts[3 * 14], normal[3]; + const int tris_per_tooth = 20; + + gear = malloc(sizeof *gear); + if (gear == NULL) + return NULL; + + r0 = inner_radius; + r1 = outer_radius - tooth_depth / 2.0; + r2 = outer_radius + tooth_depth / 2.0; + + da = 2.0 * M_PI / teeth / 4.0; + + gear->vertices = calloc(teeth * tris_per_tooth * 3 * 6, + sizeof *gear->vertices); + s[4] = 0; + c[4] = 1; + v = gear->vertices; + for (i = 0; i < teeth; i++) { + s[0] = s[4]; + c[0] = c[4]; + sincos(i * 2.0 * M_PI / teeth + da, &s[1], &c[1]); + sincos(i * 2.0 * M_PI / teeth + da * 2, &s[2], &c[2]); + sincos(i * 2.0 * M_PI / teeth + da * 3, &s[3], &c[3]); + sincos(i * 2.0 * M_PI / teeth + da * 4, &s[4], &c[4]); + + normal[0] = 0.0; + normal[1] = 0.0; + normal[2] = 1.0; + + v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal); + + v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal); + v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal); + v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal); + v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal); + v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal); + v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal); + v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal); + + v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal); + v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal); + v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal); + v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal); + + normal[0] = 0.0; + normal[1] = 0.0; + normal[2] = -1.0; + + v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal); + + v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal); + v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal); + v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal); + v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal); + v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal); + v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal); + v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal); + + v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal); + + v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal); + v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal); + v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal); + v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal); + v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal); + v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal); + v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal); + v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal); + v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal); + v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal); + + v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal); + } + + gear->count = (v - gear->vertices) / 6; + + glGenBuffers(1, &gear->vbo); + glBindBuffer(GL_ARRAY_BUFFER, gear->vbo); + glBufferData(GL_ARRAY_BUFFER, gear->count * 6 * 4, + gear->vertices, GL_STATIC_DRAW); + + return gear; +} + +static void +multiply(GLfloat *m, const GLfloat *n) +{ + GLfloat tmp[16]; + const GLfloat *row, *column; + div_t d; + int i, j; + + for (i = 0; i < 16; i++) { + tmp[i] = 0; + d = div(i, 4); + row = n + d.quot * 4; + column = m + d.rem; + for (j = 0; j < 4; j++) + tmp[i] += row[j] * column[j * 4]; + } + memcpy(m, &tmp, sizeof tmp); +} + +static void +rotate(GLfloat *m, GLfloat angle, GLfloat x, GLfloat y, GLfloat z) +{ + double s, c; + + sincos(angle, &s, &c); + GLfloat r[16] = { + x * x * (1 - c) + c, y * x * (1 - c) + z * s, x * z * (1 - c) - y * s, 0, + x * y * (1 - c) - z * s, y * y * (1 - c) + c, y * z * (1 - c) + x * s, 0, + x * z * (1 - c) + y * s, y * z * (1 - c) - x * s, z * z * (1 - c) + c, 0, + 0, 0, 0, 1 + }; + + multiply(m, r); +} + +static void +translate(GLfloat *m, GLfloat x, GLfloat y, GLfloat z) +{ + GLfloat t[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1 }; + + multiply(m, t); +} + +static const GLfloat light[3] = { 1.0, 1.0, -1.0 }; + +static void +draw_gear(struct gear *gear, GLfloat *m, + GLfloat x, GLfloat y, GLfloat angle, const GLfloat *color) +{ + GLfloat tmp[16]; + + memcpy(tmp, m, sizeof tmp); + translate(tmp, x, y, 0); + rotate(tmp, 2 * M_PI * angle / 360.0, 0, 0, 1); + glUniformMatrix4fv(proj_location, 1, GL_FALSE, tmp); + glUniform3fv(light_location, 1, light); + glUniform4fv(color_location, 1, color); + + glBindBuffer(GL_ARRAY_BUFFER, gear->vbo); + + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, + 6 * sizeof(GLfloat), NULL); + glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, + 6 * sizeof(GLfloat), (GLfloat *) 0 + 3); + glEnableVertexAttribArray(0); + glEnableVertexAttribArray(1); + glDrawArrays(GL_TRIANGLE_STRIP, 0, gear->count); +} + +static void +gears_draw(void) +{ + const static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 }; + const static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 }; + const static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 }; + GLfloat m[16]; + + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + memcpy(m, proj, sizeof m); + rotate(m, 2 * M_PI * view_rotx / 360.0, 1, 0, 0); + rotate(m, 2 * M_PI * view_roty / 360.0, 0, 1, 0); + rotate(m, 2 * M_PI * view_rotz / 360.0, 0, 0, 1); + + draw_gear(gear1, m, -3.0, -2.0, angle, red); + draw_gear(gear2, m, 3.1, -2.0, -2 * angle - 9.0, green); + draw_gear(gear3, m, -3.1, 4.2, -2 * angle - 25.0, blue); +} + +/* new window size or exposure */ +static void +gears_reshape(int width, int height) +{ + GLfloat ar, m[16] = { + 1.0, 0.0, 0.0, 0.0, + 0.0, 1.0, 0.0, 0.0, + 0.0, 0.0, 0.1, 0.0, + 0.0, 0.0, 0.0, 1.0, + }; + + if (width < height) + ar = width; + else + ar = height; + + m[0] = 0.1 * ar / width; + m[5] = 0.1 * ar / height; + memcpy(proj, m, sizeof proj); + glViewport(0, 0, (GLint) width, (GLint) height); +} + +static void +gears_special(int special) +{ + switch (special) { + case EGLUT_KEY_LEFT: + view_roty += 5.0; + break; + case EGLUT_KEY_RIGHT: + view_roty -= 5.0; + break; + case EGLUT_KEY_UP: + view_rotx += 5.0; + break; + case EGLUT_KEY_DOWN: + view_rotx -= 5.0; + break; + } +} + +static void +gears_idle(void) +{ + static double tRot0 = -1.0; + double dt, t = eglutGet(EGLUT_ELAPSED_TIME) / 1000.0; + + if (tRot0 < 0.0) + tRot0 = t; + dt = t - tRot0; + tRot0 = t; + + /* advance rotation for next frame */ + angle += 70.0 * dt; /* 70 degrees per second */ + if (angle > 3600.0) + angle -= 3600.0; + + eglutPostRedisplay(); +} + +static const char vertex_shader[] = + "uniform mat4 proj;\n" + "attribute vec4 position;\n" + "attribute vec4 normal;\n" + "varying vec3 rotated_normal;\n" + "varying vec3 rotated_position;\n" + "vec4 tmp;\n" + "void main()\n" + "{\n" + " gl_Position = proj * position;\n" + " rotated_position = gl_Position.xyz;\n" + " tmp = proj * normal;\n" + " rotated_normal = tmp.xyz;\n" + "}\n"; + + static const char fragment_shader[] = + //"precision mediump float;\n" + "uniform vec4 color;\n" + "uniform vec3 light;\n" + "varying vec3 rotated_normal;\n" + "varying vec3 rotated_position;\n" + "vec3 light_direction;\n" + "vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n" + "void main()\n" + "{\n" + " light_direction = normalize(light - rotated_position);\n" + " gl_FragColor = color + white * dot(light_direction, rotated_normal);\n" + "}\n"; + +static void +gears_init(void) +{ + GLuint v, f, program; + const char *p; + char msg[512]; + + glEnable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); + + p = vertex_shader; + v = glCreateShader(GL_VERTEX_SHADER); + glShaderSource(v, 1, &p, NULL); + glCompileShader(v); + glGetShaderInfoLog(v, sizeof msg, NULL, msg); + printf("vertex shader info: %s\n", msg); + + p = fragment_shader; + f = glCreateShader(GL_FRAGMENT_SHADER); + glShaderSource(f, 1, &p, NULL); + glCompileShader(f); + glGetShaderInfoLog(f, sizeof msg, NULL, msg); + printf("fragment shader info: %s\n", msg); + + program = glCreateProgram(); + glAttachShader(program, v); + glAttachShader(program, f); + glBindAttribLocation(program, 0, "position"); + glBindAttribLocation(program, 1, "normal"); + + glLinkProgram(program); + glGetProgramInfoLog(program, sizeof msg, NULL, msg); + printf("info: %s\n", msg); + + glUseProgram(program); + proj_location = glGetUniformLocation(program, "proj"); + light_location = glGetUniformLocation(program, "light"); + color_location = glGetUniformLocation(program, "color"); + + /* make the gears */ + gear1 = gear(1.0, 4.0, 1.0, 20, 0.7); + gear2 = gear(0.5, 2.0, 2.0, 10, 0.7); + gear3 = gear(1.3, 2.0, 0.5, 10, 0.7); +} + +int +main(int argc, char *argv[]) +{ + eglutInitWindowSize(300, 300); + eglutInitAPIMask(EGLUT_OPENGL_ES2_BIT); + eglutInit(argc, argv); + + eglutCreateWindow("es2gears"); + + eglutIdleFunc(gears_idle); + eglutReshapeFunc(gears_reshape); + eglutDisplayFunc(gears_draw); + eglutSpecialFunc(gears_special); + + gears_init(); + + eglutMainLoop(); + + return 0; +} diff --git a/progs/tests/blendminmax.c b/progs/tests/blendminmax.c index 7297f41b787..b33839cc875 100644 --- a/progs/tests/blendminmax.c +++ b/progs/tests/blendminmax.c @@ -178,7 +178,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/blendsquare.c b/progs/tests/blendsquare.c index 3ee3ae2230c..07806fc758d 100644 --- a/progs/tests/blendsquare.c +++ b/progs/tests/blendsquare.c @@ -142,7 +142,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); const double version = strtod( ver_string, NULL ); diff --git a/progs/tests/bug_3101.c b/progs/tests/bug_3101.c index 06a97761557..796377186bd 100644 --- a/progs/tests/bug_3101.c +++ b/progs/tests/bug_3101.c @@ -100,7 +100,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/bug_3195.c b/progs/tests/bug_3195.c index 3574c1f7176..10481c22322 100644 --- a/progs/tests/bug_3195.c +++ b/progs/tests/bug_3195.c @@ -176,7 +176,7 @@ static void SpecialKey( int key, int x, int y ) static void Init( void ) { GLfloat maxBias; - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c index 2988e209200..ac9a8eae3b7 100644 --- a/progs/tests/crossbar.c +++ b/progs/tests/crossbar.c @@ -143,7 +143,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); float ver = strtod( ver_string, NULL ); GLint tex_units; diff --git a/progs/tests/interleave.c b/progs/tests/interleave.c index acf67d02c12..c60ddde1f11 100644 --- a/progs/tests/interleave.c +++ b/progs/tests/interleave.c @@ -352,7 +352,7 @@ static void ModeMenu( int entry ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); const GLubyte tex[16] = { 0xff, 0x00, 0xff, 0x00, diff --git a/progs/tests/invert.c b/progs/tests/invert.c index 45001b44d07..be554726563 100644 --- a/progs/tests/invert.c +++ b/progs/tests/invert.c @@ -126,7 +126,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); const float ver = strtod( ver_string, NULL ); diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c index 2de7e2994af..e38c68904d4 100644 --- a/progs/tests/prog_parameter.c +++ b/progs/tests/prog_parameter.c @@ -186,7 +186,7 @@ static int set_parameter_batch( GLsizei count, GLfloat * param, static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); int pass = 1; GLfloat * params; diff --git a/progs/tests/stencil_twoside.c b/progs/tests/stencil_twoside.c index 1010139a20e..dec620023fc 100644 --- a/progs/tests/stencil_twoside.c +++ b/progs/tests/stencil_twoside.c @@ -311,7 +311,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/stencil_wrap.c b/progs/tests/stencil_wrap.c index 28307fef4f0..2bafd3204f0 100644 --- a/progs/tests/stencil_wrap.c +++ b/progs/tests/stencil_wrap.c @@ -225,7 +225,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); diff --git a/progs/tests/vao-01.c b/progs/tests/vao-01.c index ee528d22439..bacae70bb53 100644 --- a/progs/tests/vao-01.c +++ b/progs/tests/vao-01.c @@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); GLuint obj; int pass = 1; diff --git a/progs/tests/vao-02.c b/progs/tests/vao-02.c index c23b4ab05a6..d085541876d 100644 --- a/progs/tests/vao-02.c +++ b/progs/tests/vao-02.c @@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y ) static void Init( void ) { - const char * const ver_string = (const char * const) + const char * const ver_string = (const char *) glGetString( GL_VERSION ); GLuint obj; int pass = 1; diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 4be39627302..69f3c28c9e4 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -254,9 +254,8 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id, _eglSetConfigKey(&base, EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba); - /* EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT */ - _eglSetConfigKey(&base, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT); - _eglSetConfigKey(&base, EGL_CONFORMANT, EGL_OPENGL_BIT); + _eglSetConfigKey(&base, EGL_RENDERABLE_TYPE, disp->ClientAPIsMask); + _eglSetConfigKey(&base, EGL_CONFORMANT, disp->ClientAPIsMask); if (!_eglValidateConfig(&base, EGL_FALSE)) { _eglLog(_EGL_DEBUG, "DRI2: failed to validate config %d", id); @@ -643,6 +642,7 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp, const __DRIextension **extensions; struct dri2_egl_display *dri2_dpy; char path[PATH_MAX], *search_paths, *p, *next, *end; + unsigned int api_mask; dri2_dpy = malloc(sizeof *dri2_dpy); if (!dri2_dpy) @@ -685,6 +685,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp, snprintf(path, sizeof path, dri_driver_format, (int) (next - p), p, dri2_dpy->driver_name); dri2_dpy->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL); + if (dri2_dpy->driver == NULL) + _eglLog(_EGL_DEBUG, "failed to open %s: %s\n", path, dlerror()); } if (dri2_dpy->driver == NULL) { @@ -754,12 +756,24 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp, if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions)) goto cleanup_dri_screen; + if (dri2_dpy->dri2->base.version >= 2) + api_mask = dri2_dpy->dri2->getAPIMask(dri2_dpy->dri_screen); + else + api_mask = __DRI_API_OPENGL; + + disp->ClientAPIsMask = 0; + if (api_mask & (1 <<__DRI_API_OPENGL)) + disp->ClientAPIsMask |= EGL_OPENGL_BIT; + if (api_mask & (1 <<__DRI_API_GLES)) + disp->ClientAPIsMask |= EGL_OPENGL_ES_BIT; + if (api_mask & (1 << __DRI_API_GLES2)) + disp->ClientAPIsMask |= EGL_OPENGL_ES2_BIT; + if (dri2_dpy->conn) { if (!dri2_add_configs_for_visuals(dri2_dpy, disp)) goto cleanup_configs; } - disp->ClientAPIsMask = EGL_OPENGL_BIT; disp->Extensions.KHR_image_base = EGL_TRUE; disp->Extensions.KHR_image_pixmap = EGL_TRUE; disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE; @@ -822,6 +836,7 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); struct dri2_egl_context *dri2_ctx_shared = dri2_egl_context(share_list); struct dri2_egl_config *dri2_config = dri2_egl_config(conf); + int api; dri2_ctx = malloc(sizeof *dri2_ctx); if (!dri2_ctx) { @@ -832,12 +847,46 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf, if (!_eglInitContext(&dri2_ctx->base, disp, conf, attrib_list)) goto cleanup; - dri2_ctx->dri_context = - dri2_dpy->dri2->createNewContext(dri2_dpy->dri_screen, - dri2_config->dri_config, - dri2_ctx_shared ? - dri2_ctx_shared->dri_context : NULL, - dri2_ctx); + switch (dri2_ctx->base.ClientAPI) { + case EGL_OPENGL_ES_API: + switch (dri2_ctx->base.ClientVersion) { + case 1: + api = __DRI_API_GLES; + break; + case 2: + api = __DRI_API_GLES2; + break; + default: + _eglError(EGL_BAD_PARAMETER, "eglCreateContext"); + return NULL; + } + break; + case EGL_OPENGL_API: + api = __DRI_API_OPENGL; + break; + default: + _eglError(EGL_BAD_PARAMETER, "eglCreateContext"); + return NULL; + } + + if (dri2_dpy->dri2->base.version >= 2) { + dri2_ctx->dri_context = + dri2_dpy->dri2->createNewContextForAPI(dri2_dpy->dri_screen, + api, + dri2_config->dri_config, + dri2_ctx_shared ? + dri2_ctx_shared->dri_context : NULL, + dri2_ctx); + } else if (api == __DRI_API_OPENGL) { + dri2_ctx->dri_context = + dri2_dpy->dri2->createNewContext(dri2_dpy->dri_screen, + dri2_config->dri_config, + dri2_ctx_shared ? + dri2_ctx_shared->dri_context : NULL, + dri2_ctx); + } else { + /* fail */ + } if (!dri2_ctx->dri_context) goto cleanup; diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index 2daed382cf3..e0d9b313544 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -113,6 +113,7 @@ C_SOURCES = \ util/u_format_tests.c \ util/u_format_yuv.c \ util/u_format_zs.c \ + util/u_framebuffer.c \ util/u_gen_mipmap.c \ util/u_half.c \ util/u_handle_table.c \ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index a0673df8a8e..29a1bd0ecba 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -162,6 +162,7 @@ source = [ 'util/u_format_tests.c', 'util/u_format_yuv.c', 'util/u_format_zs.c', + 'util/u_framebuffer.c', 'util/u_gen_mipmap.c', 'util/u_half.c', 'util/u_handle_table.c', diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c index 55e0ded1b30..20a8612dcae 100644 --- a/src/gallium/auxiliary/cso_cache/cso_context.c +++ b/src/gallium/auxiliary/cso_cache/cso_context.c @@ -36,6 +36,7 @@ */ #include "pipe/p_state.h" +#include "util/u_framebuffer.h" #include "util/u_inlines.h" #include "util/u_math.h" #include "util/u_memory.h" @@ -103,10 +104,6 @@ struct cso_context { }; -static void -free_framebuffer_state(struct pipe_framebuffer_state *fb); - - static boolean delete_blend_state(struct cso_context *ctx, void *state) { struct cso_blend *cso = (struct cso_blend *)state; @@ -304,8 +301,8 @@ void cso_release_all( struct cso_context *ctx ) pipe_sampler_view_reference(&ctx->vertex_sampler_views_saved[i], NULL); } - free_framebuffer_state(&ctx->fb); - free_framebuffer_state(&ctx->fb_saved); + util_unreference_framebuffer_state(&ctx->fb); + util_unreference_framebuffer_state(&ctx->fb_saved); if (ctx->cache) { cso_cache_delete( ctx->cache ); @@ -897,42 +894,11 @@ void cso_restore_vertex_shader(struct cso_context *ctx) } -/** - * Copy framebuffer state from src to dst with refcounting of surfaces. - */ -static void -copy_framebuffer_state(struct pipe_framebuffer_state *dst, - const struct pipe_framebuffer_state *src) -{ - uint i; - - dst->width = src->width; - dst->height = src->height; - dst->nr_cbufs = src->nr_cbufs; - for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { - pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]); - } - pipe_surface_reference(&dst->zsbuf, src->zsbuf); -} - - -static void -free_framebuffer_state(struct pipe_framebuffer_state *fb) -{ - uint i; - - for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) { - pipe_surface_reference(&fb->cbufs[i], NULL); - } - pipe_surface_reference(&fb->zsbuf, NULL); -} - - enum pipe_error cso_set_framebuffer(struct cso_context *ctx, const struct pipe_framebuffer_state *fb) { if (memcmp(&ctx->fb, fb, sizeof(*fb)) != 0) { - copy_framebuffer_state(&ctx->fb, fb); + util_copy_framebuffer_state(&ctx->fb, fb); ctx->pipe->set_framebuffer_state(ctx->pipe, fb); } return PIPE_OK; @@ -940,15 +906,15 @@ enum pipe_error cso_set_framebuffer(struct cso_context *ctx, void cso_save_framebuffer(struct cso_context *ctx) { - copy_framebuffer_state(&ctx->fb_saved, &ctx->fb); + util_copy_framebuffer_state(&ctx->fb_saved, &ctx->fb); } void cso_restore_framebuffer(struct cso_context *ctx) { if (memcmp(&ctx->fb, &ctx->fb_saved, sizeof(ctx->fb))) { - copy_framebuffer_state(&ctx->fb, &ctx->fb_saved); + util_copy_framebuffer_state(&ctx->fb, &ctx->fb_saved); ctx->pipe->set_framebuffer_state(ctx->pipe, &ctx->fb); - free_framebuffer_state(&ctx->fb_saved); + util_unreference_framebuffer_state(&ctx->fb_saved); } } diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 3b2df054c3c..ea9b7c90a51 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -182,6 +182,8 @@ draw_llvm_create(struct draw_context *draw) /* These are the passes currently listed in llvm-c/Transforms/Scalar.h, * but there are more on SVN. */ /* TODO: Add more passes */ + LLVMAddCFGSimplificationPass(llvm->pass); + LLVMAddPromoteMemoryToRegisterPass(llvm->pass); LLVMAddConstantPropagationPass(llvm->pass); if(util_cpu_caps.has_sse4_1) { /* FIXME: There is a bug in this pass, whereby the combination of fptosi @@ -190,9 +192,7 @@ draw_llvm_create(struct draw_context *draw) */ LLVMAddInstructionCombiningPass(llvm->pass); } - LLVMAddPromoteMemoryToRegisterPass(llvm->pass); LLVMAddGVNPass(llvm->pass); - LLVMAddCFGSimplificationPass(llvm->pass); init_globals(llvm); @@ -207,6 +207,8 @@ draw_llvm_create(struct draw_context *draw) void draw_llvm_destroy(struct draw_llvm *llvm) { + LLVMDisposePassManager(llvm->pass); + FREE(llvm); } diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c index d2a492f2b4c..6d00b0fbd44 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c @@ -66,7 +66,6 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle, struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle; struct draw_context *draw = fpme->draw; struct draw_vertex_shader *vs = draw->vs.vertex_shader; - struct draw_geometry_shader *gs = draw->gs.geometry_shader; struct draw_llvm_variant_key key; struct draw_llvm_variant *variant = NULL; unsigned i; @@ -97,17 +96,6 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle, fpme->vertex_size = sizeof(struct vertex_header) + nr * 4 * sizeof(float); - - draw_pt_fetch_prepare( fpme->fetch, - vs->info.num_inputs, - fpme->vertex_size, - instance_id_index ); - if (opt & PT_SHADE) { - vs->prepare(vs, draw); - draw_geometry_shader_prepare(gs, draw); - } - - /* XXX: it's not really gl rasterization rules we care about here, * but gl vs dx9 clip spaces. */ @@ -349,7 +337,31 @@ static void llvm_middle_end_finish( struct draw_pt_middle_end *middle ) static void llvm_middle_end_destroy( struct draw_pt_middle_end *middle ) { struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle; + struct draw_context *draw = fpme->draw; + struct draw_llvm_variant *variant = NULL; + variant = fpme->variants; + while(variant) { + struct draw_llvm_variant *next = variant->next; + + if (variant->function_elts) { + if (variant->function_elts) + LLVMFreeMachineCodeForFunction(draw->engine, + variant->function_elts); + LLVMDeleteFunction(variant->function_elts); + } + + if (variant->function) { + if (variant->function) + LLVMFreeMachineCodeForFunction(draw->engine, + variant->function); + LLVMDeleteFunction(variant->function); + } + + FREE(variant); + + variant = next; + } if (fpme->fetch) draw_pt_fetch_destroy( fpme->fetch ); diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c index c2832eefa2a..b9db886a24d 100644 --- a/src/gallium/auxiliary/draw/draw_vs.c +++ b/src/gallium/auxiliary/draw/draw_vs.c @@ -85,18 +85,22 @@ struct draw_vertex_shader * draw_create_vertex_shader(struct draw_context *draw, const struct pipe_shader_state *shader) { - struct draw_vertex_shader *vs; + struct draw_vertex_shader *vs = NULL; if (draw->dump_vs) { tgsi_dump(shader->tokens, 0); } - vs = draw_create_vs_sse( draw, shader ); - if (!vs) { + if (!draw->pt.middle.llvm) { +#if defined(PIPE_ARCH_X86) + vs = draw_create_vs_sse( draw, shader ); +#elif defined(PIPE_ARCH_PPC) vs = draw_create_vs_ppc( draw, shader ); - if (!vs) { - vs = draw_create_vs_exec( draw, shader ); - } +#endif + } + + if (!vs) { + vs = draw_create_vs_exec( draw, shader ); } if (vs) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c index 20ae958714b..f372a48846f 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c @@ -1177,9 +1177,34 @@ lp_build_rcp(struct lp_build_context *bld, if(LLVMIsConstant(a)) return LLVMConstFDiv(bld->one, a); - if(util_cpu_caps.has_sse && type.width == 32 && type.length == 4) - /* FIXME: improve precision */ + if(util_cpu_caps.has_sse && type.width == 32 && type.length == 4) { + /* + * XXX: Added precision is not always necessary, so only enable this + * when we have a better system in place to track minimum precision. + */ + +#if 0 + /* + * Do one Newton-Raphson step to improve precision: + * + * x1 = (2 - a * rcp(a)) * rcp(a) + */ + + LLVMValueRef two = lp_build_const_vec(bld->type, 2.0); + LLVMValueRef rcp_a; + LLVMValueRef res; + + rcp_a = lp_build_intrinsic_unary(bld->builder, "llvm.x86.sse.rcp.ps", lp_build_vec_type(type), a); + + res = LLVMBuildMul(bld->builder, a, rcp_a, ""); + res = LLVMBuildSub(bld->builder, two, res, ""); + res = LLVMBuildMul(bld->builder, res, rcp_a, ""); + + return rcp_a; +#else return lp_build_intrinsic_unary(bld->builder, "llvm.x86.sse.rcp.ps", lp_build_vec_type(type), a); +#endif + } return LLVMBuildFDiv(bld->builder, bld->one, a, ""); } diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h b/src/gallium/auxiliary/gallivm/lp_bld_limits.h new file mode 100644 index 00000000000..e095a0abe3a --- /dev/null +++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h @@ -0,0 +1,53 @@ +/************************************************************************** + * + * Copyright 2010 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + **************************************************************************/ + + +#ifndef LP_BLD_LIMITS_H_ +#define LP_BLD_LIMITS_H_ + +/* + * TGSI translation limits. + * + * Some are slightly above SM 3.0 requirements to give some wiggle room to + * the state trackers. + */ + +#define LP_MAX_TGSI_TEMPS 256 + +#define LP_MAX_TGSI_ADDRS 16 + +#define LP_MAX_TGSI_IMMEDIATES 256 + +/** + * Maximum control flow nesting + * + * SM3.0 requires 24 + */ +#define LP_MAX_TGSI_NESTING 32 + + +#endif /* LP_BLD_LIMITS_H_ */ diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 8ceb20473d5..955b1d21ee5 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -173,7 +173,10 @@ lp_build_sample_soa(LLVMBuilderRef builder, unsigned unit, unsigned num_coords, const LLVMValueRef *coords, - LLVMValueRef lodbias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, + LLVMValueRef explicit_lod, LLVMValueRef *texel); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 74dc9e1d812..3f0ea05b795 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -30,6 +30,7 @@ * Texture sampling -- SoA. * * @author Jose Fonseca <[email protected]> + * @author Brian Paul <[email protected]> */ #include "pipe/p_defines.h" @@ -325,6 +326,18 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld, bld->format_desc, x, y, z, y_stride, z_stride); + if (use_border) { + /* If we can sample the border color, it means that texcoords may + * lie outside the bounds of the texture image. We need to do + * something to prevent reading out of bounds and causing a segfault. + * + * Simply AND the texture coords with !use_border. This will cause + * coords which are out of bounds to become zero. Zero's guaranteed + * to be inside the texture image. + */ + offset = lp_build_andc(&bld->uint_coord_bld, offset, use_border); + } + lp_build_fetch_rgba_soa(bld->builder, bld->format_desc, bld->texel_type, @@ -891,17 +904,24 @@ lp_build_minify(struct lp_build_sample_context *bld, * \param s vector of texcoord s values * \param t vector of texcoord t values * \param r vector of texcoord r values - * \param shader_lod_bias vector float with the shader lod bias, + * \param lod_bias optional float vector with the shader lod bias + * \param explicit_lod optional float vector with the explicit lod * \param width scalar int texture width * \param height scalar int texture height * \param depth scalar int texture depth + * + * XXX: The resulting lod is scalar, so ignore all but the first element of + * derivatives, lod_bias, etc that are passed by the shader. */ static LLVMValueRef lp_build_lod_selector(struct lp_build_sample_context *bld, LLVMValueRef s, LLVMValueRef t, LLVMValueRef r, - LLVMValueRef shader_lod_bias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, /* optional */ + LLVMValueRef explicit_lod, /* optional */ LLVMValueRef width, LLVMValueRef height, LLVMValueRef depth) @@ -914,7 +934,6 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, return LLVMConstReal(LLVMFloatType(), bld->static_state->min_lod); } else { - const int dims = texture_dims(bld->static_state->target); struct lp_build_context *float_bld = &bld->float_bld; LLVMValueRef sampler_lod_bias = LLVMConstReal(LLVMFloatType(), bld->static_state->lod_bias); @@ -922,83 +941,76 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, bld->static_state->min_lod); LLVMValueRef max_lod = LLVMConstReal(LLVMFloatType(), bld->static_state->max_lod); - LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0); - LLVMValueRef index1 = LLVMConstInt(LLVMInt32Type(), 1, 0); - LLVMValueRef index2 = LLVMConstInt(LLVMInt32Type(), 2, 0); - - LLVMValueRef s0, s1, s2; - LLVMValueRef t0, t1, t2; - LLVMValueRef r0, r1, r2; - LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy; - LLVMValueRef rho, lod; - - /* - * dsdx = abs(s[1] - s[0]); - * dsdy = abs(s[2] - s[0]); - * dtdx = abs(t[1] - t[0]); - * dtdy = abs(t[2] - t[0]); - * drdx = abs(r[1] - r[0]); - * drdy = abs(r[2] - r[0]); - * XXX we're assuming a four-element quad in 2x2 layout here. - */ - s0 = LLVMBuildExtractElement(bld->builder, s, index0, "s0"); - s1 = LLVMBuildExtractElement(bld->builder, s, index1, "s1"); - s2 = LLVMBuildExtractElement(bld->builder, s, index2, "s2"); - dsdx = LLVMBuildSub(bld->builder, s1, s0, ""); - dsdx = lp_build_abs(float_bld, dsdx); - dsdy = LLVMBuildSub(bld->builder, s2, s0, ""); - dsdy = lp_build_abs(float_bld, dsdy); - if (dims > 1) { - t0 = LLVMBuildExtractElement(bld->builder, t, index0, "t0"); - t1 = LLVMBuildExtractElement(bld->builder, t, index1, "t1"); - t2 = LLVMBuildExtractElement(bld->builder, t, index2, "t2"); - dtdx = LLVMBuildSub(bld->builder, t1, t0, ""); - dtdx = lp_build_abs(float_bld, dtdx); - dtdy = LLVMBuildSub(bld->builder, t2, t0, ""); - dtdy = lp_build_abs(float_bld, dtdy); - if (dims > 2) { - r0 = LLVMBuildExtractElement(bld->builder, r, index0, "r0"); - r1 = LLVMBuildExtractElement(bld->builder, r, index1, "r1"); - r2 = LLVMBuildExtractElement(bld->builder, r, index2, "r2"); - drdx = LLVMBuildSub(bld->builder, r1, r0, ""); - drdx = lp_build_abs(float_bld, drdx); - drdy = LLVMBuildSub(bld->builder, r2, r0, ""); - drdy = lp_build_abs(float_bld, drdy); - } + LLVMValueRef lod; + + if (explicit_lod) { + lod = LLVMBuildExtractElement(bld->builder, explicit_lod, + index0, ""); } + else { + const int dims = texture_dims(bld->static_state->target); + LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy; + LLVMValueRef rho; + + /* + * dsdx = abs(s[1] - s[0]); + * dsdy = abs(s[2] - s[0]); + * dtdx = abs(t[1] - t[0]); + * dtdy = abs(t[2] - t[0]); + * drdx = abs(r[1] - r[0]); + * drdy = abs(r[2] - r[0]); + */ + dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx"); + dsdx = lp_build_abs(float_bld, dsdx); + dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy"); + dsdy = lp_build_abs(float_bld, dsdy); + if (dims > 1) { + dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx"); + dtdx = lp_build_abs(float_bld, dtdx); + dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy"); + dtdy = lp_build_abs(float_bld, dtdy); + if (dims > 2) { + drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx"); + drdx = lp_build_abs(float_bld, drdx); + drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy"); + drdy = lp_build_abs(float_bld, drdy); + } + } - /* Compute rho = max of all partial derivatives scaled by texture size. - * XXX this could be vectorized somewhat - */ - rho = LLVMBuildMul(bld->builder, - lp_build_max(float_bld, dsdx, dsdy), - lp_build_int_to_float(float_bld, width), ""); - if (dims > 1) { - LLVMValueRef max; - max = LLVMBuildMul(bld->builder, - lp_build_max(float_bld, dtdx, dtdy), - lp_build_int_to_float(float_bld, height), ""); - rho = lp_build_max(float_bld, rho, max); - if (dims > 2) { + /* Compute rho = max of all partial derivatives scaled by texture size. + * XXX this could be vectorized somewhat + */ + rho = LLVMBuildMul(bld->builder, + lp_build_max(float_bld, dsdx, dsdy), + lp_build_int_to_float(float_bld, width), ""); + if (dims > 1) { + LLVMValueRef max; max = LLVMBuildMul(bld->builder, - lp_build_max(float_bld, drdx, drdy), - lp_build_int_to_float(float_bld, depth), ""); + lp_build_max(float_bld, dtdx, dtdy), + lp_build_int_to_float(float_bld, height), ""); rho = lp_build_max(float_bld, rho, max); + if (dims > 2) { + max = LLVMBuildMul(bld->builder, + lp_build_max(float_bld, drdx, drdy), + lp_build_int_to_float(float_bld, depth), ""); + rho = lp_build_max(float_bld, rho, max); + } } - } - /* compute lod = log2(rho) */ - lod = lp_build_log2(float_bld, rho); + /* compute lod = log2(rho) */ + lod = lp_build_log2(float_bld, rho); - /* add sampler lod bias */ - lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler LOD bias"); + /* add shader lod bias */ + if (lod_bias) { + lod_bias = LLVMBuildExtractElement(bld->builder, lod_bias, + index0, ""); + lod = LLVMBuildAdd(bld->builder, lod, lod_bias, "shader_lod_bias"); + } + } - /* add shader lod bias */ - /* XXX for now we take only the first element since our lod is scalar */ - shader_lod_bias = LLVMBuildExtractElement(bld->builder, shader_lod_bias, - LLVMConstInt(LLVMInt32Type(), 0, 0), ""); - lod = LLVMBuildAdd(bld->builder, lod, shader_lod_bias, "shader LOD bias"); + /* add sampler lod bias */ + lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler_lod_bias"); /* clamp lod */ lod = lp_build_clamp(float_bld, lod, min_lod, max_lod); @@ -1584,7 +1596,10 @@ lp_build_sample_general(struct lp_build_sample_context *bld, LLVMValueRef s, LLVMValueRef t, LLVMValueRef r, - LLVMValueRef lodbias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, /* optional */ + LLVMValueRef explicit_lod, /* optional */ LLVMValueRef width, LLVMValueRef height, LLVMValueRef depth, @@ -1622,7 +1637,9 @@ lp_build_sample_general(struct lp_build_sample_context *bld, /* Need to compute lod either to choose mipmap levels or to * distinguish between minification/magnification with one mipmap level. */ - lod = lp_build_lod_selector(bld, s, t, r, lodbias, width, height, depth); + lod = lp_build_lod_selector(bld, s, t, r, ddx, ddy, + lod_bias, explicit_lod, + width, height, depth); } /* @@ -2049,6 +2066,24 @@ lp_build_sample_compare(struct lp_build_sample_context *bld, /** + * Just set texels to white instead of actually sampling the texture. + * For debugging. + */ +static void +lp_build_sample_nop(struct lp_build_sample_context *bld, + LLVMValueRef *texel) +{ + struct lp_build_context *texel_bld = &bld->texel_bld; + unsigned chan; + + for (chan = 0; chan < 4; chan++) { + /*lp_bld_mov(texel_bld, texel, texel_bld->one);*/ + texel[chan] = texel_bld->one; + } +} + + +/** * Build texture sampling code. * 'texel' will return a vector of four LLVMValueRefs corresponding to * R, G, B, A. @@ -2062,7 +2097,10 @@ lp_build_sample_soa(LLVMBuilderRef builder, unsigned unit, unsigned num_coords, const LLVMValueRef *coords, - LLVMValueRef lodbias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, /* optional */ + LLVMValueRef explicit_lod, /* optional */ LLVMValueRef *texel) { struct lp_build_sample_context bld; @@ -2113,19 +2151,24 @@ lp_build_sample_soa(LLVMBuilderRef builder, height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, height); depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, depth); - if (util_format_is_rgba8_variant(bld.format_desc) && - static_state->target == PIPE_TEXTURE_2D && - static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR && - static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR && - static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE && - is_simple_wrap_mode(static_state->wrap_s) && - is_simple_wrap_mode(static_state->wrap_t)) { + if (0) { + /* For debug: no-op texture sampling */ + lp_build_sample_nop(&bld, texel); + } + else if (util_format_is_rgba8_variant(bld.format_desc) && + static_state->target == PIPE_TEXTURE_2D && + static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR && + static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR && + static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE && + is_simple_wrap_mode(static_state->wrap_s) && + is_simple_wrap_mode(static_state->wrap_t)) { /* special case */ lp_build_sample_2d_linear_aos(&bld, s, t, width_vec, height_vec, row_stride_array, data_array, texel); } else { - lp_build_sample_general(&bld, unit, s, t, r, lodbias, + lp_build_sample_general(&bld, unit, s, t, r, ddx, ddy, + lod_bias, explicit_lod, width, height, depth, width_vec, height_vec, depth_vec, row_stride_array, img_stride_array, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h index 2eac5da6c69..5ce1385c480 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h @@ -65,7 +65,10 @@ struct lp_build_sampler_soa unsigned unit, unsigned num_coords, const LLVMValueRef *coords, - LLVMValueRef lodbias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, /* optional */ + LLVMValueRef explicit_lod, /* optional */ LLVMValueRef *texel); }; diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index d3c769e28b8..0b1a28a7ab7 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -54,13 +54,10 @@ #include "lp_bld_swizzle.h" #include "lp_bld_flow.h" #include "lp_bld_tgsi.h" +#include "lp_bld_limits.h" #include "lp_bld_debug.h" -#define LP_MAX_TEMPS 256 -#define LP_MAX_IMMEDIATES 256 - - #define FOR_EACH_CHANNEL( CHAN )\ for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++) @@ -84,7 +81,6 @@ #define QUAD_BOTTOM_LEFT 2 #define QUAD_BOTTOM_RIGHT 3 -#define LP_TGSI_MAX_NESTING 16 struct lp_exec_mask { struct lp_build_context *bld; @@ -93,19 +89,19 @@ struct lp_exec_mask { LLVMTypeRef int_vec_type; - LLVMValueRef cond_stack[LP_TGSI_MAX_NESTING]; + LLVMValueRef cond_stack[LP_MAX_TGSI_NESTING]; int cond_stack_size; LLVMValueRef cond_mask; - LLVMValueRef break_stack[LP_TGSI_MAX_NESTING]; + LLVMValueRef break_stack[LP_MAX_TGSI_NESTING]; int break_stack_size; LLVMValueRef break_mask; - LLVMValueRef cont_stack[LP_TGSI_MAX_NESTING]; + LLVMValueRef cont_stack[LP_MAX_TGSI_NESTING]; int cont_stack_size; LLVMValueRef cont_mask; - LLVMBasicBlockRef loop_stack[LP_TGSI_MAX_NESTING]; + LLVMBasicBlockRef loop_stack[LP_MAX_TGSI_NESTING]; int loop_stack_size; LLVMBasicBlockRef loop_block; @@ -124,9 +120,9 @@ struct lp_build_tgsi_soa_context struct lp_build_sampler_soa *sampler; - LLVMValueRef immediates[LP_MAX_IMMEDIATES][NUM_CHANNELS]; - LLVMValueRef temps[LP_MAX_TEMPS][NUM_CHANNELS]; - LLVMValueRef addr[LP_MAX_TEMPS][NUM_CHANNELS]; + LLVMValueRef immediates[LP_MAX_TGSI_IMMEDIATES][NUM_CHANNELS]; + LLVMValueRef temps[LP_MAX_TGSI_TEMPS][NUM_CHANNELS]; + LLVMValueRef addr[LP_MAX_TGSI_ADDRS][NUM_CHANNELS]; /* we allocate an array of temps if we have indirect * addressing and then the temps above is unused */ @@ -198,6 +194,7 @@ static void lp_exec_mask_update(struct lp_exec_mask *mask) static void lp_exec_mask_cond_push(struct lp_exec_mask *mask, LLVMValueRef val) { + assert(mask->cond_stack_size < LP_MAX_TGSI_NESTING); mask->cond_stack[mask->cond_stack_size++] = mask->cond_mask; mask->cond_mask = LLVMBuildBitCast(mask->bld->builder, val, mask->int_vec_type, ""); @@ -239,6 +236,10 @@ static void lp_exec_bgnloop(struct lp_exec_mask *mask) if (mask->cond_stack_size == 0) mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type); + assert(mask->break_stack_size < LP_MAX_TGSI_NESTING); + assert(mask->cont_stack_size < LP_MAX_TGSI_NESTING); + assert(mask->break_stack_size < LP_MAX_TGSI_NESTING); + mask->break_stack[mask->break_stack_size++] = mask->break_mask; mask->cont_stack[mask->cont_stack_size++] = mask->cont_mask; mask->loop_stack[mask->loop_stack_size++] = mask->loop_block; @@ -255,16 +256,9 @@ static void lp_exec_break(struct lp_exec_mask *mask) mask->exec_mask, "break"); - /* mask->break_stack_size > 1 implies that we encountered a break - * statemant already and if that's the case we want to make sure - * our mask is a combination of the previous break and the current - * execution mask */ - if (mask->break_stack_size > 1) { - mask->break_mask = LLVMBuildAnd(mask->bld->builder, - mask->break_mask, - exec_mask, "break_full"); - } else - mask->break_mask = exec_mask; + mask->break_mask = LLVMBuildAnd(mask->bld->builder, + mask->break_mask, + exec_mask, "break_full"); lp_exec_mask_update(mask); } @@ -275,12 +269,9 @@ static void lp_exec_continue(struct lp_exec_mask *mask) mask->exec_mask, ""); - if (mask->cont_stack_size > 1) { - mask->cont_mask = LLVMBuildAnd(mask->bld->builder, - mask->cont_mask, - exec_mask, ""); - } else - mask->cont_mask = exec_mask; + mask->cont_mask = LLVMBuildAnd(mask->bld->builder, + mask->cont_mask, + exec_mask, ""); lp_exec_mask_update(mask); } @@ -589,7 +580,6 @@ emit_store( case TGSI_FILE_PREDICATE: /* FIXME */ - assert(0); break; default: @@ -602,21 +592,37 @@ emit_store( * High-level instruction translators. */ +enum tex_modifier { + TEX_MODIFIER_NONE = 0, + TEX_MODIFIER_PROJECTED, + TEX_MODIFIER_LOD_BIAS, + TEX_MODIFIER_EXPLICIT_LOD, + TEX_MODIFIER_EXPLICIT_DERIV +}; static void emit_tex( struct lp_build_tgsi_soa_context *bld, const struct tgsi_full_instruction *inst, - boolean apply_lodbias, - boolean projected, + enum tex_modifier modifier, LLVMValueRef *texel) { - const uint unit = inst->Src[1].Register.Index; - LLVMValueRef lodbias; + unsigned unit; + LLVMValueRef lod_bias, explicit_lod; LLVMValueRef oow = NULL; LLVMValueRef coords[3]; + LLVMValueRef ddx[3]; + LLVMValueRef ddy[3]; unsigned num_coords; unsigned i; + if (!bld->sampler) { + _debug_printf("warning: found texture instruction but no sampler generator supplied\n"); + for (i = 0; i < 4; i++) { + texel[i] = bld->base.undef; + } + return; + } + switch (inst->Texture.Texture) { case TGSI_TEXTURE_1D: num_coords = 1; @@ -637,29 +643,57 @@ emit_tex( struct lp_build_tgsi_soa_context *bld, return; } - if(apply_lodbias) - lodbias = emit_fetch( bld, inst, 0, 3 ); - else - lodbias = bld->base.zero; + if (modifier == TEX_MODIFIER_LOD_BIAS) { + lod_bias = emit_fetch( bld, inst, 0, 3 ); + explicit_lod = NULL; + } + else if (modifier == TEX_MODIFIER_EXPLICIT_LOD) { + lod_bias = NULL; + explicit_lod = emit_fetch( bld, inst, 0, 3 ); + } + else { + lod_bias = NULL; + explicit_lod = NULL; + } - if (projected) { + if (modifier == TEX_MODIFIER_PROJECTED) { oow = emit_fetch( bld, inst, 0, 3 ); oow = lp_build_rcp(&bld->base, oow); } for (i = 0; i < num_coords; i++) { coords[i] = emit_fetch( bld, inst, 0, i ); - if (projected) + if (modifier == TEX_MODIFIER_PROJECTED) coords[i] = lp_build_mul(&bld->base, coords[i], oow); } for (i = num_coords; i < 3; i++) { coords[i] = bld->base.undef; } + if (modifier == TEX_MODIFIER_EXPLICIT_DERIV) { + for (i = 0; i < num_coords; i++) { + ddx[i] = emit_fetch( bld, inst, 1, i ); + ddy[i] = emit_fetch( bld, inst, 2, i ); + } + unit = inst->Src[3].Register.Index; + } else { + for (i = 0; i < num_coords; i++) { + ddx[i] = emit_ddx( bld, coords[i] ); + ddy[i] = emit_ddy( bld, coords[i] ); + } + unit = inst->Src[1].Register.Index; + } + for (i = num_coords; i < 3; i++) { + ddx[i] = bld->base.undef; + ddy[i] = bld->base.undef; + } + bld->sampler->emit_fetch_texel(bld->sampler, bld->base.builder, bld->base.type, - unit, num_coords, coords, lodbias, + unit, num_coords, coords, + ddx, ddy, + lod_bias, explicit_lod, texel); } @@ -739,7 +773,7 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld, lp_build_mask_update(bld->mask, mask); } -static int +static void emit_declaration( struct lp_build_tgsi_soa_context *bld, const struct tgsi_full_declaration *decl) @@ -753,6 +787,7 @@ emit_declaration( for (idx = first; idx <= last; ++idx) { switch (decl->Declaration.File) { case TGSI_FILE_TEMPORARY: + assert(idx < LP_MAX_TGSI_TEMPS); if (bld->has_indirect_addressing) { LLVMValueRef val = LLVMConstInt(LLVMInt32Type(), last*4 + 4, 0); @@ -772,18 +807,21 @@ emit_declaration( break; case TGSI_FILE_ADDRESS: + assert(idx < LP_MAX_TGSI_ADDRS); for (i = 0; i < NUM_CHANNELS; i++) bld->addr[idx][i] = lp_build_alloca(bld->base.builder, vec_type, ""); break; + case TGSI_FILE_PREDICATE: + _debug_printf("warning: predicate registers not yet implemented\n"); + break; + default: /* don't need to declare other vars */ break; } } - - return TRUE; } @@ -1359,12 +1397,11 @@ emit_instruction( break; case TGSI_OPCODE_TEX: - emit_tex( bld, inst, FALSE, FALSE, dst0 ); + emit_tex( bld, inst, TEX_MODIFIER_NONE, dst0 ); break; case TGSI_OPCODE_TXD: - /* FIXME */ - return FALSE; + emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_DERIV, dst0 ); break; case TGSI_OPCODE_UP2H: @@ -1466,7 +1503,7 @@ emit_instruction( break; case TGSI_OPCODE_TXB: - emit_tex( bld, inst, TRUE, FALSE, dst0 ); + emit_tex( bld, inst, TEX_MODIFIER_LOD_BIAS, dst0 ); break; case TGSI_OPCODE_NRM: @@ -1571,11 +1608,11 @@ emit_instruction( break; case TGSI_OPCODE_TXL: - emit_tex( bld, inst, TRUE, FALSE, dst0 ); + emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_LOD, dst0 ); break; case TGSI_OPCODE_TXP: - emit_tex( bld, inst, FALSE, TRUE, dst0 ); + emit_tex( bld, inst, TEX_MODIFIER_PROJECTED, dst0 ); break; case TGSI_OPCODE_BRK: @@ -1765,10 +1802,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder, switch( parse.FullToken.Token.Type ) { case TGSI_TOKEN_TYPE_DECLARATION: /* Inputs already interpolated */ - { - if (!emit_declaration( &bld, &parse.FullToken.FullDeclaration )) - _debug_printf("warning: failed to define LLVM variable\n"); - } + emit_declaration( &bld, &parse.FullToken.FullDeclaration ); break; case TGSI_TOKEN_TYPE_INSTRUCTION: @@ -1787,7 +1821,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder, { const uint size = parse.FullToken.FullImmediate.Immediate.NrTokens - 1; assert(size <= 4); - assert(num_immediates < LP_MAX_IMMEDIATES); + assert(num_immediates < LP_MAX_TGSI_IMMEDIATES); for( i = 0; i < size; ++i ) bld.immediates[num_immediates][i] = lp_build_const_vec(type, parse.FullToken.FullImmediate.u[i].Float); diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c index 83000200189..1ad183b8dd4 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_dump.c +++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c @@ -100,7 +100,6 @@ static const char *file_names[TGSI_FILE_COUNT] = "SAMP", "ADDR", "IMM", - "LOOP", "PRED", "SV" }; @@ -494,6 +493,30 @@ iter_instruction( TXT( " " ); ctx->indent += info->post_indent; + if (inst->Instruction.Predicate) { + CHR( '(' ); + + if (inst->Predicate.Negate) + CHR( '!' ); + + TXT( "PRED[" ); + SID( inst->Predicate.Index ); + CHR( ']' ); + + if (inst->Predicate.SwizzleX != TGSI_SWIZZLE_X || + inst->Predicate.SwizzleY != TGSI_SWIZZLE_Y || + inst->Predicate.SwizzleZ != TGSI_SWIZZLE_Z || + inst->Predicate.SwizzleW != TGSI_SWIZZLE_W) { + CHR( '.' ); + ENM( inst->Predicate.SwizzleX, swizzle_names ); + ENM( inst->Predicate.SwizzleY, swizzle_names ); + ENM( inst->Predicate.SwizzleZ, swizzle_names ); + ENM( inst->Predicate.SwizzleW, swizzle_names ); + } + + TXT( ") " ); + } + TXT( info->mnemonic ); switch (inst->Instruction.Saturate) { diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c index 82eac05dc4d..9b1ca7fa851 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.c +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c @@ -1346,13 +1346,6 @@ store_dest(struct tgsi_exec_machine *mach, dst = &mach->Addrs[index].xyzw[chan_index]; break; - case TGSI_FILE_LOOP: - assert(reg->Register.Index == 0); - assert(mach->LoopCounterStackTop > 0); - assert(chan_index == CHAN_X); - dst = &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[chan_index]; - break; - case TGSI_FILE_PREDICATE: index = reg->Register.Index; assert(index < TGSI_EXEC_NUM_PREDS); diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h index a22873e4c2b..11bbaf6722e 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_exec.h +++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h @@ -299,10 +299,6 @@ struct tgsi_exec_machine uint LoopLabelStack[TGSI_EXEC_MAX_LOOP_NESTING]; int LoopLabelStackTop; - /** Loop counter stack (x = index, y = counter, z = step) */ - struct tgsi_exec_vector LoopCounterStack[TGSI_EXEC_MAX_LOOP_NESTING]; - int LoopCounterStackTop; - /** Loop continue mask stack (see comments in tgsi_exec.c) */ uint ContStack[TGSI_EXEC_MAX_LOOP_NESTING]; int ContStackTop; diff --git a/src/gallium/auxiliary/tgsi/tgsi_sanity.c b/src/gallium/auxiliary/tgsi/tgsi_sanity.c index 76b7564cc36..ce0a92f7fb3 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_sanity.c +++ b/src/gallium/auxiliary/tgsi/tgsi_sanity.c @@ -235,8 +235,8 @@ static const char *file_names[TGSI_FILE_COUNT] = "SAMP", "ADDR", "IMM", - "LOOP", - "PRED" + "PRED", + "SV" }; static boolean diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c index 0b468a9184e..71a0d96331a 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_text.c +++ b/src/gallium/auxiliary/tgsi/tgsi_text.c @@ -278,7 +278,6 @@ static const char *file_names[TGSI_FILE_COUNT] = "SAMP", "ADDR", "IMM", - "LOOP", "PRED", "SV" }; @@ -816,6 +815,45 @@ parse_instruction( struct tgsi_full_instruction inst; uint advance; + inst = tgsi_default_full_instruction(); + + /* Parse predicate. + */ + eat_opt_white( &ctx->cur ); + if (*ctx->cur == '(') { + uint file; + int index; + uint swizzle[4]; + boolean parsed_swizzle; + + inst.Instruction.Predicate = 1; + + ctx->cur++; + if (*ctx->cur == '!') { + ctx->cur++; + inst.Predicate.Negate = 1; + } + + if (!parse_register_dst( ctx, &file, &index )) + return FALSE; + + if (parse_optional_swizzle( ctx, swizzle, &parsed_swizzle )) { + if (parsed_swizzle) { + inst.Predicate.SwizzleX = swizzle[0]; + inst.Predicate.SwizzleY = swizzle[1]; + inst.Predicate.SwizzleZ = swizzle[2]; + inst.Predicate.SwizzleW = swizzle[3]; + } + } + + if (*ctx->cur != ')') { + report_error( ctx, "Expected `)'" ); + return FALSE; + } + + ctx->cur++; + } + /* Parse instruction name. */ eat_opt_white( &ctx->cur ); @@ -849,7 +887,6 @@ parse_instruction( return FALSE; } - inst = tgsi_default_full_instruction(); inst.Instruction.Opcode = i; inst.Instruction.Saturate = saturate; inst.Instruction.NumDstRegs = info->num_dst; diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c index f725405ade1..49b854b1234 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c +++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c @@ -74,7 +74,6 @@ struct ureg_tokens { #define UREG_MAX_IMMEDIATE 32 #define UREG_MAX_TEMP 256 #define UREG_MAX_ADDR 2 -#define UREG_MAX_LOOP 1 #define UREG_MAX_PRED 1 struct const_decl { @@ -151,7 +150,6 @@ struct ureg_program unsigned nr_addrs; unsigned nr_preds; - unsigned nr_loops; unsigned nr_instructions; struct ureg_tokens domain[2]; @@ -537,19 +535,6 @@ struct ureg_dst ureg_DECL_address( struct ureg_program *ureg ) return ureg_dst_register( TGSI_FILE_ADDRESS, 0 ); } -/* Allocate a new loop register. - */ -struct ureg_dst -ureg_DECL_loop(struct ureg_program *ureg) -{ - if (ureg->nr_loops < UREG_MAX_LOOP) { - return ureg_dst_register(TGSI_FILE_LOOP, ureg->nr_loops++); - } - - assert(0); - return ureg_dst_register(TGSI_FILE_LOOP, 0); -} - /* Allocate a new predicate register. */ struct ureg_dst @@ -1356,13 +1341,6 @@ static void emit_decls( struct ureg_program *ureg ) 0, ureg->nr_addrs ); } - if (ureg->nr_loops) { - emit_decl_range(ureg, - TGSI_FILE_LOOP, - 0, - ureg->nr_loops); - } - if (ureg->nr_preds) { emit_decl_range(ureg, TGSI_FILE_PREDICATE, diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.h b/src/gallium/auxiliary/tgsi/tgsi_ureg.h index 0130a77aadb..f32420dd872 100644 --- a/src/gallium/auxiliary/tgsi/tgsi_ureg.h +++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.h @@ -231,9 +231,6 @@ struct ureg_dst ureg_DECL_address( struct ureg_program * ); struct ureg_dst -ureg_DECL_loop( struct ureg_program * ); - -struct ureg_dst ureg_DECL_predicate(struct ureg_program *); /* Supply an index to the sampler declaration as this is the hook to diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c index a9272fbb491..f8dbd2b36a1 100644 --- a/src/gallium/auxiliary/translate/translate_generic.c +++ b/src/gallium/auxiliary/translate/translate_generic.c @@ -31,6 +31,7 @@ */ #include "util/u_memory.h" +#include "util/u_format.h" #include "util/u_math.h" #include "pipe/p_state.h" #include "translate.h" @@ -38,7 +39,9 @@ #define DRAW_DBG 0 -typedef void (*fetch_func)(const void *ptr, float *attrib); +typedef void (*fetch_func)(float *dst, + const uint8_t *src, + unsigned i, unsigned j); typedef void (*emit_func)(const float *attrib, void *ptr); @@ -57,7 +60,7 @@ struct translate_generic { emit_func emit; unsigned output_offset; - char *input_ptr; + const uint8_t *input_ptr; unsigned input_stride; unsigned max_index; @@ -79,22 +82,7 @@ static struct translate_generic *translate_generic( struct translate *translate * This is probably needed/dupliocated elsewhere, eg format * conversion, texture sampling etc. */ -#define ATTRIB( NAME, SZ, TYPE, FROM, TO ) \ -static void \ -fetch_##NAME(const void *ptr, float *attrib) \ -{ \ - const float defaults[4] = { 0.0f,0.0f,0.0f,1.0f }; \ - unsigned i; \ - \ - for (i = 0; i < SZ; i++) { \ - attrib[i] = FROM(i); \ - } \ - \ - for (; i < 4; i++) { \ - attrib[i] = defaults[i]; \ - } \ -} \ - \ +#define ATTRIB( NAME, SZ, TYPE, TO ) \ static void \ emit_##NAME(const float *attrib, void *ptr) \ { \ @@ -107,27 +95,6 @@ emit_##NAME(const float *attrib, void *ptr) \ } -#define FROM_64_FLOAT(i) ((float) ((double *) ptr)[i]) -#define FROM_32_FLOAT(i) (((float *) ptr)[i]) - -#define FROM_8_USCALED(i) ((float) ((unsigned char *) ptr)[i]) -#define FROM_16_USCALED(i) ((float) ((unsigned short *) ptr)[i]) -#define FROM_32_USCALED(i) ((float) ((unsigned int *) ptr)[i]) - -#define FROM_8_SSCALED(i) ((float) ((char *) ptr)[i]) -#define FROM_16_SSCALED(i) ((float) ((short *) ptr)[i]) -#define FROM_32_SSCALED(i) ((float) ((int *) ptr)[i]) - -#define FROM_8_UNORM(i) ((float) ((unsigned char *) ptr)[i] / 255.0f) -#define FROM_16_UNORM(i) ((float) ((unsigned short *) ptr)[i] / 65535.0f) -#define FROM_32_UNORM(i) ((float) ((unsigned int *) ptr)[i] / 4294967295.0f) - -#define FROM_8_SNORM(i) ((float) ((char *) ptr)[i] / 127.0f) -#define FROM_16_SNORM(i) ((float) ((short *) ptr)[i] / 32767.0f) -#define FROM_32_SNORM(i) ((float) ((int *) ptr)[i] / 2147483647.0f) - -#define FROM_32_FIXED(i) (((int *) ptr)[i] / 65536.0f) - #define TO_64_FLOAT(x) ((double) x) #define TO_32_FLOAT(x) (x) @@ -150,95 +117,79 @@ emit_##NAME(const float *attrib, void *ptr) \ #define TO_32_FIXED(x) ((int) (x * 65536.0f)) +ATTRIB( R64G64B64A64_FLOAT, 4, double, TO_64_FLOAT ) +ATTRIB( R64G64B64_FLOAT, 3, double, TO_64_FLOAT ) +ATTRIB( R64G64_FLOAT, 2, double, TO_64_FLOAT ) +ATTRIB( R64_FLOAT, 1, double, TO_64_FLOAT ) + +ATTRIB( R32G32B32A32_FLOAT, 4, float, TO_32_FLOAT ) +ATTRIB( R32G32B32_FLOAT, 3, float, TO_32_FLOAT ) +ATTRIB( R32G32_FLOAT, 2, float, TO_32_FLOAT ) +ATTRIB( R32_FLOAT, 1, float, TO_32_FLOAT ) + +ATTRIB( R32G32B32A32_USCALED, 4, unsigned, TO_32_USCALED ) +ATTRIB( R32G32B32_USCALED, 3, unsigned, TO_32_USCALED ) +ATTRIB( R32G32_USCALED, 2, unsigned, TO_32_USCALED ) +ATTRIB( R32_USCALED, 1, unsigned, TO_32_USCALED ) + +ATTRIB( R32G32B32A32_SSCALED, 4, int, TO_32_SSCALED ) +ATTRIB( R32G32B32_SSCALED, 3, int, TO_32_SSCALED ) +ATTRIB( R32G32_SSCALED, 2, int, TO_32_SSCALED ) +ATTRIB( R32_SSCALED, 1, int, TO_32_SSCALED ) + +ATTRIB( R32G32B32A32_UNORM, 4, unsigned, TO_32_UNORM ) +ATTRIB( R32G32B32_UNORM, 3, unsigned, TO_32_UNORM ) +ATTRIB( R32G32_UNORM, 2, unsigned, TO_32_UNORM ) +ATTRIB( R32_UNORM, 1, unsigned, TO_32_UNORM ) + +ATTRIB( R32G32B32A32_SNORM, 4, int, TO_32_SNORM ) +ATTRIB( R32G32B32_SNORM, 3, int, TO_32_SNORM ) +ATTRIB( R32G32_SNORM, 2, int, TO_32_SNORM ) +ATTRIB( R32_SNORM, 1, int, TO_32_SNORM ) + +ATTRIB( R16G16B16A16_USCALED, 4, ushort, TO_16_USCALED ) +ATTRIB( R16G16B16_USCALED, 3, ushort, TO_16_USCALED ) +ATTRIB( R16G16_USCALED, 2, ushort, TO_16_USCALED ) +ATTRIB( R16_USCALED, 1, ushort, TO_16_USCALED ) + +ATTRIB( R16G16B16A16_SSCALED, 4, short, TO_16_SSCALED ) +ATTRIB( R16G16B16_SSCALED, 3, short, TO_16_SSCALED ) +ATTRIB( R16G16_SSCALED, 2, short, TO_16_SSCALED ) +ATTRIB( R16_SSCALED, 1, short, TO_16_SSCALED ) + +ATTRIB( R16G16B16A16_UNORM, 4, ushort, TO_16_UNORM ) +ATTRIB( R16G16B16_UNORM, 3, ushort, TO_16_UNORM ) +ATTRIB( R16G16_UNORM, 2, ushort, TO_16_UNORM ) +ATTRIB( R16_UNORM, 1, ushort, TO_16_UNORM ) + +ATTRIB( R16G16B16A16_SNORM, 4, short, TO_16_SNORM ) +ATTRIB( R16G16B16_SNORM, 3, short, TO_16_SNORM ) +ATTRIB( R16G16_SNORM, 2, short, TO_16_SNORM ) +ATTRIB( R16_SNORM, 1, short, TO_16_SNORM ) + +ATTRIB( R8G8B8A8_USCALED, 4, ubyte, TO_8_USCALED ) +ATTRIB( R8G8B8_USCALED, 3, ubyte, TO_8_USCALED ) +ATTRIB( R8G8_USCALED, 2, ubyte, TO_8_USCALED ) +ATTRIB( R8_USCALED, 1, ubyte, TO_8_USCALED ) + +ATTRIB( R8G8B8A8_SSCALED, 4, char, TO_8_SSCALED ) +ATTRIB( R8G8B8_SSCALED, 3, char, TO_8_SSCALED ) +ATTRIB( R8G8_SSCALED, 2, char, TO_8_SSCALED ) +ATTRIB( R8_SSCALED, 1, char, TO_8_SSCALED ) + +ATTRIB( R8G8B8A8_UNORM, 4, ubyte, TO_8_UNORM ) +ATTRIB( R8G8B8_UNORM, 3, ubyte, TO_8_UNORM ) +ATTRIB( R8G8_UNORM, 2, ubyte, TO_8_UNORM ) +ATTRIB( R8_UNORM, 1, ubyte, TO_8_UNORM ) + +ATTRIB( R8G8B8A8_SNORM, 4, char, TO_8_SNORM ) +ATTRIB( R8G8B8_SNORM, 3, char, TO_8_SNORM ) +ATTRIB( R8G8_SNORM, 2, char, TO_8_SNORM ) +ATTRIB( R8_SNORM, 1, char, TO_8_SNORM ) + +ATTRIB( A8R8G8B8_UNORM, 4, ubyte, TO_8_UNORM ) +/*ATTRIB( R8G8B8A8_UNORM, 4, ubyte, TO_8_UNORM )*/ -ATTRIB( R64G64B64A64_FLOAT, 4, double, FROM_64_FLOAT, TO_64_FLOAT ) -ATTRIB( R64G64B64_FLOAT, 3, double, FROM_64_FLOAT, TO_64_FLOAT ) -ATTRIB( R64G64_FLOAT, 2, double, FROM_64_FLOAT, TO_64_FLOAT ) -ATTRIB( R64_FLOAT, 1, double, FROM_64_FLOAT, TO_64_FLOAT ) - -ATTRIB( R32G32B32A32_FLOAT, 4, float, FROM_32_FLOAT, TO_32_FLOAT ) -ATTRIB( R32G32B32_FLOAT, 3, float, FROM_32_FLOAT, TO_32_FLOAT ) -ATTRIB( R32G32_FLOAT, 2, float, FROM_32_FLOAT, TO_32_FLOAT ) -ATTRIB( R32_FLOAT, 1, float, FROM_32_FLOAT, TO_32_FLOAT ) - -ATTRIB( R32G32B32A32_USCALED, 4, unsigned, FROM_32_USCALED, TO_32_USCALED ) -ATTRIB( R32G32B32_USCALED, 3, unsigned, FROM_32_USCALED, TO_32_USCALED ) -ATTRIB( R32G32_USCALED, 2, unsigned, FROM_32_USCALED, TO_32_USCALED ) -ATTRIB( R32_USCALED, 1, unsigned, FROM_32_USCALED, TO_32_USCALED ) - -ATTRIB( R32G32B32A32_SSCALED, 4, int, FROM_32_SSCALED, TO_32_SSCALED ) -ATTRIB( R32G32B32_SSCALED, 3, int, FROM_32_SSCALED, TO_32_SSCALED ) -ATTRIB( R32G32_SSCALED, 2, int, FROM_32_SSCALED, TO_32_SSCALED ) -ATTRIB( R32_SSCALED, 1, int, FROM_32_SSCALED, TO_32_SSCALED ) - -ATTRIB( R32G32B32A32_UNORM, 4, unsigned, FROM_32_UNORM, TO_32_UNORM ) -ATTRIB( R32G32B32_UNORM, 3, unsigned, FROM_32_UNORM, TO_32_UNORM ) -ATTRIB( R32G32_UNORM, 2, unsigned, FROM_32_UNORM, TO_32_UNORM ) -ATTRIB( R32_UNORM, 1, unsigned, FROM_32_UNORM, TO_32_UNORM ) - -ATTRIB( R32G32B32A32_SNORM, 4, int, FROM_32_SNORM, TO_32_SNORM ) -ATTRIB( R32G32B32_SNORM, 3, int, FROM_32_SNORM, TO_32_SNORM ) -ATTRIB( R32G32_SNORM, 2, int, FROM_32_SNORM, TO_32_SNORM ) -ATTRIB( R32_SNORM, 1, int, FROM_32_SNORM, TO_32_SNORM ) - -ATTRIB( R16G16B16A16_USCALED, 4, ushort, FROM_16_USCALED, TO_16_USCALED ) -ATTRIB( R16G16B16_USCALED, 3, ushort, FROM_16_USCALED, TO_16_USCALED ) -ATTRIB( R16G16_USCALED, 2, ushort, FROM_16_USCALED, TO_16_USCALED ) -ATTRIB( R16_USCALED, 1, ushort, FROM_16_USCALED, TO_16_USCALED ) - -ATTRIB( R16G16B16A16_SSCALED, 4, short, FROM_16_SSCALED, TO_16_SSCALED ) -ATTRIB( R16G16B16_SSCALED, 3, short, FROM_16_SSCALED, TO_16_SSCALED ) -ATTRIB( R16G16_SSCALED, 2, short, FROM_16_SSCALED, TO_16_SSCALED ) -ATTRIB( R16_SSCALED, 1, short, FROM_16_SSCALED, TO_16_SSCALED ) - -ATTRIB( R16G16B16A16_UNORM, 4, ushort, FROM_16_UNORM, TO_16_UNORM ) -ATTRIB( R16G16B16_UNORM, 3, ushort, FROM_16_UNORM, TO_16_UNORM ) -ATTRIB( R16G16_UNORM, 2, ushort, FROM_16_UNORM, TO_16_UNORM ) -ATTRIB( R16_UNORM, 1, ushort, FROM_16_UNORM, TO_16_UNORM ) - -ATTRIB( R16G16B16A16_SNORM, 4, short, FROM_16_SNORM, TO_16_SNORM ) -ATTRIB( R16G16B16_SNORM, 3, short, FROM_16_SNORM, TO_16_SNORM ) -ATTRIB( R16G16_SNORM, 2, short, FROM_16_SNORM, TO_16_SNORM ) -ATTRIB( R16_SNORM, 1, short, FROM_16_SNORM, TO_16_SNORM ) - -ATTRIB( R8G8B8A8_USCALED, 4, ubyte, FROM_8_USCALED, TO_8_USCALED ) -ATTRIB( R8G8B8_USCALED, 3, ubyte, FROM_8_USCALED, TO_8_USCALED ) -ATTRIB( R8G8_USCALED, 2, ubyte, FROM_8_USCALED, TO_8_USCALED ) -ATTRIB( R8_USCALED, 1, ubyte, FROM_8_USCALED, TO_8_USCALED ) - -ATTRIB( R8G8B8A8_SSCALED, 4, char, FROM_8_SSCALED, TO_8_SSCALED ) -ATTRIB( R8G8B8_SSCALED, 3, char, FROM_8_SSCALED, TO_8_SSCALED ) -ATTRIB( R8G8_SSCALED, 2, char, FROM_8_SSCALED, TO_8_SSCALED ) -ATTRIB( R8_SSCALED, 1, char, FROM_8_SSCALED, TO_8_SSCALED ) - -ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM ) -ATTRIB( R8G8B8_UNORM, 3, ubyte, FROM_8_UNORM, TO_8_UNORM ) -ATTRIB( R8G8_UNORM, 2, ubyte, FROM_8_UNORM, TO_8_UNORM ) -ATTRIB( R8_UNORM, 1, ubyte, FROM_8_UNORM, TO_8_UNORM ) - -ATTRIB( R8G8B8A8_SNORM, 4, char, FROM_8_SNORM, TO_8_SNORM ) -ATTRIB( R8G8B8_SNORM, 3, char, FROM_8_SNORM, TO_8_SNORM ) -ATTRIB( R8G8_SNORM, 2, char, FROM_8_SNORM, TO_8_SNORM ) -ATTRIB( R8_SNORM, 1, char, FROM_8_SNORM, TO_8_SNORM ) - -ATTRIB( A8R8G8B8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM ) -/*ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )*/ - -ATTRIB( R32G32B32A32_FIXED, 4, int, FROM_32_FIXED, TO_32_FIXED ) -ATTRIB( R32G32B32_FIXED, 3, int, FROM_32_FIXED, TO_32_FIXED ) -ATTRIB( R32G32_FIXED, 2, int, FROM_32_FIXED, TO_32_FIXED ) -ATTRIB( R32_FIXED, 1, int, FROM_32_FIXED, TO_32_FIXED ) - - - -static void -fetch_B8G8R8A8_UNORM(const void *ptr, float *attrib) -{ - attrib[2] = FROM_8_UNORM(0); - attrib[1] = FROM_8_UNORM(1); - attrib[0] = FROM_8_UNORM(2); - attrib[3] = FROM_8_UNORM(3); -} static void emit_B8G8R8A8_UNORM( const float *attrib, void *ptr) @@ -251,181 +202,13 @@ emit_B8G8R8A8_UNORM( const float *attrib, void *ptr) } static void -fetch_NULL( const void *ptr, float *attrib ) -{ - attrib[0] = 0; - attrib[1] = 0; - attrib[2] = 0; - attrib[3] = 1; -} - -static void emit_NULL( const float *attrib, void *ptr ) { /* do nothing is the only sensible option */ } -static fetch_func get_fetch_func( enum pipe_format format ) -{ - switch (format) { - case PIPE_FORMAT_R64_FLOAT: - return &fetch_R64_FLOAT; - case PIPE_FORMAT_R64G64_FLOAT: - return &fetch_R64G64_FLOAT; - case PIPE_FORMAT_R64G64B64_FLOAT: - return &fetch_R64G64B64_FLOAT; - case PIPE_FORMAT_R64G64B64A64_FLOAT: - return &fetch_R64G64B64A64_FLOAT; - - case PIPE_FORMAT_R32_FLOAT: - return &fetch_R32_FLOAT; - case PIPE_FORMAT_R32G32_FLOAT: - return &fetch_R32G32_FLOAT; - case PIPE_FORMAT_R32G32B32_FLOAT: - return &fetch_R32G32B32_FLOAT; - case PIPE_FORMAT_R32G32B32A32_FLOAT: - return &fetch_R32G32B32A32_FLOAT; - - case PIPE_FORMAT_R32_UNORM: - return &fetch_R32_UNORM; - case PIPE_FORMAT_R32G32_UNORM: - return &fetch_R32G32_UNORM; - case PIPE_FORMAT_R32G32B32_UNORM: - return &fetch_R32G32B32_UNORM; - case PIPE_FORMAT_R32G32B32A32_UNORM: - return &fetch_R32G32B32A32_UNORM; - - case PIPE_FORMAT_R32_USCALED: - return &fetch_R32_USCALED; - case PIPE_FORMAT_R32G32_USCALED: - return &fetch_R32G32_USCALED; - case PIPE_FORMAT_R32G32B32_USCALED: - return &fetch_R32G32B32_USCALED; - case PIPE_FORMAT_R32G32B32A32_USCALED: - return &fetch_R32G32B32A32_USCALED; - - case PIPE_FORMAT_R32_SNORM: - return &fetch_R32_SNORM; - case PIPE_FORMAT_R32G32_SNORM: - return &fetch_R32G32_SNORM; - case PIPE_FORMAT_R32G32B32_SNORM: - return &fetch_R32G32B32_SNORM; - case PIPE_FORMAT_R32G32B32A32_SNORM: - return &fetch_R32G32B32A32_SNORM; - - case PIPE_FORMAT_R32_SSCALED: - return &fetch_R32_SSCALED; - case PIPE_FORMAT_R32G32_SSCALED: - return &fetch_R32G32_SSCALED; - case PIPE_FORMAT_R32G32B32_SSCALED: - return &fetch_R32G32B32_SSCALED; - case PIPE_FORMAT_R32G32B32A32_SSCALED: - return &fetch_R32G32B32A32_SSCALED; - - case PIPE_FORMAT_R16_UNORM: - return &fetch_R16_UNORM; - case PIPE_FORMAT_R16G16_UNORM: - return &fetch_R16G16_UNORM; - case PIPE_FORMAT_R16G16B16_UNORM: - return &fetch_R16G16B16_UNORM; - case PIPE_FORMAT_R16G16B16A16_UNORM: - return &fetch_R16G16B16A16_UNORM; - - case PIPE_FORMAT_R16_USCALED: - return &fetch_R16_USCALED; - case PIPE_FORMAT_R16G16_USCALED: - return &fetch_R16G16_USCALED; - case PIPE_FORMAT_R16G16B16_USCALED: - return &fetch_R16G16B16_USCALED; - case PIPE_FORMAT_R16G16B16A16_USCALED: - return &fetch_R16G16B16A16_USCALED; - - case PIPE_FORMAT_R16_SNORM: - return &fetch_R16_SNORM; - case PIPE_FORMAT_R16G16_SNORM: - return &fetch_R16G16_SNORM; - case PIPE_FORMAT_R16G16B16_SNORM: - return &fetch_R16G16B16_SNORM; - case PIPE_FORMAT_R16G16B16A16_SNORM: - return &fetch_R16G16B16A16_SNORM; - - case PIPE_FORMAT_R16_SSCALED: - return &fetch_R16_SSCALED; - case PIPE_FORMAT_R16G16_SSCALED: - return &fetch_R16G16_SSCALED; - case PIPE_FORMAT_R16G16B16_SSCALED: - return &fetch_R16G16B16_SSCALED; - case PIPE_FORMAT_R16G16B16A16_SSCALED: - return &fetch_R16G16B16A16_SSCALED; - - case PIPE_FORMAT_R8_UNORM: - return &fetch_R8_UNORM; - case PIPE_FORMAT_R8G8_UNORM: - return &fetch_R8G8_UNORM; - case PIPE_FORMAT_R8G8B8_UNORM: - return &fetch_R8G8B8_UNORM; - case PIPE_FORMAT_R8G8B8A8_UNORM: - return &fetch_R8G8B8A8_UNORM; - - case PIPE_FORMAT_R8_USCALED: - return &fetch_R8_USCALED; - case PIPE_FORMAT_R8G8_USCALED: - return &fetch_R8G8_USCALED; - case PIPE_FORMAT_R8G8B8_USCALED: - return &fetch_R8G8B8_USCALED; - case PIPE_FORMAT_R8G8B8A8_USCALED: - return &fetch_R8G8B8A8_USCALED; - - case PIPE_FORMAT_R8_SNORM: - return &fetch_R8_SNORM; - case PIPE_FORMAT_R8G8_SNORM: - return &fetch_R8G8_SNORM; - case PIPE_FORMAT_R8G8B8_SNORM: - return &fetch_R8G8B8_SNORM; - case PIPE_FORMAT_R8G8B8A8_SNORM: - return &fetch_R8G8B8A8_SNORM; - - case PIPE_FORMAT_R8_SSCALED: - return &fetch_R8_SSCALED; - case PIPE_FORMAT_R8G8_SSCALED: - return &fetch_R8G8_SSCALED; - case PIPE_FORMAT_R8G8B8_SSCALED: - return &fetch_R8G8B8_SSCALED; - case PIPE_FORMAT_R8G8B8A8_SSCALED: - return &fetch_R8G8B8A8_SSCALED; - - case PIPE_FORMAT_B8G8R8A8_UNORM: - return &fetch_B8G8R8A8_UNORM; - - case PIPE_FORMAT_A8R8G8B8_UNORM: - return &fetch_A8R8G8B8_UNORM; - - case PIPE_FORMAT_R32_FIXED: - return &fetch_R32_FIXED; - case PIPE_FORMAT_R32G32_FIXED: - return &fetch_R32G32_FIXED; - case PIPE_FORMAT_R32G32B32_FIXED: - return &fetch_R32G32B32_FIXED; - case PIPE_FORMAT_R32G32B32A32_FIXED: - return &fetch_R32G32B32A32_FIXED; - - default: - assert(0); - return &fetch_NULL; - } -} - - - - static emit_func get_emit_func( enum pipe_format format ) { - /* silence warnings */ - (void) emit_R32G32B32A32_FIXED; - (void) emit_R32G32B32_FIXED; - (void) emit_R32G32_FIXED; - (void) emit_R32_FIXED; - switch (format) { case PIPE_FORMAT_R64_FLOAT: return &emit_R64_FLOAT; @@ -589,7 +372,7 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate, for (attr = 0; attr < nr_attrs; attr++) { float data[4]; - const char *src; + const uint8_t *src; unsigned index; char *dst = (vert + @@ -606,7 +389,7 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate, src = tg->attrib[attr].input_ptr + tg->attrib[attr].input_stride * index; - tg->attrib[attr].fetch( src, data ); + tg->attrib[attr].fetch( data, src, 0, 0 ); if (0) debug_printf("vert %d/%d attr %d: %f %f %f %f\n", i, elt, attr, data[0], data[1], data[2], data[3]); @@ -644,7 +427,7 @@ static void PIPE_CDECL generic_run( struct translate *translate, tg->attrib[attr].output_offset); if (tg->attrib[attr].type == TRANSLATE_ELEMENT_NORMAL) { - const char *src; + const uint8_t *src; if (tg->attrib[attr].instance_divisor) { src = tg->attrib[attr].input_ptr + @@ -655,7 +438,7 @@ static void PIPE_CDECL generic_run( struct translate *translate, tg->attrib[attr].input_stride * elt; } - tg->attrib[attr].fetch( src, data ); + tg->attrib[attr].fetch( data, src, 0, 0 ); } else { data[0] = (float)instance_id; } @@ -683,7 +466,7 @@ static void generic_set_buffer( struct translate *translate, for (i = 0; i < tg->nr_attrib; i++) { if (tg->attrib[i].buffer == buf) { - tg->attrib[i].input_ptr = ((char *)ptr + + tg->attrib[i].input_ptr = ((const uint8_t *)ptr + tg->attrib[i].input_offset); tg->attrib[i].input_stride = stride; tg->attrib[i].max_index = max_index; @@ -714,9 +497,15 @@ struct translate *translate_generic_create( const struct translate_key *key ) tg->translate.run = generic_run; for (i = 0; i < key->nr_elements; i++) { + const struct util_format_description *format_desc = + util_format_description(key->element[i].input_format); + + assert(format_desc); + assert(format_desc->fetch_rgba_float); + tg->attrib[i].type = key->element[i].type; - tg->attrib[i].fetch = get_fetch_func(key->element[i].input_format); + tg->attrib[i].fetch = format_desc->fetch_rgba_float; tg->attrib[i].buffer = key->element[i].input_buffer; tg->attrib[i].input_offset = key->element[i].input_offset; tg->attrib[i].instance_divisor = key->element[i].instance_divisor; diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c index 956aedc8a15..1abe31db466 100644 --- a/src/gallium/auxiliary/util/u_blitter.c +++ b/src/gallium/auxiliary/util/u_blitter.c @@ -47,6 +47,7 @@ #include "util/u_rect.h" #include "util/u_sampler.h" #include "util/u_simple_shaders.h" +#include "util/u_surface.h" #include "util/u_texture.h" #define INVALID_PTR ((void*)~0) diff --git a/src/gallium/auxiliary/util/u_caps.c b/src/gallium/auxiliary/util/u_caps.c index 048bd5c34da..c7c1e830e01 100644 --- a/src/gallium/auxiliary/util/u_caps.c +++ b/src/gallium/auxiliary/util/u_caps.c @@ -73,6 +73,7 @@ util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out) *out = i - 2; return FALSE; } + break; case UTIL_CAPS_CHECK_UNIMPLEMENTED: *out = i - 1; return FALSE; diff --git a/src/gallium/auxiliary/util/u_clear.h b/src/gallium/auxiliary/util/u_clear.h index 2c32db61756..40da2d75a72 100644 --- a/src/gallium/auxiliary/util/u_clear.h +++ b/src/gallium/auxiliary/util/u_clear.h @@ -33,6 +33,7 @@ #include "pipe/p_state.h" #include "util/u_pack_color.h" #include "util/u_rect.h" +#include "util/u_surface.h" /** diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h index fb6ade5c06b..8ba076949b6 100644 --- a/src/gallium/auxiliary/util/u_format.h +++ b/src/gallium/auxiliary/util/u_format.h @@ -338,6 +338,34 @@ util_format_name(enum pipe_format format) return desc->name; } +static INLINE const char * +util_format_short_name(enum pipe_format format) +{ + const struct util_format_description *desc = util_format_description(format); + + assert(desc); + if (!desc) { + return "???"; + } + + return desc->short_name; +} + +/** + * Whether this format is plain, see UTIL_FORMAT_LAYOUT_PLAIN for more info. + */ +static INLINE boolean +util_format_is_plain(enum pipe_format format) +{ + const struct util_format_description *desc = util_format_description(format); + + if (!format) { + return FALSE; + } + + return desc->layout == UTIL_FORMAT_LAYOUT_PLAIN ? TRUE : FALSE; +} + static INLINE boolean util_format_is_s3tc(enum pipe_format format) { diff --git a/src/gallium/auxiliary/util/u_format_s3tc.c b/src/gallium/auxiliary/util/u_format_s3tc.c index 5b279b8fe26..bb989c29d81 100644 --- a/src/gallium/auxiliary/util/u_format_s3tc.c +++ b/src/gallium/auxiliary/util/u_format_s3tc.c @@ -120,7 +120,7 @@ util_format_s3tc_init(void) library = util_dl_open(DXTN_LIBNAME); if (!library) { debug_printf("couldn't open " DXTN_LIBNAME ", software DXTn " - "compression/decompression unavailable"); + "compression/decompression unavailable\n"); return; } @@ -142,7 +142,7 @@ util_format_s3tc_init(void) !util_format_dxtn_pack) { debug_printf("couldn't reference all symbols in " DXTN_LIBNAME ", software DXTn compression/decompression " - "unavailable"); + "unavailable\n"); util_dl_close(library); return; } diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c new file mode 100644 index 00000000000..bdac12dbca2 --- /dev/null +++ b/src/gallium/auxiliary/util/u_framebuffer.c @@ -0,0 +1,111 @@ +/************************************************************************** + * + * Copyright 2009-2010 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + +/** + * @file + * Framebuffer utility functions. + * + * @author Brian Paul + */ + + +#include "pipe/p_screen.h" +#include "pipe/p_state.h" +#include "pipe/p_defines.h" +#include "util/u_inlines.h" + +#include "util/u_memory.h" +#include "util/u_framebuffer.h" + + +/** + * Compare pipe_framebuffer_state objects. + * \return TRUE if same, FALSE if different + */ +boolean +util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, + const struct pipe_framebuffer_state *src) +{ + unsigned i; + + if (dst->width != src->width || + dst->height != src->height) + return FALSE; + + for (i = 0; i < Elements(src->cbufs); i++) { + if (dst->cbufs[i] != src->cbufs[i]) { + return FALSE; + } + } + + if (dst->nr_cbufs != src->nr_cbufs) { + return FALSE; + } + + if (dst->zsbuf != src->zsbuf) { + return FALSE; + } + + return TRUE; +} + + +/** + * Copy framebuffer state from src to dst, updating refcounts. + */ +void +util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, + const struct pipe_framebuffer_state *src) +{ + unsigned i; + + dst->width = src->width; + dst->height = src->height; + + for (i = 0; i < Elements(src->cbufs); i++) { + pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]); + } + + dst->nr_cbufs = src->nr_cbufs; + + pipe_surface_reference(&dst->zsbuf, src->zsbuf); +} + + +void +util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb) +{ + unsigned i; + + for (i = 0; i < fb->nr_cbufs; i++) { + pipe_surface_reference(&fb->cbufs[i], NULL); + } + + pipe_surface_reference(&fb->zsbuf, NULL); + + fb->width = fb->height = 0; + fb->nr_cbufs = 0; +} diff --git a/src/gallium/auxiliary/util/u_framebuffer.h b/src/gallium/auxiliary/util/u_framebuffer.h new file mode 100644 index 00000000000..adf1254e1b6 --- /dev/null +++ b/src/gallium/auxiliary/util/u_framebuffer.h @@ -0,0 +1,49 @@ +/************************************************************************** + * + * Copyright 2009-2010 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + + +#ifndef U_FRAMEBUFFER_H +#define U_FRAMEBUFFER_H + + +#include "pipe/p_compiler.h" +#include "pipe/p_state.h" + + +extern boolean +util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, + const struct pipe_framebuffer_state *src); + +extern void +util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, + const struct pipe_framebuffer_state *src); + + +extern void +util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb); + + +#endif /* U_FRAMEBUFFER_H */ diff --git a/src/gallium/auxiliary/util/u_rect.c b/src/gallium/auxiliary/util/u_rect.c index 098cdfd58b1..9bbcf1c8c49 100644 --- a/src/gallium/auxiliary/util/u_rect.c +++ b/src/gallium/auxiliary/util/u_rect.c @@ -30,12 +30,7 @@ */ -#include "pipe/p_defines.h" -#include "pipe/p_format.h" -#include "pipe/p_context.h" -#include "pipe/p_screen.h" #include "util/u_format.h" -#include "util/u_inlines.h" #include "util/u_rect.h" @@ -152,156 +147,3 @@ util_fill_rect(ubyte * dst, break; } } - - - -/** - * Fallback function for pipe->surface_copy(). - * Note: (X,Y)=(0,0) is always the upper-left corner. - * if do_flip, flip the image vertically on its way from src rect to dst rect. - * XXX should probably put this in new u_surface.c file... - */ -void -util_surface_copy(struct pipe_context *pipe, - boolean do_flip, - struct pipe_surface *dst, - unsigned dst_x, unsigned dst_y, - struct pipe_surface *src, - unsigned src_x, unsigned src_y, - unsigned w, unsigned h) -{ - struct pipe_transfer *src_trans, *dst_trans; - void *dst_map; - const void *src_map; - enum pipe_format src_format, dst_format; - - assert(src->texture && dst->texture); - if (!src->texture || !dst->texture) - return; - - src_format = src->texture->format; - dst_format = dst->texture->format; - - src_trans = pipe_get_transfer(pipe, - src->texture, - src->face, - src->level, - src->zslice, - PIPE_TRANSFER_READ, - src_x, src_y, w, h); - - dst_trans = pipe_get_transfer(pipe, - dst->texture, - dst->face, - dst->level, - dst->zslice, - PIPE_TRANSFER_WRITE, - dst_x, dst_y, w, h); - - assert(util_format_get_blocksize(dst_format) == util_format_get_blocksize(src_format)); - assert(util_format_get_blockwidth(dst_format) == util_format_get_blockwidth(src_format)); - assert(util_format_get_blockheight(dst_format) == util_format_get_blockheight(src_format)); - - src_map = pipe->transfer_map(pipe, src_trans); - dst_map = pipe->transfer_map(pipe, dst_trans); - - assert(src_map); - assert(dst_map); - - if (src_map && dst_map) { - /* If do_flip, invert src_y position and pass negative src stride */ - util_copy_rect(dst_map, - dst_format, - dst_trans->stride, - 0, 0, - w, h, - src_map, - do_flip ? -(int) src_trans->stride : src_trans->stride, - 0, - do_flip ? h - 1 : 0); - } - - pipe->transfer_unmap(pipe, src_trans); - pipe->transfer_unmap(pipe, dst_trans); - - pipe->transfer_destroy(pipe, src_trans); - pipe->transfer_destroy(pipe, dst_trans); -} - - - -#define UBYTE_TO_USHORT(B) ((B) | ((B) << 8)) - - -/** - * Fallback for pipe->surface_fill() function. - * XXX should probably put this in new u_surface.c file... - */ -void -util_surface_fill(struct pipe_context *pipe, - struct pipe_surface *dst, - unsigned dstx, unsigned dsty, - unsigned width, unsigned height, unsigned value) -{ - struct pipe_transfer *dst_trans; - void *dst_map; - - assert(dst->texture); - if (!dst->texture) - return; - dst_trans = pipe_get_transfer(pipe, - dst->texture, - dst->face, - dst->level, - dst->zslice, - PIPE_TRANSFER_WRITE, - dstx, dsty, width, height); - - dst_map = pipe->transfer_map(pipe, dst_trans); - - assert(dst_map); - - if (dst_map) { - assert(dst_trans->stride > 0); - - switch (util_format_get_blocksize(dst->texture->format)) { - case 1: - case 2: - case 4: - util_fill_rect(dst_map, dst->texture->format, - dst_trans->stride, - 0, 0, width, height, value); - break; - case 8: - { - /* expand the 4-byte clear value to an 8-byte value */ - ushort *row = (ushort *) dst_map; - ushort val0 = UBYTE_TO_USHORT((value >> 0) & 0xff); - ushort val1 = UBYTE_TO_USHORT((value >> 8) & 0xff); - ushort val2 = UBYTE_TO_USHORT((value >> 16) & 0xff); - ushort val3 = UBYTE_TO_USHORT((value >> 24) & 0xff); - unsigned i, j; - val0 = (val0 << 8) | val0; - val1 = (val1 << 8) | val1; - val2 = (val2 << 8) | val2; - val3 = (val3 << 8) | val3; - for (i = 0; i < height; i++) { - for (j = 0; j < width; j++) { - row[j*4+0] = val0; - row[j*4+1] = val1; - row[j*4+2] = val2; - row[j*4+3] = val3; - } - row += dst_trans->stride/2; - } - } - break; - default: - assert(0); - break; - } - } - - pipe->transfer_unmap(pipe, dst_trans); - pipe->transfer_destroy(pipe, dst_trans); -} diff --git a/src/gallium/auxiliary/util/u_rect.h b/src/gallium/auxiliary/util/u_rect.h index b44d821904b..40d57e662d7 100644 --- a/src/gallium/auxiliary/util/u_rect.h +++ b/src/gallium/auxiliary/util/u_rect.h @@ -37,9 +37,6 @@ #include "pipe/p_format.h" -struct pipe_context; -struct pipe_surface; - extern void util_copy_rect(ubyte * dst, enum pipe_format format, @@ -53,20 +50,4 @@ util_fill_rect(ubyte * dst, enum pipe_format format, unsigned width, unsigned height, uint32_t value); -extern void -util_surface_copy(struct pipe_context *pipe, - boolean do_flip, - struct pipe_surface *dst, - unsigned dst_x, unsigned dst_y, - struct pipe_surface *src, - unsigned src_x, unsigned src_y, - unsigned w, unsigned h); - -extern void -util_surface_fill(struct pipe_context *pipe, - struct pipe_surface *dst, - unsigned dstx, unsigned dsty, - unsigned width, unsigned height, unsigned value); - - #endif /* U_RECT_H */ diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c index 42440d0d673..b47c92ca28f 100644 --- a/src/gallium/auxiliary/util/u_surface.c +++ b/src/gallium/auxiliary/util/u_surface.c @@ -32,12 +32,14 @@ */ +#include "pipe/p_defines.h" #include "pipe/p_screen.h" #include "pipe/p_state.h" -#include "pipe/p_defines.h" -#include "util/u_inlines.h" +#include "util/u_format.h" +#include "util/u_inlines.h" #include "util/u_memory.h" +#include "util/u_rect.h" #include "util/u_surface.h" @@ -118,70 +120,150 @@ util_destroy_rgba_surface(struct pipe_resource *texture, /** - * Compare pipe_framebuffer_state objects. - * \return TRUE if same, FALSE if different + * Fallback function for pipe->surface_copy(). + * Note: (X,Y)=(0,0) is always the upper-left corner. + * if do_flip, flip the image vertically on its way from src rect to dst rect. */ -boolean -util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, - const struct pipe_framebuffer_state *src) +void +util_surface_copy(struct pipe_context *pipe, + boolean do_flip, + struct pipe_surface *dst, + unsigned dst_x, unsigned dst_y, + struct pipe_surface *src, + unsigned src_x, unsigned src_y, + unsigned w, unsigned h) { - unsigned i; - - if (dst->width != src->width || - dst->height != src->height) - return FALSE; - - for (i = 0; i < Elements(src->cbufs); i++) { - if (dst->cbufs[i] != src->cbufs[i]) { - return FALSE; - } - } - - if (dst->nr_cbufs != src->nr_cbufs) { - return FALSE; + struct pipe_transfer *src_trans, *dst_trans; + void *dst_map; + const void *src_map; + enum pipe_format src_format, dst_format; + + assert(src->texture && dst->texture); + if (!src->texture || !dst->texture) + return; + + src_format = src->texture->format; + dst_format = dst->texture->format; + + src_trans = pipe_get_transfer(pipe, + src->texture, + src->face, + src->level, + src->zslice, + PIPE_TRANSFER_READ, + src_x, src_y, w, h); + + dst_trans = pipe_get_transfer(pipe, + dst->texture, + dst->face, + dst->level, + dst->zslice, + PIPE_TRANSFER_WRITE, + dst_x, dst_y, w, h); + + assert(util_format_get_blocksize(dst_format) == util_format_get_blocksize(src_format)); + assert(util_format_get_blockwidth(dst_format) == util_format_get_blockwidth(src_format)); + assert(util_format_get_blockheight(dst_format) == util_format_get_blockheight(src_format)); + + src_map = pipe->transfer_map(pipe, src_trans); + dst_map = pipe->transfer_map(pipe, dst_trans); + + assert(src_map); + assert(dst_map); + + if (src_map && dst_map) { + /* If do_flip, invert src_y position and pass negative src stride */ + util_copy_rect(dst_map, + dst_format, + dst_trans->stride, + 0, 0, + w, h, + src_map, + do_flip ? -(int) src_trans->stride : src_trans->stride, + 0, + do_flip ? h - 1 : 0); } - if (dst->zsbuf != src->zsbuf) { - return FALSE; - } + pipe->transfer_unmap(pipe, src_trans); + pipe->transfer_unmap(pipe, dst_trans); - return TRUE; + pipe->transfer_destroy(pipe, src_trans); + pipe->transfer_destroy(pipe, dst_trans); } -/** - * Copy framebuffer state from src to dst, updating refcounts. - */ -void -util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, - const struct pipe_framebuffer_state *src) -{ - unsigned i; - - dst->width = src->width; - dst->height = src->height; - for (i = 0; i < Elements(src->cbufs); i++) { - pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]); - } - - dst->nr_cbufs = src->nr_cbufs; - - pipe_surface_reference(&dst->zsbuf, src->zsbuf); -} +#define UBYTE_TO_USHORT(B) ((B) | ((B) << 8)) +/** + * Fallback for pipe->surface_fill() function. + */ void -util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb) +util_surface_fill(struct pipe_context *pipe, + struct pipe_surface *dst, + unsigned dstx, unsigned dsty, + unsigned width, unsigned height, unsigned value) { - unsigned i; - - for (i = 0; i < fb->nr_cbufs; i++) { - pipe_surface_reference(&fb->cbufs[i], NULL); + struct pipe_transfer *dst_trans; + void *dst_map; + + assert(dst->texture); + if (!dst->texture) + return; + dst_trans = pipe_get_transfer(pipe, + dst->texture, + dst->face, + dst->level, + dst->zslice, + PIPE_TRANSFER_WRITE, + dstx, dsty, width, height); + + dst_map = pipe->transfer_map(pipe, dst_trans); + + assert(dst_map); + + if (dst_map) { + assert(dst_trans->stride > 0); + + switch (util_format_get_blocksize(dst->texture->format)) { + case 1: + case 2: + case 4: + util_fill_rect(dst_map, dst->texture->format, + dst_trans->stride, + 0, 0, width, height, value); + break; + case 8: + { + /* expand the 4-byte clear value to an 8-byte value */ + ushort *row = (ushort *) dst_map; + ushort val0 = UBYTE_TO_USHORT((value >> 0) & 0xff); + ushort val1 = UBYTE_TO_USHORT((value >> 8) & 0xff); + ushort val2 = UBYTE_TO_USHORT((value >> 16) & 0xff); + ushort val3 = UBYTE_TO_USHORT((value >> 24) & 0xff); + unsigned i, j; + val0 = (val0 << 8) | val0; + val1 = (val1 << 8) | val1; + val2 = (val2 << 8) | val2; + val3 = (val3 << 8) | val3; + for (i = 0; i < height; i++) { + for (j = 0; j < width; j++) { + row[j*4+0] = val0; + row[j*4+1] = val1; + row[j*4+2] = val2; + row[j*4+3] = val3; + } + row += dst_trans->stride/2; + } + } + break; + default: + assert(0); + break; + } } - pipe_surface_reference(&fb->zsbuf, NULL); - - fb->width = fb->height = 0; - fb->nr_cbufs = 0; + pipe->transfer_unmap(pipe, dst_trans); + pipe->transfer_destroy(pipe, dst_trans); } diff --git a/src/gallium/auxiliary/util/u_surface.h b/src/gallium/auxiliary/util/u_surface.h index 119fcd4ce8e..c43169b5278 100644 --- a/src/gallium/auxiliary/util/u_surface.h +++ b/src/gallium/auxiliary/util/u_surface.h @@ -62,17 +62,22 @@ util_destroy_rgba_surface(struct pipe_resource *texture, struct pipe_surface *surface); -extern boolean -util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst, - const struct pipe_framebuffer_state *src); extern void -util_copy_framebuffer_state(struct pipe_framebuffer_state *dst, - const struct pipe_framebuffer_state *src); - +util_surface_copy(struct pipe_context *pipe, + boolean do_flip, + struct pipe_surface *dst, + unsigned dst_x, unsigned dst_y, + struct pipe_surface *src, + unsigned src_x, unsigned src_y, + unsigned w, unsigned h); extern void -util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb); +util_surface_fill(struct pipe_context *pipe, + struct pipe_surface *dst, + unsigned dstx, unsigned dsty, + unsigned width, unsigned height, unsigned value); + #endif /* U_SURFACE_H */ diff --git a/src/gallium/drivers/cell/ppu/cell_surface.c b/src/gallium/drivers/cell/ppu/cell_surface.c index ffb8595d828..6696a4591c1 100644 --- a/src/gallium/drivers/cell/ppu/cell_surface.c +++ b/src/gallium/drivers/cell/ppu/cell_surface.c @@ -25,7 +25,7 @@ * **************************************************************************/ -#include "util/u_rect.h" +#include "util/u_surface.h" #include "cell_context.h" #include "cell_surface.h" diff --git a/src/gallium/drivers/i965/brw_wm_debug.c b/src/gallium/drivers/i965/brw_wm_debug.c index 3d11fa074cc..e2767264e7e 100644 --- a/src/gallium/drivers/i965/brw_wm_debug.c +++ b/src/gallium/drivers/i965/brw_wm_debug.c @@ -202,7 +202,8 @@ static const char *file_strings[TGSI_FILE_COUNT+1] = { "SAMPLER", "ADDR", "IMM", - "LOOP", + "PRED", + "SV", "PAYLOAD" }; diff --git a/src/gallium/drivers/i965/intel_decode.c b/src/gallium/drivers/i965/intel_decode.c index 6c47415cac5..bd8b9174a89 100644 --- a/src/gallium/drivers/i965/intel_decode.c +++ b/src/gallium/drivers/i965/intel_decode.c @@ -40,6 +40,7 @@ #include <stdint.h> #include <string.h> +#include "util/u_string.h" #include "intel_decode.h" /*#include "intel_chipset.h"*/ @@ -478,7 +479,7 @@ i915_get_instruction_src0(const uint32_t *data, int i, char *srcname) char swizzle[100]; i915_get_instruction_src_name((a0 >> 7) & 0x7, src_nr, srcname); - sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); if (strcmp(swizzle, ".xyzw") != 0) strcat(srcname, swizzle); } @@ -496,7 +497,7 @@ i915_get_instruction_src1(const uint32_t *data, int i, char *srcname) char swizzle[100]; i915_get_instruction_src_name((a1 >> 13) & 0x7, src_nr, srcname); - sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); if (strcmp(swizzle, ".xyzw") != 0) strcat(srcname, swizzle); } @@ -513,7 +514,7 @@ i915_get_instruction_src2(const uint32_t *data, int i, char *srcname) char swizzle[100]; i915_get_instruction_src_name((a2 >> 21) & 0x7, src_nr, srcname); - sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); + util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w); if (strcmp(swizzle, ".xyzw") != 0) strcat(srcname, swizzle); } @@ -642,7 +643,7 @@ i915_decode_dcl(const uint32_t *data, uint32_t hw_offset, int i, char *instr_pre switch ((d0 >> 19) & 0x3) { case 1: - sprintf(dcl_mask, ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w); + util_snprintf(dcl_mask, sizeof(dcl_mask), ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w); if (strcmp(dcl_mask, ".") == 0) fprintf(out, "bad (empty) dcl mask\n"); @@ -976,7 +977,7 @@ decode_3d_1d(const uint32_t *data, int count, uint32_t hw_offset, int *failures, if (i + 3 >= count) BUFFER_FAIL(count, len, "3DSTATE_PIXEL_SHADER_PROGRAM"); - sprintf(instr_prefix, "PS%03d", instr); + util_snprintf(instr_prefix, sizeof(instr_prefix), "PS%03d", instr); i915_decode_instruction(data, hw_offset, i, instr_prefix); i += 3; } diff --git a/src/gallium/drivers/identity/id_context.c b/src/gallium/drivers/identity/id_context.c index 0bc8bf21966..7e62213597c 100644 --- a/src/gallium/drivers/identity/id_context.c +++ b/src/gallium/drivers/identity/id_context.c @@ -684,79 +684,67 @@ identity_flush(struct pipe_context *_pipe, static unsigned int identity_is_resource_referenced(struct pipe_context *_pipe, - struct pipe_resource *_resource, - unsigned face, - unsigned level) + struct pipe_resource *_resource, + unsigned face, + unsigned level) { struct identity_context *id_pipe = identity_context(_pipe); struct identity_resource *id_resource = identity_resource(_resource); struct pipe_context *pipe = id_pipe->pipe; - struct pipe_resource *texture = id_resource->resource; + struct pipe_resource *resource = id_resource->resource; return pipe->is_resource_referenced(pipe, - texture, - face, - level); + resource, + face, + level); } static struct pipe_sampler_view * -identity_create_sampler_view(struct pipe_context *pipe, - struct pipe_resource *texture, - const struct pipe_sampler_view *templ) +identity_context_create_sampler_view(struct pipe_context *_pipe, + struct pipe_resource *_resource, + const struct pipe_sampler_view *templ) { - struct identity_context *id_pipe = identity_context(pipe); - struct identity_resource *id_resource = identity_resource(texture); - struct pipe_context *pipe_unwrapped = id_pipe->pipe; - struct pipe_resource *texture_unwrapped = id_resource->resource; - struct identity_sampler_view *view = MALLOC(sizeof(struct identity_sampler_view)); - - view->sampler_view = pipe_unwrapped->create_sampler_view(pipe_unwrapped, - texture_unwrapped, - templ); + struct identity_context *id_context = identity_context(_pipe); + struct identity_resource *id_resource = identity_resource(_resource); + struct pipe_context *pipe = id_context->pipe; + struct pipe_resource *resource = id_resource->resource; + struct pipe_sampler_view *result; - view->base = *templ; - view->base.reference.count = 1; - view->base.texture = NULL; - pipe_resource_reference(&view->base.texture, texture); - view->base.context = pipe; + result = pipe->create_sampler_view(pipe, + resource, + templ); - return &view->base; + if (result) + return identity_sampler_view_create(id_context, id_resource, result); + return NULL; } static void -identity_sampler_view_destroy(struct pipe_context *pipe, - struct pipe_sampler_view *view) +identity_context_sampler_view_destroy(struct pipe_context *_pipe, + struct pipe_sampler_view *_view) { - struct identity_context *id_pipe = identity_context(pipe); - struct identity_sampler_view *id_view = identity_sampler_view(view); - struct pipe_context *pipe_unwrapped = id_pipe->pipe; - struct pipe_sampler_view *view_unwrapped = id_view->sampler_view; - - pipe_unwrapped->sampler_view_destroy(pipe_unwrapped, - view_unwrapped); - - pipe_resource_reference(&view->texture, NULL); - FREE(view); + identity_sampler_view_destroy(identity_context(_pipe), + identity_sampler_view(_view)); } static struct pipe_transfer * identity_context_get_transfer(struct pipe_context *_context, - struct pipe_resource *_resource, - struct pipe_subresource sr, - unsigned usage, - const struct pipe_box *box) + struct pipe_resource *_resource, + struct pipe_subresource sr, + unsigned usage, + const struct pipe_box *box) { struct identity_context *id_context = identity_context(_context); struct identity_resource *id_resource = identity_resource(_resource); struct pipe_context *context = id_context->pipe; - struct pipe_resource *texture = id_resource->resource; + struct pipe_resource *resource = id_resource->resource; struct pipe_transfer *result; result = context->get_transfer(context, - texture, - sr, - usage, - box); + resource, + sr, + usage, + box); if (result) return identity_transfer_create(id_context, id_resource, result); @@ -765,7 +753,7 @@ identity_context_get_transfer(struct pipe_context *_context, static void identity_context_transfer_destroy(struct pipe_context *_pipe, - struct pipe_transfer *_transfer) + struct pipe_transfer *_transfer) { identity_transfer_destroy(identity_context(_pipe), identity_transfer(_transfer)); @@ -773,7 +761,7 @@ identity_context_transfer_destroy(struct pipe_context *_pipe, static void * identity_context_transfer_map(struct pipe_context *_context, - struct pipe_transfer *_transfer) + struct pipe_transfer *_transfer) { struct identity_context *id_context = identity_context(_context); struct identity_transfer *id_transfer = identity_transfer(_transfer); @@ -781,15 +769,15 @@ identity_context_transfer_map(struct pipe_context *_context, struct pipe_transfer *transfer = id_transfer->transfer; return context->transfer_map(context, - transfer); + transfer); } static void -identity_context_transfer_flush_region( struct pipe_context *_context, - struct pipe_transfer *_transfer, - const struct pipe_box *box) +identity_context_transfer_flush_region(struct pipe_context *_context, + struct pipe_transfer *_transfer, + const struct pipe_box *box) { struct identity_context *id_context = identity_context(_context); struct identity_transfer *id_transfer = identity_transfer(_transfer); @@ -797,14 +785,14 @@ identity_context_transfer_flush_region( struct pipe_context *_context, struct pipe_transfer *transfer = id_transfer->transfer; context->transfer_flush_region(context, - transfer, - box); + transfer, + box); } static void identity_context_transfer_unmap(struct pipe_context *_context, - struct pipe_transfer *_transfer) + struct pipe_transfer *_transfer) { struct identity_context *id_context = identity_context(_context); struct identity_transfer *id_transfer = identity_transfer(_transfer); @@ -812,33 +800,33 @@ identity_context_transfer_unmap(struct pipe_context *_context, struct pipe_transfer *transfer = id_transfer->transfer; context->transfer_unmap(context, - transfer); + transfer); } static void -identity_context_transfer_inline_write( struct pipe_context *_context, - struct pipe_resource *_resource, - struct pipe_subresource sr, - unsigned usage, - const struct pipe_box *box, - const void *data, - unsigned stride, - unsigned slice_stride) +identity_context_transfer_inline_write(struct pipe_context *_context, + struct pipe_resource *_resource, + struct pipe_subresource sr, + unsigned usage, + const struct pipe_box *box, + const void *data, + unsigned stride, + unsigned slice_stride) { struct identity_context *id_context = identity_context(_context); struct identity_resource *id_resource = identity_resource(_resource); struct pipe_context *context = id_context->pipe; - struct pipe_resource *texture = id_resource->resource; + struct pipe_resource *resource = id_resource->resource; context->transfer_inline_write(context, - texture, - sr, - usage, - box, - data, - stride, - slice_stride); + resource, + sr, + usage, + box, + data, + stride, + slice_stride); } @@ -905,8 +893,8 @@ identity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe) id_pipe->base.clear = identity_clear; id_pipe->base.flush = identity_flush; id_pipe->base.is_resource_referenced = identity_is_resource_referenced; - id_pipe->base.create_sampler_view = identity_create_sampler_view; - id_pipe->base.sampler_view_destroy = identity_sampler_view_destroy; + id_pipe->base.create_sampler_view = identity_context_create_sampler_view; + id_pipe->base.sampler_view_destroy = identity_context_sampler_view_destroy; id_pipe->base.get_transfer = identity_context_get_transfer; id_pipe->base.transfer_destroy = identity_context_transfer_destroy; id_pipe->base.transfer_map = identity_context_transfer_map; diff --git a/src/gallium/drivers/identity/id_objects.c b/src/gallium/drivers/identity/id_objects.c index d50914e7d5d..ca4743f9ef7 100644 --- a/src/gallium/drivers/identity/id_objects.c +++ b/src/gallium/drivers/identity/id_objects.c @@ -108,9 +108,45 @@ identity_surface_destroy(struct identity_surface *id_surface) } +struct pipe_sampler_view * +identity_sampler_view_create(struct identity_context *id_context, + struct identity_resource *id_resource, + struct pipe_sampler_view *view) +{ + struct identity_sampler_view *id_view; + + if (!view) + goto error; + + assert(view->texture == id_resource->resource); + + id_view = MALLOC(sizeof(struct identity_sampler_view)); + + id_view->base = *view; + id_view->base.reference.count = 1; + id_view->base.texture = NULL; + pipe_resource_reference(&id_view->base.texture, id_resource->resource); + id_view->base.context = id_context->pipe; + + return &id_view->base; +error: + return NULL; +} + +void +identity_sampler_view_destroy(struct identity_context *id_context, + struct identity_sampler_view *id_view) +{ + pipe_resource_reference(&id_view->base.texture, NULL); + id_context->pipe->sampler_view_destroy(id_context->pipe, + id_view->sampler_view); + FREE(id_view); +} + + struct pipe_transfer * identity_transfer_create(struct identity_context *id_context, - struct identity_resource *id_resource, + struct identity_resource *id_resource, struct pipe_transfer *transfer) { struct identity_transfer *id_transfer; @@ -144,8 +180,8 @@ identity_transfer_destroy(struct identity_context *id_context, struct identity_transfer *id_transfer) { pipe_resource_reference(&id_transfer->base.resource, NULL); - id_context->pipe->transfer_destroy(id_context->pipe, - id_transfer->transfer); + id_transfer->pipe->transfer_destroy(id_context->pipe, + id_transfer->transfer); FREE(id_transfer); } diff --git a/src/gallium/drivers/identity/id_objects.h b/src/gallium/drivers/identity/id_objects.h index 058cf3009df..5eea10b0b5a 100644 --- a/src/gallium/drivers/identity/id_objects.h +++ b/src/gallium/drivers/identity/id_objects.h @@ -142,7 +142,7 @@ identity_transfer_unwrap(struct pipe_transfer *_transfer) struct pipe_resource * identity_resource_create(struct identity_screen *id_screen, - struct pipe_resource *resource); + struct pipe_resource *resource); void identity_resource_destroy(struct identity_resource *id_resource); @@ -154,9 +154,18 @@ identity_surface_create(struct identity_resource *id_resource, void identity_surface_destroy(struct identity_surface *id_surface); +struct pipe_sampler_view * +identity_sampler_view_create(struct identity_context *id_context, + struct identity_resource *id_resource, + struct pipe_sampler_view *view); + +void +identity_sampler_view_destroy(struct identity_context *id_context, + struct identity_sampler_view *id_sampler_view); + struct pipe_transfer * identity_transfer_create(struct identity_context *id_context, - struct identity_resource *id_resource, + struct identity_resource *id_resource, struct pipe_transfer *transfer); void diff --git a/src/gallium/drivers/identity/id_screen.c b/src/gallium/drivers/identity/id_screen.c index 52573b211fb..7671bded981 100644 --- a/src/gallium/drivers/identity/id_screen.c +++ b/src/gallium/drivers/identity/id_screen.c @@ -120,14 +120,14 @@ identity_screen_context_create(struct pipe_screen *_screen, static struct pipe_resource * identity_screen_resource_create(struct pipe_screen *_screen, - const struct pipe_resource *templat) + const struct pipe_resource *templat) { struct identity_screen *id_screen = identity_screen(_screen); struct pipe_screen *screen = id_screen->screen; struct pipe_resource *result; result = screen->resource_create(screen, - templat); + templat); if (result) return identity_resource_create(id_screen, result); @@ -136,8 +136,8 @@ identity_screen_resource_create(struct pipe_screen *_screen, static struct pipe_resource * identity_screen_resource_from_handle(struct pipe_screen *_screen, - const struct pipe_resource *templ, - struct winsys_handle *handle) + const struct pipe_resource *templ, + struct winsys_handle *handle) { struct identity_screen *id_screen = identity_screen(_screen); struct pipe_screen *screen = id_screen->screen; @@ -154,44 +154,44 @@ identity_screen_resource_from_handle(struct pipe_screen *_screen, static boolean identity_screen_resource_get_handle(struct pipe_screen *_screen, - struct pipe_resource *_texture, - struct winsys_handle *handle) + struct pipe_resource *_resource, + struct winsys_handle *handle) { struct identity_screen *id_screen = identity_screen(_screen); - struct identity_resource *id_resource = identity_resource(_texture); + struct identity_resource *id_resource = identity_resource(_resource); struct pipe_screen *screen = id_screen->screen; - struct pipe_resource *texture = id_resource->resource; + struct pipe_resource *resource = id_resource->resource; /* TODO trace call */ - return screen->resource_get_handle(screen, texture, handle); + return screen->resource_get_handle(screen, resource, handle); } static void identity_screen_resource_destroy(struct pipe_screen *screen, - struct pipe_resource *_texture) + struct pipe_resource *_resource) { - identity_resource_destroy(identity_resource(_texture)); + identity_resource_destroy(identity_resource(_resource)); } static struct pipe_surface * identity_screen_get_tex_surface(struct pipe_screen *_screen, - struct pipe_resource *_texture, + struct pipe_resource *_resource, unsigned face, unsigned level, unsigned zslice, unsigned usage) { struct identity_screen *id_screen = identity_screen(_screen); - struct identity_resource *id_resource = identity_resource(_texture); + struct identity_resource *id_resource = identity_resource(_resource); struct pipe_screen *screen = id_screen->screen; - struct pipe_resource *texture = id_resource->resource; + struct pipe_resource *resource = id_resource->resource; struct pipe_surface *result; result = screen->get_tex_surface(screen, - texture, + resource, face, level, zslice, @@ -214,7 +214,7 @@ static struct pipe_resource * identity_screen_user_buffer_create(struct pipe_screen *_screen, void *ptr, unsigned bytes, - unsigned usage) + unsigned usage) { struct identity_screen *id_screen = identity_screen(_screen); struct pipe_screen *screen = id_screen->screen; @@ -223,7 +223,7 @@ identity_screen_user_buffer_create(struct pipe_screen *_screen, result = screen->user_buffer_create(screen, ptr, bytes, - usage); + usage); if (result) return identity_resource_create(id_screen, result); diff --git a/src/gallium/drivers/llvmpipe/.gitignore b/src/gallium/drivers/llvmpipe/.gitignore index 257b72d7b2b..a1b6f56e0d2 100644 --- a/src/gallium/drivers/llvmpipe/.gitignore +++ b/src/gallium/drivers/llvmpipe/.gitignore @@ -1 +1,5 @@ lp_tile_soa.c +lp_test_blend +lp_test_conv +lp_test_format +lp_test_printf diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c index 466a2f54fbe..30e206a2b42 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.c +++ b/src/gallium/drivers/llvmpipe/lp_jit.c @@ -185,6 +185,8 @@ lp_jit_screen_init(struct llvmpipe_screen *screen) /* These are the passes currently listed in llvm-c/Transforms/Scalar.h, * but there are more on SVN. */ /* TODO: Add more passes */ + LLVMAddCFGSimplificationPass(screen->pass); + LLVMAddPromoteMemoryToRegisterPass(screen->pass); LLVMAddConstantPropagationPass(screen->pass); if(util_cpu_caps.has_sse4_1) { /* FIXME: There is a bug in this pass, whereby the combination of fptosi @@ -193,9 +195,7 @@ lp_jit_screen_init(struct llvmpipe_screen *screen) */ LLVMAddInstructionCombiningPass(screen->pass); } - LLVMAddPromoteMemoryToRegisterPass(screen->pass); LLVMAddGVNPass(screen->pass); - LLVMAddCFGSimplificationPass(screen->pass); } lp_jit_init_globals(screen); diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c index 1482a777ff8..887f2dbad91 100644 --- a/src/gallium/drivers/llvmpipe/lp_scene.c +++ b/src/gallium/drivers/llvmpipe/lp_scene.c @@ -25,6 +25,7 @@ * **************************************************************************/ +#include "util/u_framebuffer.h" #include "util/u_math.h" #include "util/u_memory.h" #include "util/u_inlines.h" diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 21509560084..1a2cd55b164 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -33,6 +33,7 @@ */ #include "pipe/p_defines.h" +#include "util/u_framebuffer.h" #include "util/u_inlines.h" #include "util/u_memory.h" #include "util/u_pack_color.h" diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index 965777b6411..5f861d6ca4d 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -618,7 +618,6 @@ generate_fragment(struct llvmpipe_context *lp, struct lp_type fs_type; struct lp_type blend_type; LLVMTypeRef fs_elem_type; - LLVMTypeRef fs_vec_type; LLVMTypeRef fs_int_vec_type; LLVMTypeRef blend_vec_type; LLVMTypeRef arg_types[15]; @@ -675,7 +674,6 @@ generate_fragment(struct llvmpipe_context *lp, */ fs_elem_type = lp_build_elem_type(fs_type); - fs_vec_type = lp_build_vec_type(fs_type); fs_int_vec_type = lp_build_int_vec_type(fs_type); blend_vec_type = lp_build_vec_type(blend_type); @@ -1064,6 +1062,34 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe, /** + * Return the blend factor equivalent to a destination alpha of one. + */ +static INLINE unsigned +force_dst_alpha_one(unsigned factor, boolean alpha) +{ + switch(factor) { + case PIPE_BLENDFACTOR_DST_ALPHA: + return PIPE_BLENDFACTOR_ONE; + case PIPE_BLENDFACTOR_INV_DST_ALPHA: + return PIPE_BLENDFACTOR_ZERO; + case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: + return PIPE_BLENDFACTOR_ZERO; + } + + if (alpha) { + switch(factor) { + case PIPE_BLENDFACTOR_DST_COLOR: + return PIPE_BLENDFACTOR_ONE; + case PIPE_BLENDFACTOR_INV_DST_COLOR: + return PIPE_BLENDFACTOR_ZERO; + } + } + + return factor; +} + + +/** * We need to generate several variants of the fragment pipeline to match * all the combinations of the contributing state atoms. * @@ -1104,6 +1130,7 @@ make_variant_key(struct llvmpipe_context *lp, key->nr_cbufs = lp->framebuffer.nr_cbufs; for (i = 0; i < lp->framebuffer.nr_cbufs; i++) { + struct pipe_rt_blend_state *blend_rt = &key->blend.rt[i]; const struct util_format_description *format_desc; unsigned chan; @@ -1111,7 +1138,7 @@ make_variant_key(struct llvmpipe_context *lp, assert(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB || format_desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB); - key->blend.rt[i].colormask = lp->blend->rt[i].colormask; + blend_rt->colormask = lp->blend->rt[i].colormask; /* mask out color channels not present in the color buffer. * Should be simple to incorporate per-cbuf writemasks: @@ -1120,7 +1147,27 @@ make_variant_key(struct llvmpipe_context *lp, enum util_format_swizzle swizzle = format_desc->swizzle[chan]; if(swizzle > UTIL_FORMAT_SWIZZLE_W) - key->blend.rt[i].colormask &= ~(1 << chan); + blend_rt->colormask &= ~(1 << chan); + } + + /* + * Our swizzled render tiles always have an alpha channel, but the linear + * render target format often does not, so force here the dst alpha to be + * one. + * + * This is not a mere optimization. Wrong results will be produced if the + * dst alpha is used, the dst format does not have alpha, and the previous + * rendering was not flushed from the swizzled to linear buffer. For + * example, NonPowTwo DCT. + * + * TODO: This should be generalized to all channels for better + * performance, but only alpha causes correctness issues. + */ + if (format_desc->swizzle[3] > UTIL_FORMAT_SWIZZLE_W) { + blend_rt->rgb_src_factor = force_dst_alpha_one(blend_rt->rgb_src_factor, FALSE); + blend_rt->rgb_dst_factor = force_dst_alpha_one(blend_rt->rgb_dst_factor, FALSE); + blend_rt->alpha_src_factor = force_dst_alpha_one(blend_rt->alpha_src_factor, TRUE); + blend_rt->alpha_dst_factor = force_dst_alpha_one(blend_rt->alpha_dst_factor, TRUE); } } diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c index 63b8f27b39c..4b135aaf8ba 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c @@ -30,6 +30,7 @@ #include "pipe/p_state.h" #include "util/u_inlines.h" +#include "util/u_framebuffer.h" #include "util/u_surface.h" #include "lp_context.h" #include "lp_scene.h" diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c index 8bd83f576f4..245171120dd 100644 --- a/src/gallium/drivers/llvmpipe/lp_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_surface.c @@ -26,6 +26,7 @@ **************************************************************************/ #include "util/u_rect.h" +#include "util/u_surface.h" #include "lp_context.h" #include "lp_flush.h" #include "lp_limits.h" diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c index 74b7393e4ec..d3a9d39f616 100644 --- a/src/gallium/drivers/llvmpipe/lp_tex_sample.c +++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.c @@ -170,7 +170,10 @@ lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base, unsigned unit, unsigned num_coords, const LLVMValueRef *coords, - LLVMValueRef lodbias, + const LLVMValueRef *ddx, + const LLVMValueRef *ddy, + LLVMValueRef lod_bias, /* optional */ + LLVMValueRef explicit_lod, /* optional */ LLVMValueRef *texel) { struct lp_llvm_sampler_soa *sampler = (struct lp_llvm_sampler_soa *)base; @@ -182,9 +185,9 @@ lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base, &sampler->dynamic_state.base, type, unit, - num_coords, - coords, - lodbias, + num_coords, coords, + ddx, ddy, + lod_bias, explicit_lod, texel); } diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c index b8b6b12120b..0156ff95ff9 100644 --- a/src/gallium/drivers/nv50/nv50_program.c +++ b/src/gallium/drivers/nv50/nv50_program.c @@ -3169,15 +3169,16 @@ nv50_program_tx_insn(struct nv50_pc *pc, if (pc->p->type == PIPE_SHADER_FRAGMENT) nv50_fp_move_results(pc); - /* last insn must be long so it can have the exit bit set */ - if (!is_long(pc->p->exec_tail)) - convert_to_long(pc, pc->p->exec_tail); - else - if (is_immd(pc->p->exec_tail) || + if (!pc->p->exec_tail || + is_immd(pc->p->exec_tail) || is_join(pc->p->exec_tail) || is_control_flow(pc->p->exec_tail)) emit_nop(pc); + /* last insn must be long so it can have the exit bit set */ + if (!is_long(pc->p->exec_tail)) + convert_to_long(pc, pc->p->exec_tail); + pc->p->exec_tail->inst[1] |= 1; /* set exit bit */ terminate_mbb(pc); @@ -4162,7 +4163,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p) struct pipe_transfer *transfer; if (!p->data[0] && p->immd_nr) { - struct nouveau_resource *heap = nv50->screen->immd_heap[0]; + struct nouveau_resource *heap = nv50->screen->immd_heap; if (nouveau_resource_alloc(heap, p->immd_nr, p, &p->data[0])) { while (heap->next && heap->size < p->immd_nr) { @@ -4180,7 +4181,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p) p->immd_nr, NV50_CB_PMISC); } - assert(p->param_nr <= 512); + assert(p->param_nr <= 16384); if (p->param_nr) { unsigned cb; diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c index ad17991be9a..2dd10424245 100644 --- a/src/gallium/drivers/nv50/nv50_screen.c +++ b/src/gallium/drivers/nv50/nv50_screen.c @@ -190,9 +190,7 @@ nv50_screen_destroy(struct pipe_screen *pscreen) nouveau_grobj_free(&screen->tesla); nouveau_grobj_free(&screen->eng2d); nouveau_grobj_free(&screen->m2mf); - nouveau_resource_destroy(&screen->immd_heap[0]); - nouveau_resource_destroy(&screen->parm_heap[0]); - nouveau_resource_destroy(&screen->parm_heap[1]); + nouveau_resource_destroy(&screen->immd_heap); nouveau_screen_fini(&screen->base); FREE(screen); } @@ -242,7 +240,7 @@ nv50_screen_relocs(struct nv50_screen *screen) OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl); OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl); OUT_RELOC (chan, screen->constbuf_parm[i], - ((NV50_CB_PVP + i) << 16) | 0x0800, rl, 0, 0); + ((NV50_CB_PVP + i) << 16) | 0x0000, rl, 0, 0); } } @@ -411,7 +409,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) OUT_RING (chan, (NV50_CB_AUX << 16) | 0x0200); for (i = 0; i < 3; i++) { - ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (256 * 4) * 4, + ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (4096 * 4) * 4, &screen->constbuf_parm[i]); if (ret) { nv50_screen_destroy(pscreen); @@ -420,14 +418,12 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) BEGIN_RING(chan, screen->tesla, NV50TCL_CB_DEF_ADDRESS_HIGH, 3); OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl); OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl); - OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0800); + /* CB_DEF_SET_SIZE value of 0x0000 means 65536 */ + OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0000); } - if (nouveau_resource_init(&screen->immd_heap[0], 0, 128) || - nouveau_resource_init(&screen->parm_heap[0], 0, 512) || - nouveau_resource_init(&screen->parm_heap[1], 0, 512)) - { - NOUVEAU_ERR("Error initialising constant buffers.\n"); + if (nouveau_resource_init(&screen->immd_heap, 0, 128)) { + NOUVEAU_ERR("Error initialising shader immediates heap.\n"); nv50_screen_destroy(pscreen); return NULL; } diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h index 40ebbee72e2..fbf15a75967 100644 --- a/src/gallium/drivers/nv50/nv50_screen.h +++ b/src/gallium/drivers/nv50/nv50_screen.h @@ -20,8 +20,7 @@ struct nv50_screen { struct nouveau_bo *constbuf_misc[1]; struct nouveau_bo *constbuf_parm[PIPE_SHADER_TYPES]; - struct nouveau_resource *immd_heap[1]; - struct nouveau_resource *parm_heap[PIPE_SHADER_TYPES]; + struct nouveau_resource *immd_heap; struct pipe_resource *strm_vbuf[16]; diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c index c2d9e835260..d905d95354f 100644 --- a/src/gallium/drivers/nv50/nv50_surface.c +++ b/src/gallium/drivers/nv50/nv50_surface.c @@ -31,6 +31,27 @@ #include "util/u_tile.h" #include "util/u_format.h" +/* return TRUE for formats that can be converted among each other by NV50_2D */ +static INLINE boolean +nv50_2d_format_faithful(enum pipe_format format) +{ + switch (format) { + case PIPE_FORMAT_B8G8R8A8_UNORM: + case PIPE_FORMAT_B8G8R8X8_UNORM: + case PIPE_FORMAT_B8G8R8A8_SRGB: + case PIPE_FORMAT_B8G8R8X8_SRGB: + case PIPE_FORMAT_B5G6R5_UNORM: + case PIPE_FORMAT_B5G5R5A1_UNORM: + case PIPE_FORMAT_B10G10R10A2_UNORM: + case PIPE_FORMAT_R8_UNORM: + case PIPE_FORMAT_R32G32B32A32_FLOAT: + case PIPE_FORMAT_R32G32B32_FLOAT: + return TRUE; + default: + return FALSE; + } +} + static INLINE int nv50_format(enum pipe_format format) { @@ -47,9 +68,12 @@ nv50_format(enum pipe_format format) return NV50_2D_DST_FORMAT_R5G6B5_UNORM; case PIPE_FORMAT_B5G5R5A1_UNORM: return NV50_2D_DST_FORMAT_A1R5G5B5_UNORM; + case PIPE_FORMAT_B10G10R10A2_UNORM: + return NV50_2D_DST_FORMAT_A2R10G10B10_UNORM; case PIPE_FORMAT_A8_UNORM: case PIPE_FORMAT_I8_UNORM: case PIPE_FORMAT_L8_UNORM: + case PIPE_FORMAT_R8_UNORM: return NV50_2D_DST_FORMAT_R8_UNORM; case PIPE_FORMAT_R32G32B32A32_FLOAT: return NV50_2D_DST_FORMAT_R32G32B32A32_FLOAT; @@ -178,7 +202,9 @@ nv50_surface_copy(struct pipe_context *pipe, struct nv50_context *nv50 = nv50_context(pipe); struct nv50_screen *screen = nv50->screen; - assert(src->format == dest->format); + assert((src->format == dest->format) || + (nv50_2d_format_faithful(src->format) && + nv50_2d_format_faithful(dest->format))); nv50_surface_do_copy(screen, dest, destx, desty, src, srcx, srcy, width, height); diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index 928ad300eee..85c2c149016 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -129,15 +129,16 @@ void r300_surface_copy(struct pipe_context* pipe, if (dst->texture->format != src->texture->format) { debug_printf("r300: Implementation error: Format mismatch in %s\n" " : src: %s dst: %s\n", __FUNCTION__, - util_format_name(src->texture->format), - util_format_name(dst->texture->format)); + util_format_short_name(src->texture->format), + util_format_short_name(dst->texture->format)); debug_assert(0); } if (!pipe->screen->is_format_supported(pipe->screen, old_format, src->texture->target, PIPE_BIND_RENDER_TARGET | - PIPE_BIND_SAMPLER_VIEW, 0)) { + PIPE_BIND_SAMPLER_VIEW, 0) && + util_format_is_plain(old_format)) { switch (util_format_get_blocksize(old_format)) { case 1: new_format = PIPE_FORMAT_I8_UNORM; @@ -154,7 +155,7 @@ void r300_surface_copy(struct pipe_context* pipe, default: debug_printf("r300: surface_copy: Unhandled format: %s. Falling back to software.\n" "r300: surface_copy: Software fallback doesn't work for tiled textures.\n", - util_format_name(old_format)); + util_format_short_name(old_format)); } } diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index 4f721ebb599..e84bce0010f 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -76,7 +76,6 @@ static void r300_destroy_context(struct pipe_context* context) FREE(r300->rs_block_state.state); FREE(r300->scissor_state.state); FREE(r300->textures_state.state); - FREE(r300->vap_output_state.state); FREE(r300->viewport_state.state); FREE(r300->ztop_state.state); FREE(r300->fs_constants.state); @@ -125,7 +124,6 @@ static void r300_setup_atoms(struct r300_context* r300) R300_INIT_ATOM(viewport_state, 9); R300_INIT_ATOM(rs_block_state, 0); R300_INIT_ATOM(vertex_stream_state, 0); - R300_INIT_ATOM(vap_output_state, 6); R300_INIT_ATOM(pvs_flush, 2); R300_INIT_ATOM(vs_state, 0); R300_INIT_ATOM(vs_constants, 0); @@ -149,7 +147,6 @@ static void r300_setup_atoms(struct r300_context* r300) r300->rs_block_state.state = CALLOC_STRUCT(r300_rs_block); r300->scissor_state.state = CALLOC_STRUCT(pipe_scissor_state); r300->textures_state.state = CALLOC_STRUCT(r300_textures_state); - r300->vap_output_state.state = CALLOC_STRUCT(r300_vap_output_state); r300->viewport_state.state = CALLOC_STRUCT(r300_viewport_state); r300->ztop_state.state = CALLOC_STRUCT(r300_ztop_state); r300->fs_constants.state = CALLOC_STRUCT(r300_constant_buffer); diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index a05bf3ce099..e9c8fcdc157 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -119,6 +119,10 @@ struct r300_rs_state { }; struct r300_rs_block { + uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */ + uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */ + uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */ + uint32_t ip[8]; /* R300_RS_IP_[0-7], R500_RS_IP_[0-7] */ uint32_t count; /* R300_RS_COUNT */ uint32_t inst_count; /* R300_RS_INST_COUNT */ @@ -190,12 +194,6 @@ struct r300_vertex_stream_state { unsigned count; }; -struct r300_vap_output_state { - uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */ - uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */ - uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */ -}; - struct r300_viewport_state { float xscale; /* R300_VAP_VPORT_XSCALE: 0x2098 */ float xoffset; /* R300_VAP_VPORT_XOFFSET: 0x209c */ @@ -381,7 +379,7 @@ struct r300_context { struct r300_atom query_start; /* Rasterizer state. */ struct r300_atom rs_state; - /* RS block state. */ + /* RS block state + VAP (vertex shader) output mapping state. */ struct r300_atom rs_block_state; /* Scissor state. */ struct r300_atom scissor_state; @@ -389,8 +387,6 @@ struct r300_context { struct r300_atom textures_state; /* Vertex stream formatting state. */ struct r300_atom vertex_stream_state; - /* VAP (vertex shader) output mapping state. */ - struct r300_atom vap_output_state; /* Vertex shader. */ struct r300_atom vs_state; /* Vertex shader constant buffer. */ @@ -424,6 +420,9 @@ struct r300_context { struct pipe_viewport_state viewport; + /* Stream locations for SWTCL. */ + int stream_loc_notcl[16]; + /* Flag indicating whether or not the HW is dirty. */ uint32_t dirty_hw; /* Whether polygon offset is enabled. */ diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c index 4c2836f36a8..8eb321fa08a 100644 --- a/src/gallium/drivers/r300/r300_debug.c +++ b/src/gallium/drivers/r300/r300_debug.c @@ -37,6 +37,7 @@ static struct debug_option debug_options[] = { { "cs", DBG_CS, "Command submissions (for debugging)" }, { "draw", DBG_DRAW, "Draw and emit (for debugging)" }, { "tex", DBG_TEX, "Textures (for debugging)" }, + { "texalloc", DBG_TEXALLOC, "Texture allocation (for debugging)" }, { "fall", DBG_FALL, "Fallbacks (for debugging)" }, { "rs", DBG_RS, "Rasterizer (for debugging)" }, { "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" }, diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 92b7517b8d6..23bbc6a99c8 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -717,6 +717,13 @@ void r300_emit_rs_block_state(struct r300_context* r300, DBG(r300, DBG_DRAW, "r300: RS emit:\n"); BEGIN_CS(size); + OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2); + OUT_CS(rs->vap_vtx_state_cntl); + OUT_CS(rs->vap_vsm_vtx_assm); + OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2); + OUT_CS(rs->vap_out_vtx_fmt[0]); + OUT_CS(rs->vap_out_vtx_fmt[1]); + if (r300->screen->caps.is_r500) { OUT_CS_REG_SEQ(R500_RS_IP_0, count); } else { @@ -901,25 +908,6 @@ void r300_emit_vertex_stream_state(struct r300_context* r300, END_CS; } -void r300_emit_vap_output_state(struct r300_context* r300, - unsigned size, void* state) -{ - struct r300_vap_output_state *vap_out_state = - (struct r300_vap_output_state*)state; - CS_LOCALS(r300); - - DBG(r300, DBG_DRAW, "r300: VAP emit:\n"); - - BEGIN_CS(size); - OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2); - OUT_CS(vap_out_state->vap_vtx_state_cntl); - OUT_CS(vap_out_state->vap_vsm_vtx_assm); - OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2); - OUT_CS(vap_out_state->vap_out_vtx_fmt[0]); - OUT_CS(vap_out_state->vap_out_vtx_fmt[1]); - END_CS; -} - void r300_emit_pvs_flush(struct r300_context* r300, unsigned size, void* state) { CS_LOCALS(r300); diff --git a/src/gallium/drivers/r300/r300_emit.h b/src/gallium/drivers/r300/r300_emit.h index c3eb195d4e7..3c0edf6fdca 100644 --- a/src/gallium/drivers/r300/r300_emit.h +++ b/src/gallium/drivers/r300/r300_emit.h @@ -81,9 +81,6 @@ void r300_emit_vertex_buffer(struct r300_context* r300); void r300_emit_vertex_stream_state(struct r300_context* r300, unsigned size, void* state); -void r300_emit_vap_output_state(struct r300_context* r300, - unsigned size, void* state); - void r300_emit_vs_constants(struct r300_context* r300, unsigned size, void *state); diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index 735c233c9e2..d58aa138a70 100644 --- a/src/gallium/drivers/r300/r300_screen.h +++ b/src/gallium/drivers/r300/r300_screen.h @@ -73,6 +73,7 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) { #define DBG_NO_IMMD 0x0000200 #define DBG_STATS 0x0000400 #define DBG_RS 0x0000800 +#define DBG_TEXALLOC 0x0001000 /*@}*/ static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags) diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index 9319dadfd1e..446422ca0f0 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -538,46 +538,12 @@ static void r300_set_stencil_ref(struct pipe_context* pipe, } /* This switcheroo is needed just because of goddamned MACRO_SWITCH. */ -static void r300_fb_update_tiling_flags(struct r300_context *r300, +static void r300_fb_set_tiling_flags(struct r300_context *r300, const struct pipe_framebuffer_state *old_state, const struct pipe_framebuffer_state *new_state) { struct r300_texture *tex; - unsigned i, j, level; - - /* Reset tiling flags for old surfaces to default values. */ - for (i = 0; i < old_state->nr_cbufs; i++) { - for (j = 0; j < new_state->nr_cbufs; j++) { - if (old_state->cbufs[i]->texture == new_state->cbufs[j]->texture) { - break; - } - } - /* If not binding the surface again... */ - if (j != new_state->nr_cbufs) { - continue; - } - - tex = r300_texture(old_state->cbufs[i]->texture); - - if (tex) { - r300->rws->buffer_set_tiling(r300->rws, tex->buffer, - tex->pitch[0], - tex->microtile, - tex->macrotile); - } - } - if (old_state->zsbuf && - (!new_state->zsbuf || - old_state->zsbuf->texture != new_state->zsbuf->texture)) { - tex = r300_texture(old_state->zsbuf->texture); - - if (tex) { - r300->rws->buffer_set_tiling(r300->rws, tex->buffer, - tex->pitch[0], - tex->microtile, - tex->macrotile); - } - } + unsigned i, level; /* Set tiling flags for new surfaces. */ for (i = 0; i < new_state->nr_cbufs; i++) { @@ -585,7 +551,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300, level = new_state->cbufs[i]->level; r300->rws->buffer_set_tiling(r300->rws, tex->buffer, - tex->pitch[level], + tex->pitch[0], tex->microtile, tex->mip_macrotile[level]); } @@ -594,7 +560,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300, level = new_state->zsbuf->level; r300->rws->buffer_set_tiling(r300->rws, tex->buffer, - tex->pitch[level], + tex->pitch[0], tex->microtile, tex->mip_macrotile[level]); } @@ -644,7 +610,8 @@ static void r300->dsa_state.dirty = TRUE; } - r300_fb_update_tiling_flags(r300, r300->fb_state.state, state); + /* The tiling flags are dependent on the surface miplevel, unfortunately. */ + r300_fb_set_tiling_flags(r300, r300->fb_state.state, state); memcpy(r300->fb_state.state, state, sizeof(struct pipe_framebuffer_state)); @@ -719,10 +686,6 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader) r300_mark_fs_code_dirty(r300); r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */ - - if (r300->vs_state.state && r300_vertex_shader_setup_wpos(r300)) { - r300->vap_output_state.dirty = TRUE; - } } /* Delete fragment shader state. */ @@ -853,11 +816,8 @@ static void* r300_create_rs_state(struct pipe_context* pipe, rs->clip_rule = state->scissor ? 0xAAAA : 0xFFFF; - /* XXX Disable point sprites until we know what's wrong with them. */ - rs->rs.sprite_coord_enable = 0; - /* Point sprites */ - if (rs->rs.sprite_coord_enable) { + if (state->sprite_coord_enable) { rs->stuffing_enable = R300_GB_POINT_STUFF_ENABLE; for (i = 0; i < 8; i++) { if (state->sprite_coord_enable & (1 << i)) @@ -1357,7 +1317,7 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe, /* XXX Shouldn't we align the format? */ fprintf(stderr, "r300_create_vertex_elements_state: " "Unaligned format %s:%i isn't supported\n", - util_format_name(*format), size); + util_format_short_name(*format), size); assert(0); abort(); } @@ -1428,14 +1388,6 @@ static void r300_bind_vs_state(struct pipe_context* pipe, void* shader) } r300->vs_state.state = vs; - // VS output mapping for HWTCL or stream mapping for SWTCL to the RS block - if (r300->fs.state) { - r300_vertex_shader_setup_wpos(r300); - } - memcpy(r300->vap_output_state.state, &vs->vap_out, - sizeof(struct r300_vap_output_state)); - r300->vap_output_state.dirty = TRUE; - /* The majority of the RS block bits is dependent on the vertex shader. */ r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */ diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index ccc4b583a6a..e3adace0faa 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -115,12 +115,11 @@ static void r300_draw_emit_all_attribs(struct r300_context* r300) static void r300_swtcl_vertex_psc(struct r300_context *r300) { struct r300_vertex_stream_state *vstream = r300->vertex_stream_state.state; - struct r300_vertex_shader* vs = r300->vs_state.state; - struct vertex_info* vinfo = &r300->vertex_info; + struct vertex_info* vinfo = &r300->vertex_info; uint16_t type, swizzle; enum pipe_format format; unsigned i, attrib_count; - int* vs_output_tab = vs->stream_loc_notcl; + int* vs_output_tab = r300->stream_loc_notcl; /* XXX hax */ memset(vstream, 0, sizeof(struct r300_vertex_stream_state)); @@ -269,21 +268,29 @@ static void r500_rs_tex_write(struct r300_rs_block* rs, int id, int fp_offset) /* Set up the RS block. * - * This is the part of the chipset that actually does the rasterization - * of vertices into fragments. This is also the part of the chipset that - * locks up if any part of it is even slightly wrong. */ -static void r300_update_rs_block(struct r300_context* r300, - struct r300_shader_semantics* vs_outputs, - struct r300_shader_semantics* fs_inputs) + * This is the part of the chipset that is responsible for linking vertex + * and fragment shaders and stuffed texture coordinates. + * + * The rasterizer reads data from VAP, which produces vertex shader outputs, + * and GA, which produces stuffed texture coordinates. VAP outputs have + * precedence over GA. All outputs must be rasterized otherwise it locks up. + * If there are more outputs rasterized than is set in VAP/GA, it locks up + * too. The funky part is that this info has been pretty much obtained by trial + * and error. */ +static void r300_update_rs_block(struct r300_context *r300) { - struct r300_rs_block rs = { { 0 } }; - int i, col_count = 0, tex_count = 0, fp_offset = 0, count; + struct r300_vertex_shader *vs = r300->vs_state.state; + struct r300_shader_semantics *vs_outputs = &vs->outputs; + struct r300_shader_semantics *fs_inputs = &r300_fs(r300)->shader->inputs; + struct r300_rs_block rs = {0}; + int i, col_count = 0, tex_count = 0, fp_offset = 0, count, loc = 0; void (*rX00_rs_col)(struct r300_rs_block*, int, int, enum r300_rs_swizzle); void (*rX00_rs_col_write)(struct r300_rs_block*, int, int); void (*rX00_rs_tex)(struct r300_rs_block*, int, int, enum r300_rs_swizzle); void (*rX00_rs_tex_write)(struct r300_rs_block*, int, int); boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED || vs_outputs->bcolor[1] != ATTR_UNUSED; + int *stream_loc_notcl = r300->stream_loc_notcl; if (r300->screen->caps.is_r500) { rX00_rs_col = r500_rs_col; @@ -297,15 +304,31 @@ static void r300_update_rs_block(struct r300_context* r300, rX00_rs_tex_write = r300_rs_tex_write; } - /* Rasterize colors. */ + /* The position is always present in VAP. */ + rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS; + rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; + stream_loc_notcl[loc++] = 0; + + /* Set up the point size in VAP. */ + if (vs_outputs->psize != ATTR_UNUSED) { + rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; + stream_loc_notcl[loc++] = 1; + } + + /* Set up and rasterize colors. */ for (i = 0; i < ATTR_COLOR_COUNT; i++) { if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used || vs_outputs->color[1] != ATTR_UNUSED) { - /* Always rasterize if it's written by the VS, - * otherwise it locks up. */ + /* Set up the color in VAP. */ + rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR; + rs.vap_out_vtx_fmt[0] |= + R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i; + stream_loc_notcl[loc++] = 2 + i; + + /* Rasterize it. */ rX00_rs_col(&rs, col_count, col_count, SWIZ_XYZW); - /* Write it to the FS input register if it's used by the FS. */ + /* Write it to the FS input register if it's needed by the FS. */ if (fs_inputs->color[i] != ATTR_UNUSED) { rX00_rs_col_write(&rs, col_count, fp_offset); fp_offset++; @@ -328,17 +351,33 @@ static void r300_update_rs_block(struct r300_context* r300, } } + /* Set up back-face colors. The rasterizer will do the color selection + * automatically. */ + if (any_bcolor_used) { + for (i = 0; i < ATTR_COLOR_COUNT; i++) { + rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR; + rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i); + stream_loc_notcl[loc++] = 4 + i; + } + } + /* Rasterize texture coordinates. */ - for (i = 0; i < ATTR_GENERIC_COUNT; i++) { + for (i = 0; i < ATTR_GENERIC_COUNT && tex_count < 8; i++) { bool sprite_coord = !!(r300->sprite_coord_enable & (1 << i)); if (vs_outputs->generic[i] != ATTR_UNUSED || sprite_coord) { - /* Always rasterize if it's written by the VS, - * otherwise it locks up. */ + if (!sprite_coord) { + /* Set up the texture coordinates in VAP. */ + rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count); + rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count)); + stream_loc_notcl[loc++] = 6 + tex_count; + } + + /* Rasterize it. */ rX00_rs_tex(&rs, tex_count, tex_count, sprite_coord ? SWIZ_XY01 : SWIZ_XYZW); - /* Write it to the FS input register if it's used by the FS. */ + /* Write it to the FS input register if it's needed by the FS. */ if (fs_inputs->generic[i] != ATTR_UNUSED) { rX00_rs_tex_write(&rs, tex_count, fp_offset); fp_offset++; @@ -365,12 +404,16 @@ static void r300_update_rs_block(struct r300_context* r300, } /* Rasterize fog coordinates. */ - if (vs_outputs->fog != ATTR_UNUSED) { - /* Always rasterize if it's written by the VS, - * otherwise it locks up. */ + if (vs_outputs->fog != ATTR_UNUSED && tex_count < 8) { + /* Set up the fog coordinates in VAP. */ + rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count); + rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count)); + stream_loc_notcl[loc++] = 6 + tex_count; + + /* Rasterize it. */ rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_X001); - /* Write it to the FS input register if it's used by the FS. */ + /* Write it to the FS input register if it's needed by the FS. */ if (fs_inputs->fog != ATTR_UNUSED) { rX00_rs_tex_write(&rs, tex_count, fp_offset); fp_offset++; @@ -391,9 +434,17 @@ static void r300_update_rs_block(struct r300_context* r300, } /* Rasterize WPOS. */ - /* If the FS doesn't need it, it's not written by the VS. */ - if (vs_outputs->wpos != ATTR_UNUSED && fs_inputs->wpos != ATTR_UNUSED) { + /* Don't set it in VAP if the FS doesn't need it. */ + if (fs_inputs->wpos != ATTR_UNUSED && tex_count < 8) { + /* Set up the WPOS coordinates in VAP. */ + rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count); + rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count)); + stream_loc_notcl[loc++] = 6 + tex_count; + + /* Rasterize it. */ rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_XYZW); + + /* Write it to the FS input register. */ rX00_rs_tex_write(&rs, tex_count, fp_offset); DBG(r300, DBG_RS, "r300: Rasterized WPOS written to FS.\n"); @@ -402,6 +453,11 @@ static void r300_update_rs_block(struct r300_context* r300, tex_count++; } + /* Invalidate the rest of the no-TCL (GA) stream locations. */ + for (; loc < 16;) { + stream_loc_notcl[loc++] = -1; + } + /* Rasterize at least one color, or bad things happen. */ if (col_count == 0 && tex_count == 0) { rX00_rs_col(&rs, 0, 0, SWIZ_0001); @@ -422,18 +478,10 @@ static void r300_update_rs_block(struct r300_context* r300, /* Now, after all that, see if we actually need to update the state. */ if (memcmp(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block))) { memcpy(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block)); - r300->rs_block_state.size = 5 + count*2; + r300->rs_block_state.size = 11 + count*2; } } -/* Update the shader-dependant states. */ -static void r300_update_derived_shader_state(struct r300_context* r300) -{ - struct r300_vertex_shader* vs = r300->vs_state.state; - - r300_update_rs_block(r300, &vs->outputs, &r300_fs(r300)->shader->inputs); -} - static void r300_merge_textures_and_samplers(struct r300_context* r300) { struct r300_textures_state *state = @@ -529,7 +577,7 @@ void r300_update_derived_state(struct r300_context* r300) } if (r300->rs_block_state.dirty) { - r300_update_derived_shader_state(r300); + r300_update_rs_block(r300); } if (r300->draw) { diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h index fcbdb91b67e..715601042fa 100644 --- a/src/gallium/drivers/r300/r300_state_inlines.h +++ b/src/gallium/drivers/r300/r300_state_inlines.h @@ -371,7 +371,7 @@ r300_translate_vertex_data_type(enum pipe_format format) { desc = util_format_description(format); if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) { - fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_name(format), + fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_short_name(format), __FUNCTION__, __LINE__); assert(0); abort(); @@ -394,7 +394,7 @@ r300_translate_vertex_data_type(enum pipe_format format) { break; default: fprintf(stderr, "r300: Bad format %s in %s:%d\n", - util_format_name(format), __FUNCTION__, __LINE__); + util_format_short_name(format), __FUNCTION__, __LINE__); assert(0); abort(); } @@ -416,7 +416,7 @@ r300_translate_vertex_data_type(enum pipe_format format) { break; default: fprintf(stderr, "r300: Bad format %s in %s:%d\n", - util_format_name(format), __FUNCTION__, __LINE__); + util_format_short_name(format), __FUNCTION__, __LINE__); fprintf(stderr, "r300: desc->channel[0].size == %d\n", desc->channel[0].size); assert(0); @@ -425,7 +425,7 @@ r300_translate_vertex_data_type(enum pipe_format format) { break; default: fprintf(stderr, "r300: Bad format %s in %s:%d\n", - util_format_name(format), __FUNCTION__, __LINE__); + util_format_short_name(format), __FUNCTION__, __LINE__); assert(0); abort(); } @@ -449,7 +449,7 @@ r300_translate_vertex_data_swizzle(enum pipe_format format) { if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) { fprintf(stderr, "r300: Bad format %s in %s:%d\n", - util_format_name(format), __FUNCTION__, __LINE__); + util_format_short_name(format), __FUNCTION__, __LINE__); return 0; } diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index 69e6a124458..d6f629cf9c6 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -46,18 +46,6 @@ static const unsigned microblock_table[5][3][2] = { {{ 2, 1}, {0, 0}, {0, 0}} /* 128 bits per pixel */ }; -/* Return true for non-compressed and non-YUV formats. */ -static boolean r300_format_is_plain(enum pipe_format format) -{ - const struct util_format_description *desc = util_format_description(format); - - if (!format) { - return FALSE; - } - - return desc->layout == UTIL_FORMAT_LAYOUT_PLAIN; -} - /* Translate a pipe_format into a useful texture format for sampling. * * Some special formats are translated directly using R300_EASY_TX_FORMAT, @@ -585,9 +573,6 @@ static void r300_texture_setup_immutable_state(struct r300_screen* screen, f->tile_config = R300_TXO_MACRO_TILE(tex->macrotile) | R300_TXO_MICRO_TILE(tex->microtile); - - SCREEN_DBG(screen, DBG_TEX, "r300: Set texture state (%dx%d, %d levels)\n", - pt->width0, pt->height0, pt->last_level); } static void r300_texture_setup_fb_state(struct r300_screen* screen, @@ -622,8 +607,8 @@ void r300_texture_reinterpret_format(struct pipe_screen *screen, { struct r300_screen *r300screen = r300_screen(screen); - SCREEN_DBG(r300screen, DBG_TEX, "r300: Reinterpreting format: %s -> %s\n", - util_format_name(tex->format), util_format_name(new_format)); + SCREEN_DBG(r300screen, DBG_TEX, "r300: texture_reinterpret_format: %s -> %s\n", + util_format_short_name(tex->format), util_format_short_name(new_format)); tex->format = new_format; @@ -714,7 +699,7 @@ unsigned r300_texture_get_stride(struct r300_screen* screen, width = u_minify(tex->b.b.width0, level); - if (r300_format_is_plain(tex->b.b.format)) { + if (util_format_is_plain(tex->b.b.format)) { tile_width = r300_texture_get_tile_size(tex, TILE_WIDTH, tex->mip_macrotile[level]); width = align(width, tile_width); @@ -732,7 +717,7 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex, height = u_minify(tex->b.b.height0, level); - if (r300_format_is_plain(tex->b.b.format)) { + if (util_format_is_plain(tex->b.b.format)) { tile_height = r300_texture_get_tile_size(tex, TILE_HEIGHT, tex->mip_macrotile[level]); height = align(height, tile_height); @@ -774,8 +759,8 @@ static void r300_setup_miptree(struct r300_screen* screen, unsigned stride, size, layer_size, nblocksy, i; boolean rv350_mode = screen->caps.is_rv350; - SCREEN_DBG(screen, DBG_TEX, "r300: Making miptree for texture, format %s\n", - util_format_name(base->format)); + SCREEN_DBG(screen, DBG_TEXALLOC, "r300: Making miptree for texture, format %s\n", + util_format_short_name(base->format)); for (i = 0; i <= base->last_level; i++) { /* Let's see if this miplevel can be macrotiled. */ @@ -801,7 +786,7 @@ static void r300_setup_miptree(struct r300_screen* screen, tex->hwpitch[i] = tex->pitch[i] * util_format_get_blockwidth(base->format); - SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d " + SCREEN_DBG(screen, DBG_TEXALLOC, "r300: Texture miptree: Level %d " "(%dx%dx%d px, pitch %d bytes) %d bytes total, macrotiled %s\n", i, u_minify(base->width0, i), u_minify(base->height0, i), u_minify(base->depth0, i), stride, tex->size, @@ -825,7 +810,7 @@ static void r300_setup_tiling(struct pipe_screen *screen, boolean is_zb = util_format_is_depth_or_stencil(format); boolean dbg_no_tiling = SCREEN_DBG_ON(r300_screen(screen), DBG_NO_TILING); - if (!r300_format_is_plain(format)) { + if (!util_format_is_plain(format)) { return; } @@ -927,6 +912,17 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen, return NULL; } + /* Refuse to create a texture with size 0. */ + if (!base->width0 || + (!base->height0 && (base->target == PIPE_TEXTURE_2D || + base->target == PIPE_TEXTURE_CUBE)) || + (!base->depth0 && base->target == PIPE_TEXTURE_3D)) { + fprintf(stderr, "r300: texture_create: " + "Got invalid texture dimensions: %ix%ix%i\n", + base->width0, base->height0, base->depth0); + return NULL; + } + tex->b.b = *base; tex->b.vtbl = &r300_texture_vtbl; pipe_reference_init(&tex->b.b.reference, 1); @@ -942,6 +938,15 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen, r300_texture_setup_immutable_state(rscreen, tex); r300_texture_setup_fb_state(rscreen, tex); + SCREEN_DBG(rscreen, DBG_TEX, + "r300: texture_create: Macro: %s, Micro: %s, Pitch: %i, " + "Dim: %ix%ix%i, LastLevel: %i, Format: %s\n", + tex->macrotile ? "YES" : " NO", + tex->microtile ? "YES" : " NO", + tex->hwpitch[0], + base->width0, base->height0, base->depth0, base->last_level, + util_format_short_name(base->format)); + tex->buffer = rws->buffer_create(rws, 2048, PIPE_BIND_SAMPLER_VIEW, /* XXX */ tex->size); @@ -1039,6 +1044,14 @@ r300_texture_from_handle(struct pipe_screen* screen, rws->buffer_get_tiling(rws, buffer, &tex->microtile, &tex->macrotile); r300_setup_flags(tex); + SCREEN_DBG(rscreen, DBG_TEX, + "r300: texture_from_handle: Macro: %s, Micro: %s, " + "Pitch: % 4i, Dim: %ix%i, Format: %s\n", + tex->macrotile ? "YES" : " NO", + tex->microtile ? "YES" : " NO", + stride / util_format_get_blocksize(base->format), + base->width0, base->height0, + util_format_short_name(base->format)); /* Enforce microtiled zbuffer. */ override_zb_flags = util_format_is_depth_or_stencil(base->format) && diff --git a/src/gallium/drivers/r300/r300_vs.c b/src/gallium/drivers/r300/r300_vs.c index bfab9c3b014..f3186431e1d 100644 --- a/src/gallium/drivers/r300/r300_vs.c +++ b/src/gallium/drivers/r300/r300_vs.c @@ -22,7 +22,6 @@ * USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "r300_vs.h" -#include "r300_fs.h" #include "r300_context.h" #include "r300_screen.h" @@ -94,94 +93,6 @@ static void r300_shader_read_vs_outputs( vs_outputs->wpos = i; } -/* This function sets up: - * - VAP mapping, which maps VS registers to output semantics and - * at the same time it indicates which attributes are enabled and should - * be rasterized. - * - Stream mapping to VS outputs if TCL is not present. */ -static void r300_init_vs_output_mapping(struct r300_vertex_shader* vs) -{ - struct r300_shader_semantics* vs_outputs = &vs->outputs; - struct r300_vap_output_state *vap_out = &vs->vap_out; - int *stream_loc = vs->stream_loc_notcl; - int i, gen_count, tabi = 0; - boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED || - vs_outputs->bcolor[1] != ATTR_UNUSED; - - vap_out->vap_vtx_state_cntl = 0x5555; /* XXX this is classic Mesa bonghits */ - - /* Position. */ - if (vs_outputs->pos != ATTR_UNUSED) { - vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS; - vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT; - - stream_loc[tabi++] = 0; - } else { - assert(0); - } - - /* Point size. */ - if (vs_outputs->psize != ATTR_UNUSED) { - vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT; - - stream_loc[tabi++] = 1; - } - - /* Colors. */ - for (i = 0; i < ATTR_COLOR_COUNT; i++) { - if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used || - vs_outputs->color[1] != ATTR_UNUSED) { - vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR; - vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i; - - stream_loc[tabi++] = 2 + i; - } - } - - /* Back-face colors. */ - if (any_bcolor_used) { - for (i = 0; i < ATTR_COLOR_COUNT; i++) { - vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR; - vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i); - - stream_loc[tabi++] = 4 + i; - } - } - - /* Texture coordinates. */ - gen_count = 0; - for (i = 0; i < ATTR_GENERIC_COUNT && gen_count < 8; i++) { - if (vs_outputs->generic[i] != ATTR_UNUSED) { - vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count); - vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count)); - - stream_loc[tabi++] = 6 + gen_count; - gen_count++; - } - } - - /* Fog coordinates. */ - if (gen_count < 8 && vs_outputs->fog != ATTR_UNUSED) { - vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count); - vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count)); - - stream_loc[tabi++] = 6 + gen_count; - gen_count++; - } - - /* WPOS. */ - if (gen_count < 8) { - vs->wpos_tex_output = gen_count; - stream_loc[tabi++] = 6 + gen_count; - } else { - vs_outputs->wpos = ATTR_UNUSED; - } - - for (; tabi < 16;) { - stream_loc[tabi++] = -1; - } -} - static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c) { struct r300_vertex_shader * vs = c->UserData; @@ -246,9 +157,7 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c) } /* WPOS. */ - if (outputs->wpos != ATTR_UNUSED) { - c->code->outputs[outputs->wpos] = reg++; - } + c->code->outputs[outputs->wpos] = reg++; } static void r300_dummy_vertex_shader( @@ -286,7 +195,6 @@ void r300_translate_vertex_shader(struct r300_context* r300, tgsi_scan_shader(tokens, &vs->info); r300_shader_read_vs_outputs(&vs->info, &vs->outputs); - r300_init_vs_output_mapping(vs); /* Setup the compiler */ rc_init(&compiler.Base); @@ -307,16 +215,11 @@ void r300_translate_vertex_shader(struct r300_context* r300, r300_tgsi_to_rc(&ttr, tokens); - compiler.RequiredOutputs = - ~(~0 << (vs->info.num_outputs + - (vs->outputs.wpos != ATTR_UNUSED ? 1 : 0))); - + compiler.RequiredOutputs = ~(~0 << (vs->info.num_outputs + 1)); compiler.SetHwInputOutput = &set_vertex_inputs_outputs; /* Insert the WPOS output. */ - if (vs->outputs.wpos != ATTR_UNUSED) { - rc_copy_output(&compiler.Base, 0, vs->outputs.wpos); - } + rc_copy_output(&compiler.Base, 0, vs->outputs.wpos); /* Invoke the compiler */ r3xx_compile_vertex_program(&compiler); @@ -343,32 +246,3 @@ void r300_translate_vertex_shader(struct r300_context* r300, /* And, finally... */ rc_destroy(&compiler.Base); } - -boolean r300_vertex_shader_setup_wpos(struct r300_context* r300) -{ - struct r300_vertex_shader* vs = r300->vs_state.state; - struct r300_vap_output_state *vap_out = &vs->vap_out; - int tex_output = vs->wpos_tex_output; - uint32_t tex_fmt = R300_INPUT_CNTL_TC0 << tex_output; - - if (vs->outputs.wpos == ATTR_UNUSED) { - return FALSE; - } - - if (r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) { - /* Enable WPOS in VAP. */ - if (!(vap_out->vap_vsm_vtx_assm & tex_fmt)) { - vap_out->vap_vsm_vtx_assm |= tex_fmt; - vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * tex_output)); - return TRUE; - } - } else { - /* Disable WPOS in VAP. */ - if (vap_out->vap_vsm_vtx_assm & tex_fmt) { - vap_out->vap_vsm_vtx_assm &= ~tex_fmt; - vap_out->vap_out_vtx_fmt[1] &= ~(4 << (3 * tex_output)); - return TRUE; - } - } - return FALSE; -} diff --git a/src/gallium/drivers/r300/r300_vs.h b/src/gallium/drivers/r300/r300_vs.h index 56bcc3b70b8..57b3fbca0bb 100644 --- a/src/gallium/drivers/r300/r300_vs.h +++ b/src/gallium/drivers/r300/r300_vs.h @@ -39,7 +39,6 @@ struct r300_vertex_shader { struct tgsi_shader_info info; struct r300_shader_semantics outputs; - struct r300_vap_output_state vap_out; /* Whether the shader was replaced by a dummy one due to a shader * compilation failure. */ @@ -49,12 +48,6 @@ struct r300_vertex_shader { unsigned externals_count; unsigned immediates_count; - /* Stream locations for SWTCL or if TCL is bypassed. */ - int stream_loc_notcl[16]; - - /* Output stream location for WPOS. */ - int wpos_tex_output; - /* HWTCL-specific. */ /* Machine code (if translated) */ struct r300_vertex_program_code code; @@ -67,7 +60,4 @@ void r300_translate_vertex_shader(struct r300_context* r300, struct r300_vertex_shader* vs, const struct tgsi_token *tokens); -/* Return TRUE if VAP (hwfmt) needs to be re-emitted. */ -boolean r300_vertex_shader_setup_wpos(struct r300_context* r300); - #endif /* R300_VS_H */ diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c index ead489393ef..00187febf0c 100644 --- a/src/gallium/drivers/softpipe/sp_quad_blend.c +++ b/src/gallium/drivers/softpipe/sp_quad_blend.c @@ -33,6 +33,7 @@ #include "pipe/p_defines.h" #include "util/u_math.h" #include "util/u_memory.h" +#include "util/u_format.h" #include "sp_context.h" #include "sp_quad.h" #include "sp_tile_cache.h" @@ -224,7 +225,8 @@ static void blend_quad(struct quad_stage *qs, float (*quadColor)[4], float (*dest)[4], - unsigned cbuf) + unsigned cbuf, + boolean has_dst_alpha) { static const float zero[4] = { 0, 0, 0, 0 }; static const float one[4] = { 1, 1, 1, 1 }; @@ -259,24 +261,34 @@ blend_quad(struct quad_stage *qs, VEC4_MUL(source[2], quadColor[2], dest[2]); /* B */ break; case PIPE_BLENDFACTOR_DST_ALPHA: - { - const float *alpha = dest[3]; - VEC4_MUL(source[0], quadColor[0], alpha); /* R */ - VEC4_MUL(source[1], quadColor[1], alpha); /* G */ - VEC4_MUL(source[2], quadColor[2], alpha); /* B */ - } - break; + if (has_dst_alpha) { + const float *alpha = dest[3]; + VEC4_MUL(source[0], quadColor[0], alpha); /* R */ + VEC4_MUL(source[1], quadColor[1], alpha); /* G */ + VEC4_MUL(source[2], quadColor[2], alpha); /* B */ + } + else { + VEC4_COPY(source[0], quadColor[0]); /* R */ + VEC4_COPY(source[1], quadColor[1]); /* G */ + VEC4_COPY(source[2], quadColor[2]); /* B */ + } + break; case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: - { - const float *alpha = quadColor[3]; - float diff[4], temp[4]; - VEC4_SUB(diff, one, dest[3]); - VEC4_MIN(temp, alpha, diff); - VEC4_MUL(source[0], quadColor[0], temp); /* R */ - VEC4_MUL(source[1], quadColor[1], temp); /* G */ - VEC4_MUL(source[2], quadColor[2], temp); /* B */ - } - break; + if (has_dst_alpha) { + const float *alpha = quadColor[3]; + float diff[4], temp[4]; + VEC4_SUB(diff, one, dest[3]); + VEC4_MIN(temp, alpha, diff); + VEC4_MUL(source[0], quadColor[0], temp); /* R */ + VEC4_MUL(source[1], quadColor[1], temp); /* G */ + VEC4_MUL(source[2], quadColor[2], temp); /* B */ + } + else { + VEC4_COPY(source[0], zero); /* R */ + VEC4_COPY(source[1], zero); /* G */ + VEC4_COPY(source[2], zero); /* B */ + } + break; case PIPE_BLENDFACTOR_CONST_COLOR: { float comp[4]; @@ -329,14 +341,19 @@ blend_quad(struct quad_stage *qs, } break; case PIPE_BLENDFACTOR_INV_DST_ALPHA: - { - float inv_alpha[4]; - VEC4_SUB(inv_alpha, one, dest[3]); - VEC4_MUL(source[0], quadColor[0], inv_alpha); /* R */ - VEC4_MUL(source[1], quadColor[1], inv_alpha); /* G */ - VEC4_MUL(source[2], quadColor[2], inv_alpha); /* B */ - } - break; + if (has_dst_alpha) { + float inv_alpha[4]; + VEC4_SUB(inv_alpha, one, dest[3]); + VEC4_MUL(source[0], quadColor[0], inv_alpha); /* R */ + VEC4_MUL(source[1], quadColor[1], inv_alpha); /* G */ + VEC4_MUL(source[2], quadColor[2], inv_alpha); /* B */ + } + else { + VEC4_COPY(source[0], zero); /* R */ + VEC4_COPY(source[1], zero); /* G */ + VEC4_COPY(source[2], zero); /* B */ + } + break; case PIPE_BLENDFACTOR_INV_DST_COLOR: { float inv_comp[4]; @@ -399,7 +416,10 @@ blend_quad(struct quad_stage *qs, case PIPE_BLENDFACTOR_DST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_DST_ALPHA: - VEC4_MUL(source[3], quadColor[3], dest[3]); /* A */ + if (has_dst_alpha) + VEC4_MUL(source[3], quadColor[3], dest[3]); /* A */ + else + VEC4_COPY(source[3], quadColor[3]); /* A */ break; case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: /* multiply alpha by 1.0 */ @@ -429,12 +449,15 @@ blend_quad(struct quad_stage *qs, case PIPE_BLENDFACTOR_INV_DST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_INV_DST_ALPHA: - { - float inv_alpha[4]; - VEC4_SUB(inv_alpha, one, dest[3]); - VEC4_MUL(source[3], quadColor[3], inv_alpha); /* A */ - } - break; + if (has_dst_alpha) { + float inv_alpha[4]; + VEC4_SUB(inv_alpha, one, dest[3]); + VEC4_MUL(source[3], quadColor[3], inv_alpha); /* A */ + } + else { + VEC4_COPY(source[3], zero); /* A */ + } + break; case PIPE_BLENDFACTOR_INV_CONST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_INV_CONST_ALPHA: @@ -468,9 +491,14 @@ blend_quad(struct quad_stage *qs, VEC4_MUL(dest[2], dest[2], quadColor[3]); /* B * A */ break; case PIPE_BLENDFACTOR_DST_ALPHA: - VEC4_MUL(dest[0], dest[0], dest[3]); /* R * A */ - VEC4_MUL(dest[1], dest[1], dest[3]); /* G * A */ - VEC4_MUL(dest[2], dest[2], dest[3]); /* B * A */ + if (has_dst_alpha) { + VEC4_MUL(dest[0], dest[0], dest[3]); /* R * A */ + VEC4_MUL(dest[1], dest[1], dest[3]); /* G * A */ + VEC4_MUL(dest[2], dest[2], dest[3]); /* B * A */ + } + else { + /* dest = dest * 1 NO-OP, leave dest as-is */ + } break; case PIPE_BLENDFACTOR_DST_COLOR: VEC4_MUL(dest[0], dest[0], dest[0]); /* R */ @@ -478,15 +506,20 @@ blend_quad(struct quad_stage *qs, VEC4_MUL(dest[2], dest[2], dest[2]); /* B */ break; case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: - { - const float *alpha = quadColor[3]; - float diff[4], temp[4]; - VEC4_SUB(diff, one, dest[3]); - VEC4_MIN(temp, alpha, diff); - VEC4_MUL(dest[0], quadColor[0], temp); /* R */ - VEC4_MUL(dest[1], quadColor[1], temp); /* G */ - VEC4_MUL(dest[2], quadColor[2], temp); /* B */ - } + if (has_dst_alpha) { + const float *alpha = quadColor[3]; + float diff[4], temp[4]; + VEC4_SUB(diff, one, dest[3]); + VEC4_MIN(temp, alpha, diff); + VEC4_MUL(dest[0], quadColor[0], temp); /* R */ + VEC4_MUL(dest[1], quadColor[1], temp); /* G */ + VEC4_MUL(dest[2], quadColor[2], temp); /* B */ + } + else { + VEC4_COPY(dest[0], zero); /* R */ + VEC4_COPY(dest[1], zero); /* G */ + VEC4_COPY(dest[2], zero); /* B */ + } break; case PIPE_BLENDFACTOR_CONST_COLOR: { @@ -539,13 +572,18 @@ blend_quad(struct quad_stage *qs, } break; case PIPE_BLENDFACTOR_INV_DST_ALPHA: - { - float inv_comp[4]; - VEC4_SUB(inv_comp, one, dest[3]); /* A */ - VEC4_MUL(dest[0], inv_comp, dest[0]); /* R */ - VEC4_MUL(dest[1], inv_comp, dest[1]); /* G */ - VEC4_MUL(dest[2], inv_comp, dest[2]); /* B */ - } + if (has_dst_alpha) { + float inv_comp[4]; + VEC4_SUB(inv_comp, one, dest[3]); /* A */ + VEC4_MUL(dest[0], inv_comp, dest[0]); /* R */ + VEC4_MUL(dest[1], inv_comp, dest[1]); /* G */ + VEC4_MUL(dest[2], inv_comp, dest[2]); /* B */ + } + else { + VEC4_COPY(dest[0], zero); /* R */ + VEC4_COPY(dest[1], zero); /* G */ + VEC4_COPY(dest[2], zero); /* B */ + } break; case PIPE_BLENDFACTOR_INV_DST_COLOR: { @@ -605,7 +643,12 @@ blend_quad(struct quad_stage *qs, case PIPE_BLENDFACTOR_DST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_DST_ALPHA: - VEC4_MUL(dest[3], dest[3], dest[3]); /* A */ + if (has_dst_alpha) { + VEC4_MUL(dest[3], dest[3], dest[3]); /* A */ + } + else { + /* dest = dest * 1 NO-OP, leave dest as-is */ + } break; case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: /* dest = dest * 1 NO-OP, leave dest as-is */ @@ -634,12 +677,15 @@ blend_quad(struct quad_stage *qs, case PIPE_BLENDFACTOR_INV_DST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_INV_DST_ALPHA: - { - float inv_comp[4]; - VEC4_SUB(inv_comp, one, dest[3]); /* A */ - VEC4_MUL(dest[3], inv_comp, dest[3]); /* A */ - } - break; + if (has_dst_alpha) { + float inv_comp[4]; + VEC4_SUB(inv_comp, one, dest[3]); /* A */ + VEC4_MUL(dest[3], inv_comp, dest[3]); /* A */ + } + else { + VEC4_COPY(dest[3], zero); /* A */ + } + break; case PIPE_BLENDFACTOR_INV_CONST_COLOR: /* fall-through */ case PIPE_BLENDFACTOR_INV_CONST_ALPHA: @@ -751,6 +797,8 @@ blend_fallback(struct quad_stage *qs, = sp_get_cached_tile(softpipe->cbuf_cache[cbuf], quads[0]->input.x0, quads[0]->input.y0); + boolean has_dst_alpha + = util_format_has_alpha(softpipe->framebuffer.cbufs[cbuf]->format); uint q, i, j; for (q = 0; q < nr; q++) { @@ -774,7 +822,7 @@ blend_fallback(struct quad_stage *qs, logicop_quad( qs, quadColor, dest ); } else if (blend->rt[blend_buf].blend_enable) { - blend_quad( qs, quadColor, dest, cbuf ); + blend_quad( qs, quadColor, dest, cbuf, has_dst_alpha ); } if (blend->rt[blend_buf].colormask != 0xf) diff --git a/src/gallium/drivers/softpipe/sp_surface.c b/src/gallium/drivers/softpipe/sp_surface.c index b04c2a63ad6..32cab06004f 100644 --- a/src/gallium/drivers/softpipe/sp_surface.c +++ b/src/gallium/drivers/softpipe/sp_surface.c @@ -25,7 +25,7 @@ * **************************************************************************/ -#include "util/u_rect.h" +#include "util/u_surface.h" #include "sp_context.h" #include "sp_surface.h" diff --git a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c index fbce9e042ba..b3e1c494069 100644 --- a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c +++ b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c @@ -115,6 +115,20 @@ sp_tex_tile_cache_validate_texture(struct softpipe_tex_tile_cache *tc) } } +static boolean +sp_tex_tile_is_compat_view(struct softpipe_tex_tile_cache *tc, + struct pipe_sampler_view *view) +{ + if (!view) + return FALSE; + return (tc->texture == view->texture && + tc->format == view->format && + tc->swizzle_r == view->swizzle_r && + tc->swizzle_g == view->swizzle_g && + tc->swizzle_b == view->swizzle_b && + tc->swizzle_a == view->swizzle_a); +} + /** * Specify the sampler view to cache. */ @@ -127,7 +141,7 @@ sp_tex_tile_cache_set_sampler_view(struct softpipe_tex_tile_cache *tc, assert(!tc->transfer); - if (tc->texture != texture) { + if (!sp_tex_tile_is_compat_view(tc, view)) { pipe_resource_reference(&tc->texture, texture); if (tc->tex_trans) { diff --git a/src/gallium/drivers/svga/svga_context.c b/src/gallium/drivers/svga/svga_context.c index 3228a6d3d7f..75d8afb2ea8 100644 --- a/src/gallium/drivers/svga/svga_context.c +++ b/src/gallium/drivers/svga/svga_context.c @@ -194,6 +194,7 @@ void svga_context_flush( struct svga_context *svga, struct pipe_fence_handle **pfence ) { struct svga_screen *svgascreen = svga_screen(svga->pipe.screen); + struct pipe_fence_handle *fence = NULL; svga->curr.nr_fbs = 0; @@ -202,21 +203,26 @@ void svga_context_flush( struct svga_context *svga, u_upload_flush(svga->upload_vb); u_upload_flush(svga->upload_ib); - /* Flush screen, to ensure that texture dma uploads are processed + /* Ensure that texture dma uploads are processed * before submitting commands. */ - svga_screen_flush(svgascreen, NULL); - svga_context_flush_buffers(svga); /* Flush pending commands to hardware: */ - svga->swc->flush(svga->swc, pfence); + svga->swc->flush(svga->swc, &fence); + + svga_screen_cache_flush(svgascreen, fence); if (SVGA_DEBUG & DEBUG_SYNC) { - if (pfence && *pfence) - svga->pipe.screen->fence_finish( svga->pipe.screen, *pfence, 0); + if (fence) + svga->pipe.screen->fence_finish( svga->pipe.screen, fence, 0); } + + if(pfence) + *pfence = fence; + else + svgascreen->sws->fence_reference(svgascreen->sws, &fence, NULL); } diff --git a/src/gallium/drivers/svga/svga_draw_arrays.c b/src/gallium/drivers/svga/svga_draw_arrays.c index 005996d05d3..da33fae62f1 100644 --- a/src/gallium/drivers/svga/svga_draw_arrays.c +++ b/src/gallium/drivers/svga/svga_draw_arrays.c @@ -277,12 +277,13 @@ svga_hwtnl_draw_arrays( struct svga_hwtnl *hwtnl, ret = svga_hwtnl_simple_draw_range_elements( hwtnl, gen_buf, gen_size, + start, 0, count - 1, gen_prim, 0, - gen_nr, - start ); + gen_nr ); + if (ret) goto done; diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c index 9c6f5858ba4..96fb4b8e536 100644 --- a/src/gallium/drivers/svga/svga_pipe_query.c +++ b/src/gallium/drivers/svga/svga_pipe_query.c @@ -68,6 +68,7 @@ static boolean svga_get_query_result(struct pipe_context *pipe, static struct pipe_query *svga_create_query( struct pipe_context *pipe, unsigned query_type ) { + struct svga_context *svga = svga_context( pipe ); struct svga_screen *svgascreen = svga_screen(pipe->screen); struct svga_winsys_screen *sws = svgascreen->sws; struct svga_query *sq; @@ -80,7 +81,7 @@ static struct pipe_query *svga_create_query( struct pipe_context *pipe, sq->type = SVGA3D_QUERYTYPE_OCCLUSION; - sq->hwbuf = svga_winsys_buffer_create(svgascreen, + sq->hwbuf = svga_winsys_buffer_create(svga, 1, SVGA_BUFFER_USAGE_PINNED, sizeof *sq->queryResult); diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c index 18eeff9c67e..198d4013328 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer.c +++ b/src/gallium/drivers/svga/svga_resource_buffer.c @@ -125,8 +125,6 @@ svga_buffer_map_range( struct pipe_screen *screen, } if(map) { - pipe_mutex_lock(ss->swc_mutex); - ++sbuf->map.count; if (usage & PIPE_TRANSFER_WRITE) { @@ -135,8 +133,6 @@ svga_buffer_map_range( struct pipe_screen *screen, if (usage & PIPE_TRANSFER_FLUSH_EXPLICIT) sbuf->map.flush_explicit = TRUE; } - - pipe_mutex_unlock(ss->swc_mutex); } return map; diff --git a/src/gallium/drivers/svga/svga_resource_buffer.h b/src/gallium/drivers/svga/svga_resource_buffer.h index 55e7321184f..d3ec11bfd52 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer.h +++ b/src/gallium/drivers/svga/svga_resource_buffer.h @@ -238,7 +238,7 @@ void svga_context_flush_buffers(struct svga_context *svga); struct svga_winsys_buffer * -svga_winsys_buffer_create(struct svga_screen *ss, +svga_winsys_buffer_create(struct svga_context *svga, unsigned alignment, unsigned usage, unsigned size); diff --git a/src/gallium/drivers/svga/svga_resource_buffer_host.c b/src/gallium/drivers/svga/svga_resource_buffer_host.c deleted file mode 100644 index 139597f9cb0..00000000000 --- a/src/gallium/drivers/svga/svga_resource_buffer_host.c +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c index acef60f4647..3de5216a949 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c +++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c @@ -40,15 +40,21 @@ #include "svga_debug.h" -/* Allocate a winsys_buffer (ie. DMA, aka GMR memory). +/** + * Allocate a winsys_buffer (ie. DMA, aka GMR memory). + * + * It will flush and retry in case the first attempt to create a DMA buffer + * fails, so it should not be called from any function involved in flushing + * to avoid recursion. */ struct svga_winsys_buffer * -svga_winsys_buffer_create( struct svga_screen *ss, +svga_winsys_buffer_create( struct svga_context *svga, unsigned alignment, unsigned usage, unsigned size ) { - struct svga_winsys_screen *sws = ss->sws; + struct svga_screen *svgascreen = svga_screen(svga->pipe.screen); + struct svga_winsys_screen *sws = svgascreen->sws; struct svga_winsys_buffer *buf; /* Just try */ @@ -59,9 +65,8 @@ svga_winsys_buffer_create( struct svga_screen *ss, size); /* Try flushing all pending DMAs */ - svga_screen_flush(ss, NULL); + svga_context_flush(svga, NULL); buf = sws->buffer_create(sws, alignment, usage, size); - } return buf; @@ -95,11 +100,12 @@ svga_buffer_create_hw_storage(struct svga_screen *ss, assert(!sbuf->user); if(!sbuf->hwbuf) { + struct svga_winsys_screen *sws = ss->sws; unsigned alignment = 16; unsigned usage = 0; unsigned size = sbuf->b.b.width0; - sbuf->hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size); + sbuf->hwbuf = sws->buffer_create(sws, alignment, usage, size); if(!sbuf->hwbuf) return PIPE_ERROR_OUT_OF_MEMORY; @@ -476,12 +482,12 @@ svga_buffer_upload_piecewise(struct svga_screen *ss, if (offset + size > range->end) size = range->end - offset; - hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size); + hwbuf = sws->buffer_create(sws, alignment, usage, size); while (!hwbuf) { size /= 2; if (!size) return PIPE_ERROR_OUT_OF_MEMORY; - hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size); + hwbuf = sws->buffer_create(sws, alignment, usage, size); } SVGA_DBG(DEBUG_DMA, " bytes %u - %u\n", diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index f06b0323d8c..ff83c750aaf 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -163,12 +163,12 @@ svga_translate_format_render(enum pipe_format format) static INLINE void -svga_transfer_dma_band(struct svga_transfer *st, +svga_transfer_dma_band(struct svga_context *svga, + struct svga_transfer *st, SVGA3dTransferType transfer, unsigned y, unsigned h, unsigned srcy) { struct svga_texture *texture = svga_texture(st->base.resource); - struct svga_screen *screen = svga_screen(texture->b.b.screen); SVGA3dCopyBox box; enum pipe_error ret; @@ -195,20 +195,19 @@ svga_transfer_dma_band(struct svga_transfer *st, box.srcy = srcy; box.srcz = 0; - pipe_mutex_lock(screen->swc_mutex); - ret = SVGA3D_SurfaceDMA(screen->swc, st, transfer, &box, 1); + ret = SVGA3D_SurfaceDMA(svga->swc, st, transfer, &box, 1); if(ret != PIPE_OK) { - screen->swc->flush(screen->swc, NULL); - ret = SVGA3D_SurfaceDMA(screen->swc, st, transfer, &box, 1); + svga->swc->flush(svga->swc, NULL); + ret = SVGA3D_SurfaceDMA(svga->swc, st, transfer, &box, 1); assert(ret == PIPE_OK); } - pipe_mutex_unlock(screen->swc_mutex); } static INLINE void -svga_transfer_dma(struct svga_transfer *st, - SVGA3dTransferType transfer) +svga_transfer_dma(struct svga_context *svga, + struct svga_transfer *st, + SVGA3dTransferType transfer) { struct svga_texture *texture = svga_texture(st->base.resource); struct svga_screen *screen = svga_screen(texture->b.b.screen); @@ -223,10 +222,10 @@ svga_transfer_dma(struct svga_transfer *st, if(!st->swbuf) { /* Do the DMA transfer in a single go */ - svga_transfer_dma_band(st, transfer, st->base.box.y, st->base.box.height, 0); + svga_transfer_dma_band(svga, st, transfer, st->base.box.y, st->base.box.height, 0); if(transfer == SVGA3D_READ_HOST_VRAM) { - svga_screen_flush(screen, &fence); + svga_context_flush(svga, &fence); sws->fence_finish(sws, fence, 0); sws->fence_reference(sws, &fence, NULL); } @@ -256,7 +255,7 @@ svga_transfer_dma(struct svga_transfer *st, /* Wait for the previous DMAs to complete */ /* TODO: keep one DMA (at half the size) in the background */ if(y) { - svga_screen_flush(screen, &fence); + svga_context_flush(svga, &fence); sws->fence_finish(sws, fence, 0); sws->fence_reference(sws, &fence, NULL); } @@ -269,10 +268,10 @@ svga_transfer_dma(struct svga_transfer *st, } } - svga_transfer_dma_band(st, transfer, y, h, srcy); + svga_transfer_dma_band(svga, st, transfer, y, h, srcy); if(transfer == SVGA3D_READ_HOST_VRAM) { - svga_screen_flush(screen, &fence); + svga_context_flush(svga, &fence); sws->fence_finish(sws, fence, 0); hw = sws->buffer_map(sws, st->hwbuf, PIPE_TRANSFER_READ); @@ -342,6 +341,7 @@ svga_texture_get_transfer(struct pipe_context *pipe, unsigned usage, const struct pipe_box *box) { + struct svga_context *svga = svga_context(pipe); struct svga_screen *ss = svga_screen(pipe->screen); struct svga_winsys_screen *sws = ss->sws; struct svga_transfer *st; @@ -365,12 +365,12 @@ svga_texture_get_transfer(struct pipe_context *pipe, st->hw_nblocksy = nblocksy; - st->hwbuf = svga_winsys_buffer_create(ss, + st->hwbuf = svga_winsys_buffer_create(svga, 1, 0, st->hw_nblocksy*st->base.stride); while(!st->hwbuf && (st->hw_nblocksy /= 2)) { - st->hwbuf = svga_winsys_buffer_create(ss, + st->hwbuf = svga_winsys_buffer_create(svga, 1, 0, st->hw_nblocksy*st->base.stride); @@ -393,7 +393,7 @@ svga_texture_get_transfer(struct pipe_context *pipe, } if (usage & PIPE_TRANSFER_READ) - svga_transfer_dma(st, SVGA3D_READ_HOST_VRAM); + svga_transfer_dma(svga, st, SVGA3D_READ_HOST_VRAM); return &st->base; @@ -445,13 +445,14 @@ static void svga_texture_transfer_destroy(struct pipe_context *pipe, struct pipe_transfer *transfer) { + struct svga_context *svga = svga_context(pipe); struct svga_texture *tex = svga_texture(transfer->resource); struct svga_screen *ss = svga_screen(pipe->screen); struct svga_winsys_screen *sws = ss->sws; struct svga_transfer *st = svga_transfer(transfer); if (st->base.usage & PIPE_TRANSFER_WRITE) { - svga_transfer_dma(st, SVGA3D_WRITE_HOST_VRAM); + svga_transfer_dma(svga, st, SVGA3D_WRITE_HOST_VRAM); ss->texture_timestamp++; tex->view_age[transfer->sr.level] = ++(tex->age); tex->defined[transfer->sr.face][transfer->sr.level] = TRUE; diff --git a/src/gallium/drivers/svga/svga_sampler_view.c b/src/gallium/drivers/svga/svga_sampler_view.c index fbae552f78f..6911f13f778 100644 --- a/src/gallium/drivers/svga/svga_sampler_view.c +++ b/src/gallium/drivers/svga/svga_sampler_view.c @@ -169,7 +169,7 @@ svga_validate_sampler_view(struct svga_context *svga, struct svga_sampler_view * for (i = v->min_lod; i <= v->max_lod; i++) { for (k = 0; k < numFaces; k++) { if (v->age < tex->view_age[i]) - svga_texture_copy_handle(svga, NULL, + svga_texture_copy_handle(svga, tex->handle, 0, 0, 0, i, k, v->handle, 0, 0, 0, i - v->min_lod, k, u_minify(tex->b.b.width0, i), diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index aeda3dcad51..27ac09e275d 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -34,6 +34,7 @@ #include "svga_resource_texture.h" #include "svga_resource.h" #include "svga_debug.h" +#include "svga_surface.h" #include "svga3d_shaderdefs.h" @@ -346,8 +347,6 @@ svga_destroy_screen( struct pipe_screen *screen ) pipe_mutex_destroy(svgascreen->swc_mutex); pipe_mutex_destroy(svgascreen->tex_mutex); - svgascreen->swc->destroy(svgascreen->swc); - svgascreen->sws->destroy(svgascreen->sws); FREE(svgascreen); @@ -397,6 +396,7 @@ svga_screen_create(struct svga_winsys_screen *sws) screen->fence_finish = svga_fence_finish; svgascreen->sws = sws; + svga_screen_init_surface_functions(screen); svga_init_screen_resource_functions(svgascreen); svgascreen->use_ps30 = @@ -416,10 +416,6 @@ svga_screen_create(struct svga_winsys_screen *sws) svgascreen->use_vs30 = svgascreen->use_ps30 = FALSE; #endif - svgascreen->swc = sws->context_create(sws); - if(!svgascreen->swc) - goto error2; - pipe_mutex_init(svgascreen->tex_mutex); pipe_mutex_init(svgascreen->swc_mutex); @@ -432,25 +428,6 @@ error1: return NULL; } -void svga_screen_flush( struct svga_screen *svgascreen, - struct pipe_fence_handle **pfence ) -{ - struct pipe_fence_handle *fence = NULL; - - SVGA_DBG(DEBUG_PERF, "%s\n", __FUNCTION__); - - pipe_mutex_lock(svgascreen->swc_mutex); - svgascreen->swc->flush(svgascreen->swc, &fence); - pipe_mutex_unlock(svgascreen->swc_mutex); - - svga_screen_cache_flush(svgascreen, fence); - - if(pfence) - *pfence = fence; - else - svgascreen->sws->fence_reference(svgascreen->sws, &fence, NULL); -} - struct svga_winsys_screen * svga_winsys_screen(struct pipe_screen *screen) { diff --git a/src/gallium/drivers/svga/svga_screen.h b/src/gallium/drivers/svga/svga_screen.h index 9dc229b0a87..86ec89d88c1 100644 --- a/src/gallium/drivers/svga/svga_screen.h +++ b/src/gallium/drivers/svga/svga_screen.h @@ -60,14 +60,11 @@ struct svga_screen boolean no_sampler_view; } debug; - /* The screen needs its own context */ - struct svga_winsys_context *swc; - struct SVGACmdMemory *fifo; - unsigned texture_timestamp; pipe_mutex tex_mutex; - pipe_mutex swc_mutex; /* Protects the use of swc and dirty_buffers */ - + + pipe_mutex swc_mutex; /* Used for buffer uploads */ + struct svga_host_surface_cache cache; }; @@ -83,7 +80,4 @@ struct svga_screen * svga_screen(struct pipe_screen *screen); #endif -void svga_screen_flush( struct svga_screen *svga_screen, - struct pipe_fence_handle **pfence ); - #endif /* SVGA_SCREEN_H */ diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c index dc1d9a850df..bd2cc380048 100644 --- a/src/gallium/drivers/svga/svga_surface.c +++ b/src/gallium/drivers/svga/svga_surface.c @@ -43,7 +43,6 @@ void svga_texture_copy_handle(struct svga_context *svga, - struct svga_screen *ss, struct svga_winsys_surface *src_handle, unsigned src_x, unsigned src_y, unsigned src_z, unsigned src_level, unsigned src_face, @@ -56,7 +55,7 @@ svga_texture_copy_handle(struct svga_context *svga, enum pipe_error ret; SVGA3dCopyBox box, *boxes; - assert(svga || ss); + assert(svga); src.handle = src_handle; src.real_level = src_level; @@ -84,39 +83,20 @@ svga_texture_copy_handle(struct svga_context *svga, dst_handle, dst_level, dst_x, dst_y, dst_z); */ - if (svga) { + ret = SVGA3D_BeginSurfaceCopy(svga->swc, + &src.base, + &dst.base, + &boxes, 1); + if(ret != PIPE_OK) { + svga_context_flush(svga, NULL); ret = SVGA3D_BeginSurfaceCopy(svga->swc, &src.base, &dst.base, &boxes, 1); - if(ret != PIPE_OK) { - svga_context_flush(svga, NULL); - ret = SVGA3D_BeginSurfaceCopy(svga->swc, - &src.base, - &dst.base, - &boxes, 1); - assert(ret == PIPE_OK); - } - *boxes = box; - SVGA_FIFOCommitAll(svga->swc); - } else { - pipe_mutex_lock(ss->swc_mutex); - ret = SVGA3D_BeginSurfaceCopy(ss->swc, - &src.base, - &dst.base, - &boxes, 1); - if(ret != PIPE_OK) { - ss->swc->flush(ss->swc, NULL); - ret = SVGA3D_BeginSurfaceCopy(ss->swc, - &src.base, - &dst.base, - &boxes, 1); - assert(ret == PIPE_OK); - } - *boxes = box; - SVGA_FIFOCommitAll(ss->swc); - pipe_mutex_unlock(ss->swc_mutex); + assert(ret == PIPE_OK); } + *boxes = box; + SVGA_FIFOCommitAll(svga->swc); } @@ -183,7 +163,6 @@ svga_texture_view_surface(struct pipe_context *pipe, 1); svga_texture_copy_handle(svga_context(pipe), - ss, tex->handle, 0, 0, z_offset, i + start_mip, @@ -346,7 +325,7 @@ svga_propagate_surface(struct pipe_context *pipe, struct pipe_surface *surf) if (s->handle != tex->handle) { SVGA_DBG(DEBUG_VIEWS, "svga: Surface propagate: tex %p, level %u, from %p\n", tex, surf->level, surf); - svga_texture_copy_handle(svga_context(pipe), ss, + svga_texture_copy_handle(svga_context(pipe), s->handle, 0, 0, 0, s->real_level, s->real_face, tex->handle, 0, 0, surf->zslice, surf->level, surf->face, u_minify(tex->b.b.width0, surf->level), diff --git a/src/gallium/drivers/svga/svga_surface.h b/src/gallium/drivers/svga/svga_surface.h index b50ecdc9942..13bd5b19b61 100644 --- a/src/gallium/drivers/svga/svga_surface.h +++ b/src/gallium/drivers/svga/svga_surface.h @@ -74,7 +74,6 @@ svga_texture_view_surface(struct pipe_context *pipe, void svga_texture_copy_handle(struct svga_context *svga, - struct svga_screen *ss, struct svga_winsys_surface *src_handle, unsigned src_x, unsigned src_y, unsigned src_z, unsigned src_level, unsigned src_face, diff --git a/src/gallium/drivers/svga/svga_winsys.h b/src/gallium/drivers/svga/svga_winsys.h index 3892addafd1..c155f5dae2f 100644 --- a/src/gallium/drivers/svga/svga_winsys.h +++ b/src/gallium/drivers/svga/svga_winsys.h @@ -85,7 +85,7 @@ struct svga_winsys_context /** * Emit a relocation for a host surface. * - * @param flags PIPE_BUFFER_USAGE_GPU_READ/WRITE + * @param flags bitmask of SVGA_RELOC_* flags * * NOTE: Order of this call does matter. It should be the same order * as relocations appear in the command buffer. @@ -99,7 +99,7 @@ struct svga_winsys_context /** * Emit a relocation for a guest memory region. * - * @param flags PIPE_BUFFER_USAGE_GPU_READ/WRITE + * @param flags bitmask of SVGA_RELOC_* flags * * NOTE: Order of this call does matter. It should be the same order * as relocations appear in the command buffer. @@ -230,7 +230,7 @@ struct svga_winsys_screen /** * Buffer management. Buffer attributes are mostly fixed over its lifetime. * - * XXX usage seems to be a bitmask of SVGA_BUFFER_USAGE_* flags. + * @param usage bitmask of SVGA_BUFFER_USAGE_* flags. * * alignment indicates the client's alignment requirements, eg for * SSE instructions. @@ -243,15 +243,12 @@ struct svga_winsys_screen /** * Map the entire data store of a buffer object into the client's address. - * flags is a bitmask of: - * - PB_USAGE_CPU_READ/WRITE - * - PB_USAGE_DONTBLOCK - * - PB_USAGE_UNSYNCHRONIZED + * flags is a bitmaks of PIPE_TRANSFER_* */ void * (*buffer_map)( struct svga_winsys_screen *sws, struct svga_winsys_buffer *buf, - unsigned usage ); + unsigned flags ); void (*buffer_unmap)( struct svga_winsys_screen *sws, diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c index 71ba1e909df..3d1fb96b91e 100644 --- a/src/gallium/drivers/trace/tr_context.c +++ b/src/gallium/drivers/trace/tr_context.c @@ -812,7 +812,7 @@ trace_context_delete_vertex_elements_state(struct pipe_context *_pipe, struct trace_context *tr_ctx = trace_context(_pipe); struct pipe_context *pipe = tr_ctx->pipe; - trace_dump_call_begin("pipe_context", "delete_verte_elements_state"); + trace_dump_call_begin("pipe_context", "delete_vertex_elements_state"); trace_dump_arg(ptr, pipe); trace_dump_arg(ptr, state); diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h index e21aaacc18a..0a70237f260 100644 --- a/src/gallium/include/pipe/p_shader_tokens.h +++ b/src/gallium/include/pipe/p_shader_tokens.h @@ -73,9 +73,8 @@ enum tgsi_file_type { TGSI_FILE_SAMPLER =5, TGSI_FILE_ADDRESS =6, TGSI_FILE_IMMEDIATE =7, - TGSI_FILE_LOOP =8, - TGSI_FILE_PREDICATE =9, - TGSI_FILE_SYSTEM_VALUE =10, + TGSI_FILE_PREDICATE =8, + TGSI_FILE_SYSTEM_VALUE =9, TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */ }; diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c index a808d2d9ddf..203682ef330 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.c +++ b/src/gallium/state_trackers/dri/common/dri_context.c @@ -49,7 +49,7 @@ dri_init_extensions(struct dri_context *ctx) } GLboolean -dri_create_context(const __GLcontextModes * visual, +dri_create_context(gl_api api, const __GLcontextModes * visual, __DRIcontext * cPriv, void *sharedContextPrivate) { __DRIscreen *sPriv = cPriv->driScreenPriv; diff --git a/src/gallium/state_trackers/dri/common/dri_context.h b/src/gallium/state_trackers/dri/common/dri_context.h index 9fe6b581016..54e56c64998 100644 --- a/src/gallium/state_trackers/dri/common/dri_context.h +++ b/src/gallium/state_trackers/dri/common/dri_context.h @@ -34,6 +34,7 @@ #include "pipe/p_compiler.h" #include "dri_wrapper.h" +#include "main/mtypes.h" struct pipe_context; struct pipe_fence; @@ -83,7 +84,8 @@ struct dri_context * dri_get_current(__DRIscreen * driScreenPriv); boolean -dri_create_context(const __GLcontextModes * visual, +dri_create_context(gl_api api, + const __GLcontextModes * visual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/gallium/state_trackers/dri/drm/dri1.c b/src/gallium/state_trackers/dri/drm/dri1.c index 23c21ed8398..326ff8bcada 100644 --- a/src/gallium/state_trackers/dri/drm/dri1.c +++ b/src/gallium/state_trackers/dri/drm/dri1.c @@ -33,6 +33,7 @@ #include "util/u_memory.h" #include "util/u_rect.h" +#include "util/u_surface.h" #include "util/u_inlines.h" #include "pipe/p_context.h" #include "state_tracker/dri1_api.h" diff --git a/src/gallium/state_trackers/vega/renderer.c b/src/gallium/state_trackers/vega/renderer.c index 48fbc3b330e..e6aea482a76 100644 --- a/src/gallium/state_trackers/vega/renderer.c +++ b/src/gallium/state_trackers/vega/renderer.c @@ -40,6 +40,7 @@ #include "util/u_memory.h" #include "util/u_rect.h" #include "util/u_sampler.h" +#include "util/u_surface.h" #include "cso_cache/cso_context.h" diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c index d5a1be81747..65be8c332a5 100644 --- a/src/gallium/state_trackers/xorg/xorg_exa.c +++ b/src/gallium/state_trackers/xorg/xorg_exa.c @@ -46,6 +46,7 @@ #include "util/u_math.h" #include "util/u_debug.h" #include "util/u_format.h" +#include "util/u_surface.h" #define DEBUG_PRINT 0 #define ROUND_UP_TEXTURES 1 diff --git a/src/gallium/state_trackers/xorg/xorg_renderer.c b/src/gallium/state_trackers/xorg/xorg_renderer.c index 13fa561390f..583493116d5 100644 --- a/src/gallium/state_trackers/xorg/xorg_renderer.c +++ b/src/gallium/state_trackers/xorg/xorg_renderer.c @@ -9,6 +9,7 @@ #include "util/u_memory.h" #include "util/u_rect.h" #include "util/u_sampler.h" +#include "util/u_surface.h" #include "util/u_inlines.h" diff --git a/src/gallium/targets/dri-swrast/Makefile b/src/gallium/targets/dri-swrast/Makefile index fcfd690e438..3db9781c209 100644 --- a/src/gallium/targets/dri-swrast/Makefile +++ b/src/gallium/targets/dri-swrast/Makefile @@ -8,7 +8,8 @@ DRIVER_DEFINES = -D__NOT_HAVE_DRM_H -DGALLIUM_SOFTPIPE PIPE_DRIVERS = \ $(TOP)/src/gallium/state_trackers/dri/sw/libdrisw.a \ $(TOP)/src/gallium/winsys/sw/dri/libswdri.a \ - $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a + $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \ + $(TOP)/src/gallium/drivers/trace/libtrace.a SWRAST_COMMON_GALLIUM_SOURCES = \ $(TOP)/src/mesa/drivers/dri/common/utils.c \ diff --git a/src/gallium/targets/dri-swrast/swrast_drm_api.c b/src/gallium/targets/dri-swrast/swrast_drm_api.c index e8d6d8069cc..84142be80c8 100644 --- a/src/gallium/targets/dri-swrast/swrast_drm_api.c +++ b/src/gallium/targets/dri-swrast/swrast_drm_api.c @@ -31,6 +31,7 @@ #include "state_tracker/drm_api.h" #include "state_tracker/sw_winsys.h" #include "dri_sw_winsys.h" +#include "trace/tr_public.h" /* Copied from targets/libgl-xlib */ @@ -80,7 +81,7 @@ swrast_create_screen(struct sw_winsys *winsys) screen = softpipe_create_screen( winsys ); #endif - return screen; + return trace_screen_create(screen);; } struct pipe_screen * diff --git a/src/gallium/tests/python/retrace/interpreter.py b/src/gallium/tests/python/retrace/interpreter.py index 7118ff85ed8..e58a69322ea 100755 --- a/src/gallium/tests/python/retrace/interpreter.py +++ b/src/gallium/tests/python/retrace/interpreter.py @@ -432,6 +432,9 @@ class Context(Object): swizzle_b = templ.swizzle_g, swizzle_a = templ.swizzle_a) + def sampler_view_destroy(self, view): + pass + def set_fragment_sampler_views(self, num, views): for i in range(num): self.real.set_fragment_sampler_view(i, views[i]) @@ -456,6 +459,10 @@ class Context(Object): return elements[0:num_elements] def bind_vertex_elements_state(self, state): + if state is None: + self.real.set_vertex_elements(0) + return + elements = state num_elements = len(elements) self.velems = elements diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c index 9824ada5b33..b8366498922 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c @@ -22,6 +22,8 @@ struct radeon_drm_buffer { boolean flinked; uint32_t flink; + uint32_t tileflags; + uint32_t pitch; struct radeon_drm_buffer *next, *prev; }; @@ -318,6 +320,9 @@ void radeon_drm_bufmgr_get_tiling(struct pb_buffer *_buf, radeon_bo_get_tiling(buf->bo, &flags, &pitch); + buf->tileflags = flags; + buf->pitch = pitch; + *microtiled = R300_BUFFER_LINEAR; *macrotiled = R300_BUFFER_LINEAR; if (flags & RADEON_BO_FLAGS_MICRO_TILE) @@ -333,7 +338,7 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf, uint32_t pitch) { struct radeon_drm_buffer *buf = get_drm_buffer(_buf); - uint32_t flags = 0, old_flags, old_pitch; + uint32_t flags = 0; if (microtiled == R300_BUFFER_TILED) flags |= RADEON_BO_FLAGS_MICRO_TILE; /* XXX Remove this ifdef when libdrm version 2.4.19 becomes mandatory. */ @@ -344,17 +349,15 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf, if (macrotiled == R300_BUFFER_TILED) flags |= RADEON_BO_FLAGS_MACRO_TILE; - radeon_bo_get_tiling(buf->bo, &old_flags, &old_pitch); - - if (flags != old_flags || pitch != old_pitch) { + if (flags != buf->tileflags || pitch != buf->pitch) { /* Tiling determines how DRM treats the buffer data. * We must flush CS when changing it if the buffer is referenced. */ if (radeon_bo_is_referenced_by_cs(buf->bo, buf->mgr->rws->cs)) { buf->mgr->rws->flush_cb(buf->mgr->rws->flush_data); } - } - radeon_bo_set_tiling(buf->bo, flags, pitch); + radeon_bo_set_tiling(buf->bo, flags, pitch); + } } boolean radeon_drm_bufmgr_add_buffer(struct pb_buffer *_buf, diff --git a/src/gallium/winsys/radeon/drm/radeon_r300.c b/src/gallium/winsys/radeon/drm/radeon_r300.c index 80923de9373..fb779e4033b 100644 --- a/src/gallium/winsys/radeon/drm/radeon_r300.c +++ b/src/gallium/winsys/radeon/drm/radeon_r300.c @@ -181,7 +181,7 @@ static boolean radeon_check_cs(struct r300_winsys_screen *rws, int size) struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws); struct radeon_cs *cs = ws->cs; - return radeon_validate(rws) && cs->cdw + size <= cs->ndw; + return cs->cdw + size <= cs->ndw; } static void radeon_begin_cs(struct r300_winsys_screen *rws, diff --git a/src/gles/Makefile b/src/gles/Makefile new file mode 100644 index 00000000000..d023c14049f --- /dev/null +++ b/src/gles/Makefile @@ -0,0 +1,70 @@ +TOP = ../.. +MESA = $(TOP)/src/mesa +include $(TOP)/configs/current +include $(MESA)/sources.mak + +GLESv1_CM_ASM := $(addprefix $(MESA)/es/glapi/glapi-es1/,$(GLAPI_ASM_SOURCES)) +GLESv2_ASM := $(addprefix $(MESA)/es/glapi/glapi-es2/,$(GLAPI_ASM_SOURCES)) +API_SOURCES := $(addprefix $(MESA)/,$(GLAPI_SOURCES)) + +$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : PREFIX = es1 +$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : NAME = GLESv1_CM + +$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : PREFIX = es2 +$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : NAME = GLESv2 + +INCLUDES = -I$(TOP)/include -I$(MESA)/es/glapi/glapi-$(PREFIX) -I$(MESA) + +OBJECTS = \ + $(notdir $(GLAPI_ASM_SOURCES:%.S=%.o)) \ + $(notdir $(GLAPI_SOURCES:%.c=%.o)) + +GLESv1_CM_OBJECTS = $(addprefix es1-,$(OBJECTS)) +GLESv2_OBJECTS = $(addprefix es2-,$(OBJECTS)) + +es1-%.o: $(dir $(GLESv1_CM_ASM))%.S + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< +es1-%.o: $(MESA)/glapi/%.c + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< + +es2-%.o: $(dir $(GLESv2_ASM))%.S + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< +es2-%.o: $(MESA)/glapi/%.c + $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $< + +default: depend \ + $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \ + $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) + +$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : $(GLESv1_CM_OBJECTS) +$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : $(GLESv2_OBJECTS) + +$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \ +$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : Makefile + $(MKLIB) -o $($(NAME)_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ + -major 1 -minor 2 $(MKLIB_OPTIONS) \ + -install $(TOP)/$(LIB_DIR) -id \ + $(INSTALL_LIB_DIR)/lib$($(NAME)_LIB).1.dylib \ + $($(NAME)_LIB_DEPS) $($(NAME)_OBJECTS) + +depend: Makefile + rm -f depend + touch depend + $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(API_SOURCES) \ + $(ES1_API_ASM) $(ES2_API_ASM) + +# Emacs tags +tags: + etags `find . -name \*.[ch]` `find $(TOP)/include` + +install: $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) + $(MAKE) -C $(TOP)/src/mesa install-es2 install-es1 + +# Remove .o and backup files +clean: + -rm -f $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB) + -rm -f $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB) + -rm -f *.o *~ + -rm -f depend depend.bak + +-include depend diff --git a/src/glx/glxext.c b/src/glx/glxext.c index 82d3a56f37d..0e148edf8eb 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -584,6 +584,9 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count, config->yInverted = *bp++; break; #endif + case GLX_USE_GL: + if (fbconfig_style_tags) *bp++; + break; case None: i = count; break; diff --git a/src/mesa/Makefile b/src/mesa/Makefile index 8c0ebf84c4b..72f983e10a0 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -16,14 +16,32 @@ include sources.mak .S.o: $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@ +CFLAGS += $(API_DEFINES) # Default: build dependencies, then asm_subdirs, GLSL built-in lib, # then convenience libs (.a) and finally the device drivers: -default: depend asm_subdirs glsl_builtin libmesa.a libmesagallium.a \ +default: depend es_glapi asm_subdirs glsl_builtin libmesa.a libmesagallium.a \ libglapi.a driver_subdirs +es_glapi: + @for api in $(APIS) ; do \ + case "$$api" in \ + es1|es2) $(MAKE) -C es/glapi $$api;; \ + esac; \ + done + +main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ + +main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py + $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ + +main/get_es1.c: main/get_gen_es.py + $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@ +main/get_es2.c: main/get_gen_es.py + $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@ ###################################################################### # Helper libraries used by many drivers: @@ -94,14 +112,23 @@ install: default dri) $(MAKE) install-libgl install-dri || exit 1 ;; \ *) $(MAKE) install-libgl || exit 1 ;; \ esac ; \ + done; \ + for api in $(APIS) ; do \ + case "$$api" in \ + es1) $(MAKE) install-es1 || exit 1;; \ + es2) $(MAKE) install-es2 || exit 1;; \ + esac; \ done - -gl_pcedit = sed \ +pcedit = \ -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ + + +gl_pcedit = sed \ + $(pcedit) \ -e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \ -e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \ -e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \ @@ -110,11 +137,24 @@ gl_pcedit = sed \ gl.pc: gl.pc.in $(gl_pcedit) $< > $@ +glesv2_pcedit = sed \ + $(pcedit) \ + -e 's,@GLESv2_PC_LIB_PRIV@,$(GLESv2_PC_LIB_PRIV),' \ + -e 's,@GLESv2_LIB@,$(GLESv2_LIB),' + +glesv2.pc: glesv2.pc.in + $(glesv2_pcedit) $< > $@ + +glesv1_cm_pcedit = sed \ + $(pcedit) \ + -e 's,@GLESv1_CM_PC_LIB_PRIV@,$(GLESv1_CM_PC_LIB_PRIV),' \ + -e 's,@GLESv1_CM_LIB@,$(GLESv1_CM_LIB),' + +glesv1_cm.pc: glesv1_cm.pc.in + $(glesv1_cm_pcedit) $< > $@ + osmesa_pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ - -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ - -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ + $(pcedit) \ -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \ -e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \ -e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),' @@ -134,6 +174,30 @@ install-libgl: default gl.pc install-headers $(DESTDIR)$(INSTALL_LIB_DIR) $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig +install-headers-es1: + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES + $(INSTALL) -m 644 $(TOP)/include/GLES/*.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GLES + +install-es1: default glesv1_cm.pc install-headers-es1 + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB) \ + $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -m 644 glesv1_cm.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + +install-headers-es2: + $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES2 + $(INSTALL) -m 644 $(TOP)/include/GLES2/*.h \ + $(DESTDIR)$(INSTALL_INC_DIR)/GLES2 + +install-es2: default glesv2.pc install-headers-es2 + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB) \ + $(DESTDIR)$(INSTALL_LIB_DIR) + $(INSTALL) -m 644 glesv2.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig + install-osmesa: default osmesa.pc $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template index 4cdd51efeee..4b9a0c1786d 100644 --- a/src/mesa/drivers/dri/Makefile.template +++ b/src/mesa/drivers/dri/Makefile.template @@ -31,6 +31,7 @@ SHARED_INCLUDES = \ -I$(TOP)/src/egl/drivers/dri \ $(LIBDRM_CFLAGS) +CFLAGS += $(API_DEFINES) ##### RULES ##### diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c index d2ffa5da642..360c5247548 100644 --- a/src/mesa/drivers/dri/common/dri_util.c +++ b/src/mesa/drivers/dri/common/dri_util.c @@ -612,7 +612,8 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config, pcp->hHWContext = hwContext; - if ( !(*psp->DriverAPI.CreateContext)(&config->modes, pcp, shareCtx) ) { + if ( !(*psp->DriverAPI.CreateContext)(API_OPENGL, + &config->modes, pcp, shareCtx) ) { free(pcp); return NULL; } @@ -620,15 +621,62 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config, return pcp; } +static unsigned int +dri2GetAPIMask(__DRIscreen *screen) +{ + return screen->api_mask; +} + +static __DRIcontext * +dri2CreateNewContextForAPI(__DRIscreen *screen, int api, + const __DRIconfig *config, + __DRIcontext *shared, void *data) +{ + __DRIcontext *context; + void *shareCtx = (shared != NULL) ? shared->driverPrivate : NULL; + gl_api mesa_api; + + if (!(screen->api_mask & (1 << api))) + return NULL; + + switch (api) { + case __DRI_API_OPENGL: + mesa_api = API_OPENGL; + break; + case __DRI_API_GLES: + mesa_api = API_OPENGLES; + break; + case __DRI_API_GLES2: + mesa_api = API_OPENGLES2; + break; + } + + context = malloc(sizeof *context); + if (!context) + return NULL; + + context->driScreenPriv = screen; + context->driDrawablePriv = NULL; + context->loaderPrivate = data; + + if (!(*screen->DriverAPI.CreateContext)(api, &config->modes, + context, shareCtx) ) { + free(context); + return NULL; + } + + return context; +} + static __DRIcontext * dri2CreateNewContext(__DRIscreen *screen, const __DRIconfig *config, __DRIcontext *shared, void *data) { - return driCreateNewContext(screen, config, 0, shared, 0, data); + return dri2CreateNewContextForAPI(screen, __DRI_API_OPENGL, + config, shared, data); } - static int driCopyContext(__DRIcontext *dest, __DRIcontext *src, unsigned long mask) { @@ -766,6 +814,7 @@ driCreateNewScreen(int scrn, psp->dri2.enabled = GL_FALSE; psp->DriverAPI = driDriverAPI; + psp->api_mask = (1 << __DRI_API_OPENGL); *driver_modes = driDriverAPI.InitScreen(psp); if (*driver_modes == NULL) { @@ -812,6 +861,7 @@ dri2CreateNewScreen(int scrn, int fd, psp->dri2.enabled = GL_TRUE; psp->DriverAPI = driDriverAPI; + psp->api_mask = (1 << __DRI_API_OPENGL); *driver_configs = driDriverAPI.InitScreen2(psp); if (*driver_configs == NULL) { free(psp); @@ -863,6 +913,8 @@ const __DRIdri2Extension driDRI2Extension = { dri2CreateNewScreen, dri2CreateNewDrawable, dri2CreateNewContext, + dri2GetAPIMask, + dri2CreateNewContextForAPI }; const __DRI2configQueryExtension dri2ConfigQueryExtension = { diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h index 0fe6f1e246c..ab6c6e57afc 100644 --- a/src/mesa/drivers/dri/common/dri_util.h +++ b/src/mesa/drivers/dri/common/dri_util.h @@ -53,6 +53,7 @@ #include <xf86drm.h> #include "xmlconfig.h" #include "main/glheader.h" +#include "main/mtypes.h" #include "GL/internal/glcore.h" #include "GL/internal/dri_interface.h" @@ -148,8 +149,9 @@ struct __DriverAPIRec { /** * Context creation callback */ - GLboolean (*CreateContext)(const __GLcontextModes *glVis, - __DRIcontext *driContextPriv, + GLboolean (*CreateContext)(gl_api api, + const __GLcontextModes *glVis, + __DRIcontext *driContextPriv, void *sharedContextPrivate); /** @@ -531,6 +533,7 @@ struct __DRIscreenRec { drmLock *lock; driOptionCache optionCache; + unsigned int api_mask; }; extern void diff --git a/src/mesa/drivers/dri/common/drisw_util.c b/src/mesa/drivers/dri/common/drisw_util.c index 8d08b93bfb5..1529c23b16d 100644 --- a/src/mesa/drivers/dri/common/drisw_util.c +++ b/src/mesa/drivers/dri/common/drisw_util.c @@ -112,7 +112,8 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config, pcp->driDrawablePriv = NULL; pcp->driReadablePriv = NULL; - if (!driDriverAPI.CreateContext(&config->modes, pcp, shareCtx)) { + if (!driDriverAPI.CreateContext(API_OPENGL, + &config->modes, pcp, shareCtx)) { FREE(pcp); return NULL; } diff --git a/src/mesa/drivers/dri/common/drisw_util.h b/src/mesa/drivers/dri/common/drisw_util.h index 08d5a116e96..9c3d01c99c0 100644 --- a/src/mesa/drivers/dri/common/drisw_util.h +++ b/src/mesa/drivers/dri/common/drisw_util.h @@ -36,6 +36,8 @@ #ifndef _DRISW_UTIL_H #define _DRISW_UTIL_H +#include "main/mtypes.h" + #include <GL/gl.h> #include <GL/internal/glcore.h> #include <GL/internal/dri_interface.h> @@ -57,7 +59,8 @@ struct __DriverAPIRec { void (*DestroyScreen)(__DRIscreen *driScrnPriv); - GLboolean (*CreateContext)(const __GLcontextModes *glVis, + GLboolean (*CreateContext)(gl_api glapi, + const __GLcontextModes *glVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 34e34606b4b..49f3ee88a61 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -166,7 +166,8 @@ static const struct dri_debug_control debug_control[] = }; GLboolean -i810CreateContext( const __GLcontextModes *mesaVis, +i810CreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/i810/i810screen.h b/src/mesa/drivers/dri/i810/i810screen.h index 734e2fb002d..fe6db7e6e1c 100644 --- a/src/mesa/drivers/dri/i810/i810screen.h +++ b/src/mesa/drivers/dri/i810/i810screen.h @@ -78,7 +78,8 @@ typedef struct { extern GLboolean -i810CreateContext( const __GLcontextModes *mesaVis, +i810CreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/i915/Makefile b/src/mesa/drivers/dri/i915/Makefile index 5b49d0c77c6..71ee753748c 100644 --- a/src/mesa/drivers/dri/i915/Makefile +++ b/src/mesa/drivers/dri/i915/Makefile @@ -16,6 +16,7 @@ DRIVER_SOURCES = \ intel_batchbuffer.c \ intel_clear.c \ intel_extensions.c \ + intel_extensions_es2.c \ intel_mipmap_tree.c \ intel_tex_layout.c \ intel_tex_image.c \ diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c index ebe8b15ca73..d52ea9812f7 100644 --- a/src/mesa/drivers/dri/i915/i830_context.c +++ b/src/mesa/drivers/dri/i915/i830_context.c @@ -63,7 +63,7 @@ i830CreateContext(const __GLcontextModes * mesaVis, i830InitVtbl(i830); i830InitDriverFunctions(&functions); - if (!intelInitContext(intel, mesaVis, driContextPriv, + if (!intelInitContext(intel, __DRI_API_OPENGL, mesaVis, driContextPriv, sharedContextPrivate, &functions)) { FREE(i830); return GL_FALSE; diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 4d86aae87d9..b3fe1c05d66 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -94,7 +94,8 @@ i915InitDriverFunctions(struct dd_function_table *functions) extern const struct tnl_pipeline_stage *intel_pipeline[]; GLboolean -i915CreateContext(const __GLcontextModes * mesaVis, +i915CreateContext(int api, + const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate) { @@ -114,7 +115,7 @@ i915CreateContext(const __GLcontextModes * mesaVis, i915InitDriverFunctions(&functions); - if (!intelInitContext(intel, mesaVis, driContextPriv, + if (!intelInitContext(intel, api, mesaVis, driContextPriv, sharedContextPrivate, &functions)) { FREE(i915); return GL_FALSE; diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index b5169280f6b..a7b9aae6f95 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -318,7 +318,8 @@ do { \ /*====================================================================== * i915_context.c */ -extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis, +extern GLboolean i915CreateContext(int api, + const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i915/intel_extensions_es2.c b/src/mesa/drivers/dri/i915/intel_extensions_es2.c new file mode 120000 index 00000000000..0ec1ceee787 --- /dev/null +++ b/src/mesa/drivers/dri/i915/intel_extensions_es2.c @@ -0,0 +1 @@ +../intel/intel_extensions_es2.c
\ No newline at end of file diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile index 842d4b7aa10..a0039e800d2 100644 --- a/src/mesa/drivers/dri/i965/Makefile +++ b/src/mesa/drivers/dri/i965/Makefile @@ -13,6 +13,7 @@ DRIVER_SOURCES = \ intel_context.c \ intel_decode.c \ intel_extensions.c \ + intel_extensions_es2.c \ intel_fbo.c \ intel_mipmap_tree.c \ intel_regions.c \ diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 360fc12621a..523a11aea33 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -68,7 +68,8 @@ static void brwInitDriverFunctions( struct dd_function_table *functions ) functions->Viewport = intel_viewport; } -GLboolean brwCreateContext( const __GLcontextModes *mesaVis, +GLboolean brwCreateContext( int api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate) { @@ -85,7 +86,7 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis, brwInitVtbl( brw ); brwInitDriverFunctions( &functions ); - if (!intelInitContext( intel, mesaVis, driContextPriv, + if (!intelInitContext( intel, api, mesaVis, driContextPriv, sharedContextPrivate, &functions )) { printf("%s: failed to init intel context\n", __FUNCTION__); FREE(brw); diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 2855c93ea66..1f09651126b 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -687,7 +687,8 @@ void brwInitVtbl( struct brw_context *brw ); /*====================================================================== * brw_context.c */ -GLboolean brwCreateContext( const __GLcontextModes *mesaVis, +GLboolean brwCreateContext( int api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/i965/intel_extensions_es2.c b/src/mesa/drivers/dri/i965/intel_extensions_es2.c new file mode 120000 index 00000000000..0ec1ceee787 --- /dev/null +++ b/src/mesa/drivers/dri/i965/intel_extensions_es2.c @@ -0,0 +1 @@ +../intel/intel_extensions_es2.c
\ No newline at end of file diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 2ccc12010ed..8ee9a292a1b 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -586,6 +586,7 @@ intelInitDriverFunctions(struct dd_function_table *functions) GLboolean intelInitContext(struct intel_context *intel, + int api, const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate, @@ -601,8 +602,8 @@ intelInitContext(struct intel_context *intel, if (intelScreen->bufmgr == NULL) return GL_FALSE; - if (!_mesa_initialize_context(&intel->ctx, mesaVis, shareCtx, - functions, (void *) intel)) { + if (!_mesa_initialize_context_for_api(&intel->ctx, api, mesaVis, shareCtx, + functions, (void *) intel)) { printf("%s: failed to init mesa context\n", __FUNCTION__); return GL_FALSE; } @@ -736,7 +737,16 @@ intelInitContext(struct intel_context *intel, intel->RenderIndex = ~0; - intelInitExtensions(ctx); + switch (ctx->API) { + case API_OPENGL: + intelInitExtensions(ctx); + break; + case API_OPENGLES: + break; + case API_OPENGLES2: + intelInitExtensionsES2(ctx); + break; + } INTEL_DEBUG = driParseDebugString(getenv("INTEL_DEBUG"), debug_control); if (INTEL_DEBUG & DEBUG_BUFMGR) diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 75dabc554c6..02bb4d0d640 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -364,6 +364,7 @@ extern int INTEL_DEBUG; */ extern GLboolean intelInitContext(struct intel_context *intel, + int api, const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate, diff --git a/src/mesa/drivers/dri/intel/intel_extensions.h b/src/mesa/drivers/dri/intel/intel_extensions.h index e78e07356e7..236442a4d66 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.h +++ b/src/mesa/drivers/dri/intel/intel_extensions.h @@ -33,7 +33,7 @@ extern void intelInitExtensions(GLcontext *ctx); extern void -intelFlushDrawable(__DRIdrawable *drawable); +intelInitExtensionsES2(GLcontext *ctx); #endif diff --git a/src/mesa/drivers/dri/intel/intel_extensions_es2.c b/src/mesa/drivers/dri/intel/intel_extensions_es2.c new file mode 100644 index 00000000000..baf8e130010 --- /dev/null +++ b/src/mesa/drivers/dri/intel/intel_extensions_es2.c @@ -0,0 +1,94 @@ +/************************************************************************** + * + * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR + * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + **************************************************************************/ + +#include "main/extensions.h" + +#include "intel_extensions.h" +#include "utils.h" + +static const char *es2_extensions[] = { + /* Used by mesa internally (cf all_mesa_extensions in ../common/utils.c) */ + "GL_ARB_draw_buffers", + "GL_ARB_multisample", + "GL_ARB_texture_compression", + "GL_ARB_transpose_matrix", + "GL_ARB_vertex_buffer_object", + "GL_ARB_window_pos", + "GL_EXT_blend_func_separate", + "GL_EXT_compiled_vertex_array", + "GL_EXT_multi_draw_arrays", + "GL_EXT_polygon_offset", + "GL_EXT_texture_object", + "GL_EXT_vertex_array", + "GL_IBM_multimode_draw_arrays", + "GL_MESA_window_pos", + "GL_NV_vertex_program", + + /* Required by GLES2 */ + "GL_ARB_fragment_program", + "GL_ARB_fragment_shader", + "GL_ARB_multitexture", + "GL_ARB_shader_objects", + "GL_ARB_texture_cube_map", + "GL_ARB_texture_mirrored_repeat", + "GL_ARB_texture_non_power_of_two", + "GL_ARB_vertex_shader", + "GL_EXT_blend_color", + "GL_EXT_blend_equation_separate", + "GL_EXT_blend_minmax", + "GL_EXT_blend_subtract", + "GL_EXT_stencil_wrap", + + /* Optional GLES2 */ + "GL_ARB_framebuffer_object", + "GL_EXT_texture_filter_anisotropic", + "GL_ARB_depth_texture", + "GL_EXT_packed_depth_stencil", + "GL_EXT_framebuffer_object", + +#if FEATURE_OES_EGL_image + "GL_OES_EGL_image", +#endif + + NULL, +}; + +/** + * Initializes potential list of extensions if ctx == NULL, or actually enables + * extensions for a context. + */ +void +intelInitExtensionsES2(GLcontext *ctx) +{ + int i; + + /* Can't use driInitExtensions() since it uses extensions from + * main/remap_helper.h when called the first time. */ + + for (i = 0; es2_extensions[i]; i++) + _mesa_enable_extension(ctx, es2_extensions[i]); +} diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index ea739a413e0..3aed253e240 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -357,15 +357,18 @@ extern GLboolean i830CreateContext(const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); -extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis, +extern GLboolean i915CreateContext(int api, + const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); -extern GLboolean brwCreateContext(const __GLcontextModes * mesaVis, +extern GLboolean brwCreateContext(int api, + const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate); static GLboolean -intelCreateContext(const __GLcontextModes * mesaVis, +intelCreateContext(gl_api api, + const __GLcontextModes * mesaVis, __DRIcontext * driContextPriv, void *sharedContextPrivate) { @@ -375,7 +378,7 @@ intelCreateContext(const __GLcontextModes * mesaVis, #ifdef I915 if (IS_9XX(intelScreen->deviceID)) { if (!IS_965(intelScreen->deviceID)) { - return i915CreateContext(mesaVis, driContextPriv, + return i915CreateContext(api, mesaVis, driContextPriv, sharedContextPrivate); } } else { @@ -384,7 +387,8 @@ intelCreateContext(const __GLcontextModes * mesaVis, } #else if (IS_965(intelScreen->deviceID)) - return brwCreateContext(mesaVis, driContextPriv, sharedContextPrivate); + return brwCreateContext(api, mesaVis, + driContextPriv, sharedContextPrivate); #endif fprintf(stderr, "Unrecognized deviceID %x\n", intelScreen->deviceID); return GL_FALSE; @@ -431,6 +435,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) struct intel_screen *intelScreen; GLenum fb_format[3]; GLenum fb_type[3]; + unsigned int api_mask; static const GLenum back_buffer_modes[] = { GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML @@ -457,6 +462,17 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) &intelScreen->deviceID)) return GL_FALSE; + api_mask = (1 << __DRI_API_OPENGL); +#if FEATURE_ES1 + api_mask |= (1 << __DRI_API_GLES); +#endif +#if FEATURE_ES2 + api_mask |= (1 << __DRI_API_GLES2); +#endif + + if (IS_9XX(intelScreen->deviceID) || IS_965(intelScreen->deviceID)) + psp->api_mask = api_mask; + if (!intel_init_bufmgr(intelScreen)) return GL_FALSE; diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c index 77e7e53ce04..72a44d96424 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.c +++ b/src/mesa/drivers/dri/mach64/mach64_context.c @@ -86,7 +86,8 @@ static const struct dri_extension card_extensions[] = /* Create the device specific context. */ -GLboolean mach64CreateContext( const __GLcontextModes *glVisual, +GLboolean mach64CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/mach64/mach64_context.h b/src/mesa/drivers/dri/mach64/mach64_context.h index 18fc859d013..893fc8daee9 100644 --- a/src/mesa/drivers/dri/mach64/mach64_context.h +++ b/src/mesa/drivers/dri/mach64/mach64_context.h @@ -273,7 +273,8 @@ struct mach64_context { #define MACH64_CONTEXT(ctx) ((mach64ContextPtr)(ctx->DriverCtx)) -extern GLboolean mach64CreateContext( const __GLcontextModes *glVisual, +extern GLboolean mach64CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c index 687412bca55..31007ccb1da 100644 --- a/src/mesa/drivers/dri/mga/mga_xmesa.c +++ b/src/mesa/drivers/dri/mga/mga_xmesa.c @@ -423,7 +423,8 @@ static const struct dri_debug_control debug_control[] = static GLboolean -mgaCreateContext( const __GLcontextModes *mesaVis, +mgaCreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index 42bec659d73..f481161d468 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -75,7 +75,8 @@ nouveau_channel_flush_notify(struct nouveau_channel *chan) } GLboolean -nouveau_context_create(const __GLcontextModes *visual, __DRIcontext *dri_ctx, +nouveau_context_create(gl_api api, + const __GLcontextModes *visual, __DRIcontext *dri_ctx, void *share_ctx) { __DRIscreen *dri_screen = dri_ctx->driScreenPriv; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h index fe64fec930b..3dbe72900a6 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h @@ -89,7 +89,8 @@ struct nouveau_context { context_drv(ctx)->emit[NOUVEAU_STATE_##s](ctx, NOUVEAU_STATE_##s) GLboolean -nouveau_context_create(const __GLcontextModes *visual, __DRIcontext *dri_ctx, +nouveau_context_create(gl_api api, + const __GLcontextModes *visual, __DRIcontext *dri_ctx, void *share_ctx); GLboolean diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c index 67e92405057..78607083830 100644 --- a/src/mesa/drivers/dri/r128/r128_context.c +++ b/src/mesa/drivers/dri/r128/r128_context.c @@ -99,7 +99,8 @@ static const struct dri_debug_control debug_control[] = /* Create the device specific context. */ -GLboolean r128CreateContext( const __GLcontextModes *glVisual, +GLboolean r128CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/r128/r128_context.h b/src/mesa/drivers/dri/r128/r128_context.h index 65f845c1159..65ddb3bd23b 100644 --- a/src/mesa/drivers/dri/r128/r128_context.h +++ b/src/mesa/drivers/dri/r128/r128_context.h @@ -224,7 +224,8 @@ struct r128_context { (rmesa->r128Screen->chipset == R128_CARD_TYPE_R128_MOBILITY) -extern GLboolean r128CreateContext( const __GLcontextModes *glVisual, +extern GLboolean r128CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 36a29350ccc..5896296021f 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -271,7 +271,8 @@ static void r200_init_vtbl(radeonContextPtr radeon) /* Create the device specific rendering context. */ -GLboolean r200CreateContext( const __GLcontextModes *glVisual, +GLboolean r200CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h index a9dce310ae1..305958f5d76 100644 --- a/src/mesa/drivers/dri/r200/r200_context.h +++ b/src/mesa/drivers/dri/r200/r200_context.h @@ -637,7 +637,8 @@ struct r200_context { extern void r200DestroyContext( __DRIcontext *driContextPriv ); -extern GLboolean r200CreateContext( const __GLcontextModes *glVisual, +extern GLboolean r200CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate); extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv, diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 4dce454c3a7..6992ca59dbf 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -478,7 +478,8 @@ static void r300InitIoctlFuncs(struct dd_function_table *functions) /* Create the device specific rendering context. */ -GLboolean r300CreateContext(const __GLcontextModes * glVisual, +GLboolean r300CreateContext(gl_api api, + const __GLcontextModes * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index df7115e7dae..fbb609b9f61 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -543,7 +543,8 @@ struct r300_context { #define R300_CONTEXT(ctx) ((r300ContextPtr)(ctx->DriverCtx)) extern void r300DestroyContext(__DRIcontext * driContextPriv); -extern GLboolean r300CreateContext(const __GLcontextModes * glVisual, +extern GLboolean r300CreateContext(gl_api api, + const __GLcontextModes * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index ab6b6172352..f4aed4e87fd 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -353,7 +353,8 @@ static void r600InitGLExtensions(GLcontext *ctx) /* Create the device specific rendering context. */ -GLboolean r600CreateContext(const __GLcontextModes * glVisual, +GLboolean r600CreateContext(gl_api api, + const __GLcontextModes * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/r600/r600_context.h b/src/mesa/drivers/dri/r600/r600_context.h index 72c8c869b70..063dd7c49a1 100644 --- a/src/mesa/drivers/dri/r600/r600_context.h +++ b/src/mesa/drivers/dri/r600/r600_context.h @@ -155,7 +155,8 @@ struct r600_context { #define R700_CONTEXT(ctx) ((context_t *)(ctx->DriverCtx)) #define GL_CONTEXT(context) ((GLcontext *)(context->radeon.glCtx)) -extern GLboolean r600CreateContext(const __GLcontextModes * glVisual, +extern GLboolean r600CreateContext(gl_api api, + const __GLcontextModes * glVisual, __DRIcontext * driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 56aba16e9e0..ee65d7ff3d0 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -206,9 +206,10 @@ static void r100_init_vtbl(radeonContextPtr radeon) /* Create the device specific context. */ GLboolean -r100CreateContext( const __GLcontextModes *glVisual, - __DRIcontext *driContextPriv, - void *sharedContextPrivate) +r100CreateContext( gl_api api, + const __GLcontextModes *glVisual, + __DRIcontext *driContextPriv, + void *sharedContextPrivate) { __DRIscreen *sPriv = driContextPriv->driScreenPriv; radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h index d84760bf74f..c4bfbfdaeb3 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.h +++ b/src/mesa/drivers/dri/radeon/radeon_context.h @@ -450,7 +450,8 @@ struct r100_context { #define RADEON_OLD_PACKETS 1 -extern GLboolean r100CreateContext( const __GLcontextModes *glVisual, +extern GLboolean r100CreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c index c3a53ea5e25..cbdc9c87eeb 100644 --- a/src/mesa/drivers/dri/savage/savage_xmesa.c +++ b/src/mesa/drivers/dri/savage/savage_xmesa.c @@ -288,7 +288,8 @@ savageDestroyScreen(__DRIscreen *sPriv) } static GLboolean -savageCreateContext( const __GLcontextModes *mesaVis, +savageCreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c index 400681a04ab..85f26a08b7f 100644 --- a/src/mesa/drivers/dri/sis/sis_context.c +++ b/src/mesa/drivers/dri/sis/sis_context.c @@ -158,7 +158,8 @@ void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer, } GLboolean -sisCreateContext( const __GLcontextModes *glVisual, +sisCreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h index 4179ee081a7..132cee33ee3 100644 --- a/src/mesa/drivers/dri/sis/sis_context.h +++ b/src/mesa/drivers/dri/sis/sis_context.h @@ -438,7 +438,8 @@ enum _sis_verbose { VERBOSE_SIS_MEMORY = 0x2 }; -extern GLboolean sisCreateContext( const __GLcontextModes *glVisual, +extern GLboolean sisCreateContext( gl_api api, + const __GLcontextModes *glVisual, __DRIcontext *driContextPriv, void *sharedContextPrivate ); extern void sisDestroyContext( __DRIcontext * ); diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 6f54981eba1..7fa7e2192ff 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -501,7 +501,8 @@ swrast_init_driver_functions(struct dd_function_table *driver) */ static GLboolean -dri_create_context(const __GLcontextModes * visual, +dri_create_context(gl_api api, + const __GLcontextModes * visual, __DRIcontext * cPriv, void *sharedContextPrivate) { struct dri_context *ctx = NULL; diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c index edb1875f767..c30fcf3a6f7 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c @@ -164,7 +164,8 @@ static const struct dri_debug_control debug_control[] = { NULL, 0 } }; -GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis, +GLboolean tdfxCreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ) { diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h index 6e25cac3015..29b0876f9f9 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h @@ -937,7 +937,8 @@ struct tdfx_context { extern GLboolean -tdfxCreateContext( const __GLcontextModes *mesaVis, +tdfxCreateContext( gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate ); diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 9da96bdd45a..4298c948551 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -456,7 +456,8 @@ FreeBuffer(struct via_context *vmesa) GLboolean -viaCreateContext(const __GLcontextModes *visual, +viaCreateContext(gl_api api, + const __GLcontextModes *visual, __DRIcontext *driContextPriv, void *sharedContextPrivate) { diff --git a/src/mesa/drivers/dri/unichrome/via_screen.h b/src/mesa/drivers/dri/unichrome/via_screen.h index aa662e01c04..51df0ce4eb4 100644 --- a/src/mesa/drivers/dri/unichrome/via_screen.h +++ b/src/mesa/drivers/dri/unichrome/via_screen.h @@ -76,7 +76,8 @@ typedef struct { extern GLboolean -viaCreateContext(const __GLcontextModes *mesaVis, +viaCreateContext(gl_api api, + const __GLcontextModes *mesaVis, __DRIcontext *driContextPriv, void *sharedContextPrivate); diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile index 8b484853afe..5498b086aab 100644 --- a/src/mesa/es/Makefile +++ b/src/mesa/es/Makefile @@ -82,24 +82,6 @@ libes1api.a: $(ES1_API_OBJECTS) libes2api.a: $(ES2_API_OBJECTS) @$(MKLIB) -o es2api -static $(ES2_API_OBJECTS) -GENERATED_SOURCES := \ - main/api_exec_es1.c \ - main/api_exec_es2.c \ - main/get_es1.c \ - main/get_es2.c - -main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@ - -main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py - $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@ - -main/get_es1.c: main/get_gen.py - $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@ - -main/get_es2.c: main/get_gen.py - $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@ - .PHONY: clean clean: -rm -f $(ES1_LIBS) $(ES2_LIBS) diff --git a/src/mesa/es/glapi/Makefile b/src/mesa/es/glapi/Makefile index e8a9afab7c5..fea55594fda 100644 --- a/src/mesa/es/glapi/Makefile +++ b/src/mesa/es/glapi/Makefile @@ -11,7 +11,6 @@ OUTPUTS := \ sparc/glapi_sparc.S \ x86-64/glapi_x86-64.S \ x86/glapi_x86.S \ - main/enums.c \ main/remap_helper.h COMMON = gl_XML.py glX_XML.py license.py typeexpr.py @@ -30,7 +29,10 @@ ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \ ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/, $(OUTPUTS)) ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/, $(OUTPUTS)) -all: $(ES1_OUTPUTS) $(ES2_OUTPUTS) +all: es1 es2 + +es1: $(ES1_OUTPUTS) +es2: $(ES2_OUTPUTS) $(ES1_OUTPUTS): APIXML := $(ES1_APIXML) $(ES2_OUTPUTS): APIXML := $(ES2_APIXML) @@ -66,9 +68,6 @@ endef %/x86/glapi_x86.S: $(GLAPI)/gl_x86_asm.py $(COMMON) $(call gen-glapi) -%/main/enums.c: $(GLAPI)/gl_enums.py $(COMMON) - $(call gen-glapi) - %/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON) $(call gen-glapi) diff --git a/src/mesa/es/main/es_enable.c b/src/mesa/es/main/es_enable.c deleted file mode 100644 index 351caacd776..00000000000 --- a/src/mesa/es/main/es_enable.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include "GLES/gl.h" -#include "GLES/glext.h" - -#include "main/compiler.h" /* for ASSERT */ - - -#ifndef GL_TEXTURE_GEN_S -#define GL_TEXTURE_GEN_S 0x0C60 -#define GL_TEXTURE_GEN_T 0x0C61 -#define GL_TEXTURE_GEN_R 0x0C62 -#endif - - -extern void GL_APIENTRY _es_Disable(GLenum cap); -extern void GL_APIENTRY _es_Enable(GLenum cap); -extern GLboolean GL_APIENTRY _es_IsEnabled(GLenum cap); - -extern void GL_APIENTRY _mesa_Disable(GLenum cap); -extern void GL_APIENTRY _mesa_Enable(GLenum cap); -extern GLboolean GL_APIENTRY _mesa_IsEnabled(GLenum cap); - - -void GL_APIENTRY -_es_Disable(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - /* disable S, T, and R at the same time */ - _mesa_Disable(GL_TEXTURE_GEN_S); - _mesa_Disable(GL_TEXTURE_GEN_T); - _mesa_Disable(GL_TEXTURE_GEN_R); - break; - default: - _mesa_Disable(cap); - break; - } -} - - -void GL_APIENTRY -_es_Enable(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - /* enable S, T, and R at the same time */ - _mesa_Enable(GL_TEXTURE_GEN_S); - _mesa_Enable(GL_TEXTURE_GEN_T); - _mesa_Enable(GL_TEXTURE_GEN_R); - break; - default: - _mesa_Enable(cap); - break; - } -} - - -GLboolean GL_APIENTRY -_es_IsEnabled(GLenum cap) -{ - switch (cap) { - case GL_TEXTURE_GEN_STR_OES: - cap = GL_TEXTURE_GEN_S; - default: - break; - } - - return _mesa_IsEnabled(cap); -} diff --git a/src/mesa/es/main/es_fbo.c b/src/mesa/es/main/es_fbo.c deleted file mode 100644 index 18036378304..00000000000 --- a/src/mesa/es/main/es_fbo.c +++ /dev/null @@ -1,37 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - **************************************************************************/ - - -#include "GLES2/gl2.h" -#include "GLES2/gl2ext.h" - - -#ifndef GL_RGB5 -#define GL_RGB5 0x8050 -#endif - - -extern void GL_APIENTRY _es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height); - -extern void GL_APIENTRY _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height); - - -void GL_APIENTRY -_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height) -{ - switch (internalFormat) { - case GL_RGB565: - /* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - /* choose a closest format */ - internalFormat = GL_RGB5; - break; - default: - break; - } - _mesa_RenderbufferStorageEXT(target, internalFormat, width, height); -} diff --git a/src/mesa/es/main/es_texgen.c b/src/mesa/es/main/es_texgen.c deleted file mode 100644 index c29a0a7f138..00000000000 --- a/src/mesa/es/main/es_texgen.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (C) 2009 Chia-I Wu <[email protected]> - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include "GLES/gl.h" -#include "GLES/glext.h" - -#include "main/compiler.h" /* for ASSERT */ - - -#ifndef GL_S -#define GL_S 0x2000 -#define GL_T 0x2001 -#define GL_R 0x2002 -#endif - - -extern void GL_APIENTRY _es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); -extern void GL_APIENTRY _es_TexGenf(GLenum coord, GLenum pname, GLfloat param); -extern void GL_APIENTRY _es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); - -extern void GL_APIENTRY _mesa_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); -extern void GL_APIENTRY _mesa_TexGenf(GLenum coord, GLenum pname, GLfloat param); -extern void GL_APIENTRY _mesa_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); - - -void GL_APIENTRY -_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - _mesa_GetTexGenfv(GL_S, pname, params); -} - - -void GL_APIENTRY -_es_TexGenf(GLenum coord, GLenum pname, GLfloat param) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - /* set S, T, and R at the same time */ - _mesa_TexGenf(GL_S, pname, param); - _mesa_TexGenf(GL_T, pname, param); - _mesa_TexGenf(GL_R, pname, param); -} - - -void GL_APIENTRY -_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params) -{ - ASSERT(coord == GL_TEXTURE_GEN_STR_OES); - /* set S, T, and R at the same time */ - _mesa_TexGenfv(GL_S, pname, params); - _mesa_TexGenfv(GL_T, pname, params); - _mesa_TexGenfv(GL_R, pname, params); -} diff --git a/src/mesa/es/main/specials_es1.c b/src/mesa/es/main/specials_es1.c deleted file mode 100644 index 92e24a03fe5..00000000000 --- a/src/mesa/es/main/specials_es1.c +++ /dev/null @@ -1,218 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **************************************************************************/ - - -#include "main/mtypes.h" -#include "main/context.h" -#include "main/imports.h" -#include "main/get.h" - - -extern const GLubyte * GLAPIENTRY _es_GetString(GLenum name); - - -static const GLubyte * -compute_es_version(void) -{ - GET_CURRENT_CONTEXT(ctx); - static const char es_1_0[] = "OpenGL ES-CM 1.0"; - static const char es_1_1[] = "OpenGL ES-CM 1.1"; - /* OpenGL ES 1.0 is derived from OpenGL 1.3 */ - const GLboolean ver_1_0 = (ctx->Extensions.ARB_multisample && - ctx->Extensions.ARB_multitexture && - ctx->Extensions.ARB_texture_compression && - ctx->Extensions.EXT_texture_env_add && - ctx->Extensions.ARB_texture_env_combine && - ctx->Extensions.ARB_texture_env_dot3); - /* OpenGL ES 1.1 is derived from OpenGL 1.5 */ - const GLboolean ver_1_1 = (ver_1_0 && - ctx->Extensions.EXT_point_parameters && - ctx->Extensions.SGIS_generate_mipmap && - ctx->Extensions.ARB_vertex_buffer_object); - if (ver_1_1) - return (const GLubyte *) es_1_1; - - if (!ver_1_0) - _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support."); - return (const GLubyte *) es_1_0; -} - - -static size_t -append_extension(char **str, const char *ext) -{ - char *s = *str; - size_t len = strlen(ext); - - if (s) { - memcpy(s, ext, len); - s[len++] = ' '; - s[len] = '\0'; - - *str += len; - } - else { - len++; - } - - return len; -} - - -static size_t -make_extension_string(const GLcontext *ctx, char *str) -{ - size_t len = 0; - - /* Core additions */ - len += append_extension(&str, "GL_OES_byte_coordinates"); - len += append_extension(&str, "GL_OES_fixed_point"); - len += append_extension(&str, "GL_OES_single_precision"); - len += append_extension(&str, "GL_OES_matrix_get"); - - /* 1.1 required extensions */ - len += append_extension(&str, "GL_OES_read_format"); - len += append_extension(&str, "GL_OES_compressed_paletted_texture"); - len += append_extension(&str, "GL_OES_point_size_array"); - len += append_extension(&str, "GL_OES_point_sprite"); - - /* 1.1 deprecated extensions */ - len += append_extension(&str, "GL_OES_query_matrix"); - -#if FEATURE_OES_draw_texture - if (ctx->Extensions.OES_draw_texture) - len += append_extension(&str, "GL_OES_draw_texture"); -#endif - - if (ctx->Extensions.EXT_blend_equation_separate) - len += append_extension(&str, "GL_OES_blend_equation_separate"); - if (ctx->Extensions.EXT_blend_func_separate) - len += append_extension(&str, "GL_OES_blend_func_separate"); - if (ctx->Extensions.EXT_blend_subtract) - len += append_extension(&str, "GL_OES_blend_subtract"); - - if (ctx->Extensions.EXT_stencil_wrap) - len += append_extension(&str, "GL_OES_stencil_wrap"); - - if (ctx->Extensions.ARB_texture_cube_map) - len += append_extension(&str, "GL_OES_texture_cube_map"); - if (ctx->Extensions.ARB_texture_env_crossbar) - len += append_extension(&str, "GL_OES_texture_env_crossbar"); - if (ctx->Extensions.ARB_texture_mirrored_repeat) - len += append_extension(&str, "GL_OES_texture_mirrored_repeat"); - - if (ctx->Extensions.ARB_framebuffer_object) { - len += append_extension(&str, "GL_OES_framebuffer_object"); - len += append_extension(&str, "GL_OES_depth24"); - len += append_extension(&str, "GL_OES_depth32"); - len += append_extension(&str, "GL_OES_fbo_render_mipmap"); - len += append_extension(&str, "GL_OES_rgb8_rgba8"); - len += append_extension(&str, "GL_OES_stencil1"); - len += append_extension(&str, "GL_OES_stencil4"); - len += append_extension(&str, "GL_OES_stencil8"); - } - - if (ctx->Extensions.EXT_vertex_array) - len += append_extension(&str, "GL_OES_element_index_uint"); - if (ctx->Extensions.ARB_vertex_buffer_object) - len += append_extension(&str, "GL_OES_mapbuffer"); - if (ctx->Extensions.EXT_texture_filter_anisotropic) - len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); - - /* some applications check this for NPOT support */ - if (ctx->Extensions.ARB_texture_non_power_of_two) - len += append_extension(&str, "GL_ARB_texture_non_power_of_two"); - - if (ctx->Extensions.EXT_texture_compression_s3tc) - len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); - if (ctx->Extensions.EXT_texture_lod_bias) - len += append_extension(&str, "GL_EXT_texture_lod_bias"); - if (ctx->Extensions.EXT_blend_minmax) - len += append_extension(&str, "GL_EXT_blend_minmax"); - if (ctx->Extensions.EXT_multi_draw_arrays) - len += append_extension(&str, "GL_EXT_multi_draw_arrays"); - -#if FEATURE_OES_EGL_image - if (ctx->Extensions.OES_EGL_image) - len += append_extension(&str, "GL_OES_EGL_image"); -#endif - - return len; -} - - -static const GLubyte * -compute_es_extensions(void) -{ - GET_CURRENT_CONTEXT(ctx); - - if (!ctx->Extensions.String) { - char *s; - unsigned int len; - - len = make_extension_string(ctx, NULL); - s = (char *) malloc(len + 1); - if (!s) - return NULL; - make_extension_string(ctx, s); - ctx->Extensions.String = (const GLubyte *) s; - } - - return ctx->Extensions.String; -} - - -const GLubyte * GLAPIENTRY -_es_GetString(GLenum name) -{ - switch (name) { - case GL_VERSION: - return compute_es_version(); - case GL_EXTENSIONS: - return compute_es_extensions(); - default: - return _mesa_GetString(name); - } -} - - -void -_mesa_initialize_context_extra(GLcontext *ctx) -{ - GLuint i; - - /** - * GL_OES_texture_cube_map says - * "Initially all texture generation modes are set to REFLECTION_MAP_OES" - */ - for (i = 0; i < MAX_TEXTURE_UNITS; i++) { - struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i]; - texUnit->GenS.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenT.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenR.Mode = GL_REFLECTION_MAP_NV; - texUnit->GenS._ModeBit = TEXGEN_REFLECTION_MAP_NV; - texUnit->GenT._ModeBit = TEXGEN_REFLECTION_MAP_NV; - texUnit->GenR._ModeBit = TEXGEN_REFLECTION_MAP_NV; - } -} diff --git a/src/mesa/es/main/specials_es2.c b/src/mesa/es/main/specials_es2.c deleted file mode 100644 index 046cda6fc18..00000000000 --- a/src/mesa/es/main/specials_es2.c +++ /dev/null @@ -1,179 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **************************************************************************/ - - -#include "main/mtypes.h" -#include "main/context.h" -#include "main/imports.h" -#include "main/get.h" - - -const GLubyte * GLAPIENTRY _es_GetString(GLenum name); - - -static const GLubyte * -compute_es_version(void) -{ - GET_CURRENT_CONTEXT(ctx); - static const char es_2_0[] = "OpenGL ES 2.0"; - /* OpenGL ES 2.0 is derived from OpenGL 2.0 */ - const GLboolean ver_2_0 = (ctx->Extensions.ARB_multisample && - ctx->Extensions.ARB_multitexture && - ctx->Extensions.ARB_texture_compression && - ctx->Extensions.ARB_texture_cube_map && - ctx->Extensions.ARB_texture_mirrored_repeat && - ctx->Extensions.EXT_blend_color && - ctx->Extensions.EXT_blend_func_separate && - ctx->Extensions.EXT_blend_minmax && - ctx->Extensions.EXT_blend_subtract && - ctx->Extensions.EXT_stencil_wrap && - ctx->Extensions.ARB_vertex_buffer_object && - ctx->Extensions.ARB_shader_objects && - ctx->Extensions.ARB_vertex_shader && - ctx->Extensions.ARB_fragment_shader && - ctx->Extensions.ARB_texture_non_power_of_two && - ctx->Extensions.EXT_blend_equation_separate); - if (!ver_2_0) - _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support."); - return (const GLubyte *) es_2_0; -} - - -static size_t -append_extension(char **str, const char *ext) -{ - char *s = *str; - size_t len = strlen(ext); - - if (s) { - memcpy(s, ext, len); - s[len++] = ' '; - s[len] = '\0'; - - *str += len; - } - else { - len++; - } - - return len; -} - - -static size_t -make_extension_string(const GLcontext *ctx, char *str) -{ - size_t len = 0; - - len += append_extension(&str, "GL_OES_compressed_paletted_texture"); - - if (ctx->Extensions.ARB_framebuffer_object) { - len += append_extension(&str, "GL_OES_depth24"); - len += append_extension(&str, "GL_OES_depth32"); - len += append_extension(&str, "GL_OES_fbo_render_mipmap"); - len += append_extension(&str, "GL_OES_rgb8_rgba8"); - len += append_extension(&str, "GL_OES_stencil1"); - len += append_extension(&str, "GL_OES_stencil4"); - } - - if (ctx->Extensions.EXT_vertex_array) - len += append_extension(&str, "GL_OES_element_index_uint"); - if (ctx->Extensions.ARB_vertex_buffer_object) - len += append_extension(&str, "GL_OES_mapbuffer"); - - if (ctx->Extensions.EXT_texture3D) - len += append_extension(&str, "GL_OES_texture_3D"); - if (ctx->Extensions.ARB_texture_non_power_of_two) - len += append_extension(&str, "GL_OES_texture_npot"); - if (ctx->Extensions.EXT_texture_filter_anisotropic) - len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); - - len += append_extension(&str, "GL_EXT_texture_type_2_10_10_10_REV"); - if (ctx->Extensions.ARB_depth_texture) - len += append_extension(&str, "GL_OES_depth_texture"); - if (ctx->Extensions.EXT_packed_depth_stencil) - len += append_extension(&str, "GL_OES_packed_depth_stencil"); - if (ctx->Extensions.ARB_fragment_shader) - len += append_extension(&str, "GL_OES_standard_derivatives"); - - if (ctx->Extensions.EXT_texture_compression_s3tc) - len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); - if (ctx->Extensions.EXT_blend_minmax) - len += append_extension(&str, "GL_EXT_blend_minmax"); - if (ctx->Extensions.EXT_multi_draw_arrays) - len += append_extension(&str, "GL_EXT_multi_draw_arrays"); - -#if FEATURE_OES_EGL_image - if (ctx->Extensions.OES_EGL_image) - len += append_extension(&str, "GL_OES_EGL_image"); -#endif - - return len; -} - - -static const GLubyte * -compute_es_extensions(void) -{ - GET_CURRENT_CONTEXT(ctx); - - if (!ctx->Extensions.String) { - char *s; - unsigned int len; - - len = make_extension_string(ctx, NULL); - s = (char *) malloc(len + 1); - if (!s) - return NULL; - make_extension_string(ctx, s); - ctx->Extensions.String = (const GLubyte *) s; - } - - return ctx->Extensions.String; -} - -const GLubyte * GLAPIENTRY -_es_GetString(GLenum name) -{ - switch (name) { - case GL_VERSION: - return compute_es_version(); - case GL_SHADING_LANGUAGE_VERSION: - return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16"; - case GL_EXTENSIONS: - return compute_es_extensions(); - default: - return _mesa_GetString(name); - } -} - - -void -_mesa_initialize_context_extra(GLcontext *ctx) -{ - ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; - ctx->VertexProgram._MaintainTnlProgram = GL_TRUE; - - ctx->Point.PointSprite = GL_TRUE; /* always on for ES 2.x */ -} diff --git a/src/mesa/es/main/stubs.c b/src/mesa/es/main/stubs.c deleted file mode 100644 index b829543cc01..00000000000 --- a/src/mesa/es/main/stubs.c +++ /dev/null @@ -1,131 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **************************************************************************/ - - -/** - * Temporary stubs for "missing" mesa functions. - */ - - -#include "main/mtypes.h" -#include "main/imports.h" -#include "vbo/vbo.h" - -#define NEED_IMPLEMENT() do { \ - GET_CURRENT_CONTEXT(ctx); \ - _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); \ - } while (0) - - -/* silence compiler warnings */ -extern void GLAPIENTRY _vbo_Materialf(GLenum face, GLenum pname, GLfloat param); -extern void GLAPIENTRY _mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); -extern void GLAPIENTRY _mesa_ReleaseShaderCompiler(void); -extern void GLAPIENTRY _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length); -extern void GLAPIENTRY _vbo_VertexAttrib1f(GLuint indx, GLfloat x); -extern void GLAPIENTRY _vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values); -extern void GLAPIENTRY _vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); -extern void GLAPIENTRY _vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values); -extern void GLAPIENTRY _vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); -extern void GLAPIENTRY _vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values); -extern void GLAPIENTRY _vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values); - - -void GLAPIENTRY -_vbo_Materialf(GLenum face, GLenum pname, GLfloat param) -{ - _vbo_Materialfv(face, pname, ¶m); -} - - -void GLAPIENTRY -_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, - GLint* range, GLint* precision) -{ - NEED_IMPLEMENT(); -} - - -void GLAPIENTRY -_mesa_ReleaseShaderCompiler(void) -{ - NEED_IMPLEMENT(); -} - - -void GLAPIENTRY -_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, - const void* binary, GLint length) -{ - NEED_IMPLEMENT(); -} - - -void GLAPIENTRY -_vbo_VertexAttrib1f(GLuint indx, GLfloat x) -{ - _vbo_VertexAttrib4f(indx, x, 0.0, 0.0, 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values) -{ - _vbo_VertexAttrib4f(indx, values[0], 0.0, 0.0, 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) -{ - _vbo_VertexAttrib4f(indx, x, y, 0.0, 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values) -{ - _vbo_VertexAttrib4f(indx, values[0], values[1], 0.0, 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) -{ - _vbo_VertexAttrib4f(indx, x, y, z, 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values) -{ - _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], 1.0f); -} - - -void GLAPIENTRY -_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values) -{ - _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], values[3]); -} diff --git a/src/mesa/es/sources.mak b/src/mesa/es/sources.mak index 55bb31b80dd..9bb7a6ff38c 100644 --- a/src/mesa/es/sources.mak +++ b/src/mesa/es/sources.mak @@ -1,45 +1,13 @@ include $(MESA)/sources.mak -# LOCAL sources - -LOCAL_ES1_SOURCES := \ - main/api_exec_es1.c \ - main/get_es1.c \ - main/specials_es1.c \ - main/drawtex.c \ - main/es_cpaltex.c \ - main/es_enable.c \ - main/es_fbo.c \ - main/es_query_matrix.c \ - main/es_texgen.c \ - main/stubs.c \ - glapi/glapi-es1/main/enums.c - -LOCAL_ES1_GALLIUM_SOURCES := \ - $(LOCAL_ES1_SOURCES) \ - state_tracker/st_cb_drawtex.c - # always use local version of GLAPI_ASM_SOURCES LOCAL_ES1_API_ASM := $(addprefix glapi/glapi-es1/, $(GLAPI_ASM_SOURCES)) LOCAL_ES1_INCLUDES := \ -I. \ -I./glapi/glapi-es1 \ - -I./state_tracker \ -I$(MESA)/state_tracker -LOCAL_ES2_SOURCES := \ - main/api_exec_es2.c \ - main/get_es2.c \ - main/specials_es2.c \ - main/es_cpaltex.c \ - main/es_fbo.c \ - main/stubs.c \ - glapi/glapi-es2/main/enums.c - -LOCAL_ES2_GALLIUM_SOURCES := \ - $(LOCAL_ES2_SOURCES) - LOCAL_ES2_API_ASM := $(subst es1,es2, $(LOCAL_ES1_API_ASM)) LOCAL_ES2_INCLUDES := $(subst es1,es2, $(LOCAL_ES1_INCLUDES)) @@ -50,7 +18,6 @@ MAIN_OMITTED := \ main/api_exec.c \ main/condrender.c \ main/dlopen.c \ - main/enums.c \ main/get.c MAIN_SOURCES := $(filter-out $(MAIN_OMITTED), $(MAIN_SOURCES)) @@ -101,10 +68,6 @@ MESA_ES1_API_SOURCES := \ MESA_ES1_INCLUDES := $(INCLUDE_DIRS) -# remove LOCAL sources from MESA sources -MESA_ES1_SOURCES := $(filter-out $(LOCAL_ES1_SOURCES), $(MESA_ES1_SOURCES)) -MESA_ES1_GALLIUM_SOURCES := $(filter-out $(LOCAL_ES1_GALLIUM_SOURCES), $(MESA_ES1_GALLIUM_SOURCES)) - # right now es2 and es1 share MESA sources MESA_ES2_SOURCES := $(MESA_ES1_SOURCES) MESA_ES2_GALLIUM_SOURCES := $(MESA_ES1_GALLIUM_SOURCES) @@ -116,12 +79,12 @@ MESA_ES2_INCLUDES := $(MESA_ES1_INCLUDES) MESA_ES_ASM := $(MESA_ASM_SOURCES) # collect sources, adjust the pathes -ES1_SOURCES := $(LOCAL_ES1_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_SOURCES)) -ES1_GALLIUM_SOURCES := $(LOCAL_ES1_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES)) +ES1_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_SOURCES)) +ES1_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES)) ES1_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_API_SOURCES)) -ES2_SOURCES := $(LOCAL_ES2_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_SOURCES)) -ES2_GALLIUM_SOURCES := $(LOCAL_ES2_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES)) +ES2_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_SOURCES)) +ES2_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES)) ES2_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_API_SOURCES)) # collect includes @@ -130,12 +93,10 @@ ES2_INCLUDES := $(LOCAL_ES2_INCLUDES) $(MESA_ES2_INCLUDES) # collect objects, including asm ES1_OBJECTS := \ - $(LOCAL_ES1_SOURCES:.c=.o) \ $(MESA_ES1_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) ES1_GALLIUM_OBJECTS := \ - $(LOCAL_ES1_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES1_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) @@ -144,12 +105,10 @@ ES1_API_OBJECTS := \ $(MESA_ES1_API_SOURCES:.c=.o) ES2_OBJECTS := \ - $(LOCAL_ES2_SOURCES:.c=.o) \ $(MESA_ES2_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) ES2_GALLIUM_OBJECTS := \ - $(LOCAL_ES2_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES2_GALLIUM_SOURCES:.c=.o) \ $(MESA_ES_ASM:.S=.o) diff --git a/src/mesa/glapi/gen/Makefile b/src/mesa/glapi/gen/Makefile index 84600bdd980..10998b2ce23 100644 --- a/src/mesa/glapi/gen/Makefile +++ b/src/mesa/glapi/gen/Makefile @@ -151,8 +151,10 @@ $(MESA_DIR)/sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON) ###################################################################### -$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) - $(PYTHON2) $(PYTHON_FLAGS) $< > $@ +$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API) + $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \ + -f $(MESA_DIR)/es/glapi/es1_API.xml \ + -f $(MESA_DIR)/es/glapi/es2_API.xml > $@ $(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON) $(PYTHON2) $(PYTHON_FLAGS) $< > $@ diff --git a/src/mesa/glapi/gen/gl_enums.py b/src/mesa/glapi/gen/gl_enums.py index 3a9ea3c86c7..644e0855229 100644 --- a/src/mesa/glapi/gen/gl_enums.py +++ b/src/mesa/glapi/gen/gl_enums.py @@ -151,8 +151,10 @@ int _mesa_lookup_enum_by_name( const char *symbol ) return - def printBody(self, api): - self.process_enums( api ) + def printBody(self, api_list): + self.enum_table = {} + for api in api_list: + self.process_enums( api ) keys = self.enum_table.keys() keys.sort() @@ -209,16 +211,20 @@ int _mesa_lookup_enum_by_name( const char *symbol ) def process_enums(self, api): - self.enum_table = {} - for obj in api.enumIterateByName(): if obj.value not in self.enum_table: self.enum_table[ obj.value ] = [] + enum = self.enum_table[ obj.value ] name = "GL_" + obj.name priority = obj.priority() - self.enum_table[ obj.value ].append( [name, priority] ) + already_in = False; + for n, p in enum: + if n == name: + already_in = True + if not already_in: + enum.append( [name, priority] ) def show_usage(): @@ -226,18 +232,16 @@ def show_usage(): sys.exit(1) if __name__ == '__main__': - file_name = "gl_API.xml" - try: (args, trail) = getopt.getopt(sys.argv[1:], "f:") except Exception,e: show_usage() + api_list = [] for (arg,val) in args: if arg == "-f": - file_name = val - - api = gl_XML.parse_GL_API( file_name ) + api = gl_XML.parse_GL_API( val ) + api_list.append(api); printer = PrintGlEnums() - printer.Print( api ) + printer.Print( api_list ) diff --git a/src/mesa/glapi/gen/remap_helper.py b/src/mesa/glapi/gen/remap_helper.py index 8b50526d2b0..69b8e5e9d02 100644 --- a/src/mesa/glapi/gen/remap_helper.py +++ b/src/mesa/glapi/gen/remap_helper.py @@ -65,17 +65,12 @@ class PrintGlRemap(gl_XML.gl_print_base): def printRealHeader(self): print '#include "main/dispatch.h"' + print '#include "main/remap.h"' print '' return def printBody(self, api): - print 'struct gl_function_remap {' - print ' GLint func_index;' - print ' GLint dispatch_offset; /* for sanity check */' - print '};' - print '' - pool_indices = {} print '/* this is internal to remap.c */' @@ -108,10 +103,7 @@ class PrintGlRemap(gl_XML.gl_print_base): print '' print '/* these functions need to be remapped */' - print 'static const struct {' - print ' GLint pool_index;' - print ' GLint remap_index;' - print '} MESA_remap_table_functions[] = {' + print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {' # output all functions that need to be remapped # iterate by offsets so that they are sorted by remap indices for f in api.functionIterateByOffset(): diff --git a/src/mesa/glesv1_cm.pc.in b/src/mesa/glesv1_cm.pc.in new file mode 100644 index 00000000000..e9c22222041 --- /dev/null +++ b/src/mesa/glesv1_cm.pc.in @@ -0,0 +1,12 @@ +prefix=@INSTALL_DIR@ +exec_prefix=${prefix} +libdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: glesv1_cm +Description: Mesa OpenGL ES 1.0 CM library +Requires.private: @GLESv1_CM_REQ_PRIV@ +Version: @VERSION@ +Libs: -L${libdir} -l@GLESv1_CM_LIB@ +Libs.private: @GLESv1_CM_PC_LIB_PRIV@ +Cflags: -I${includedir} @GLESv1_CM_PC_CFLAGS@ diff --git a/src/mesa/glesv2.pc.in b/src/mesa/glesv2.pc.in new file mode 100644 index 00000000000..3b747cbee77 --- /dev/null +++ b/src/mesa/glesv2.pc.in @@ -0,0 +1,12 @@ +prefix=@INSTALL_DIR@ +exec_prefix=${prefix} +libdir=@INSTALL_LIB_DIR@ +includedir=@INSTALL_INC_DIR@ + +Name: glesv2 +Description: Mesa OpenGL ES 2.0 library +Requires.private: @GLESv2_PC_REQ_PRIV@ +Version: @VERSION@ +Libs: -L${libdir} -l@GLESv2_LIB@ +Libs.private: @GLESv2_PC_LIB_PRIV@ +Cflags: -I${includedir} @GLESv2_PC_CFLAGS@ diff --git a/src/mesa/es/main/APIspec.dtd b/src/mesa/main/APIspec.dtd index efcfa31f10e..efcfa31f10e 100644 --- a/src/mesa/es/main/APIspec.dtd +++ b/src/mesa/main/APIspec.dtd diff --git a/src/mesa/es/main/APIspec.py b/src/mesa/main/APIspec.py index 6947f7301cd..6947f7301cd 100644 --- a/src/mesa/es/main/APIspec.py +++ b/src/mesa/main/APIspec.py diff --git a/src/mesa/es/main/APIspec.xml b/src/mesa/main/APIspec.xml index 17665d8df5b..268bd5d3db2 100644 --- a/src/mesa/es/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -3921,8 +3921,8 @@ <function name="ColorMask" template="ColorMask"/> <function name="DepthMask" template="DepthMask"/> - <function name="Disable" external="true" template="Disable"/> - <function name="Enable" external="true" template="Enable"/> + <function name="Disable" template="Disable"/> + <function name="Enable" template="Enable"/> <function name="Finish" template="Finish"/> <function name="Flush" template="Flush"/> @@ -3939,15 +3939,15 @@ <function name="PixelStorei" template="PixelStore" gltype="GLint"/> <function name="ReadPixels" template="ReadPixels"/> - <function name="GetBooleanv" template="GetState" gltype="GLboolean"/> + <function name="GetBooleanv" default_prefix="_es1_" template="GetState" gltype="GLboolean"/> <function name="GetClipPlanef" template="GetClipPlane" gltype="GLfloat"/> <function name="GetClipPlanex" template="GetClipPlane" gltype="GLfixed"/> <function name="GetError" template="GetError"/> - <function name="GetFloatv" template="GetState" gltype="GLfloat"/> - <function name="GetFixedv" template="GetState" gltype="GLfixed"/> - <function name="GetIntegerv" template="GetState" gltype="GLint"/> + <function name="GetFloatv" default_prefix="_es1_" template="GetState" gltype="GLfloat"/> + <function name="GetFixedv" default_prefix="_es1_" template="GetState" gltype="GLfixed"/> + <function name="GetIntegerv" default_prefix="_es1_" template="GetState" gltype="GLint"/> <function name="GetLightfv" template="GetLight" gltype="GLfloat"/> <function name="GetLightxv" template="GetLight" gltype="GLfixed"/> @@ -3955,7 +3955,7 @@ <function name="GetMaterialfv" template="GetMaterial" gltype="GLfloat"/> <function name="GetMaterialxv" template="GetMaterial" gltype="GLfixed"/> - <function name="GetString" external="true" template="GetString"/> + <function name="GetString" template="GetString"/> <function name="GetTexEnvfv" template="GetTexEnv" gltype="GLfloat"/> <function name="GetTexEnviv" template="GetTexEnv" gltype="GLint"/> @@ -3969,7 +3969,7 @@ <function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/> <function name="GetTexParameterxv" template="GetTexParameter" gltype="GLfixed"/> - <function name="IsEnabled" external="true" template="IsEnabled"/> + <function name="IsEnabled" template="IsEnabled"/> <function name="DepthRangef" template="DepthRange" gltype="GLclampf"/> <function name="DepthRangex" template="DepthRange" gltype="GLclampx"/> @@ -4040,7 +4040,7 @@ <!-- CompressedTexImage2D calls out to two different functions based on whether the image is a paletted image or not --> - <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/> + <function name="CompressedTexImage2D" template="CompressedTexImage2D"/> <function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/> <function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/> @@ -4173,12 +4173,12 @@ <function name="PixelStorei" template="PixelStore" gltype="GLint"/> <function name="ReadPixels" template="ReadPixels"/> - <function name="GetBooleanv" template="GetState" gltype="GLboolean"/> + <function name="GetBooleanv" default_prefix="_es2_" template="GetState" gltype="GLboolean"/> <function name="GetError" template="GetError"/> - <function name="GetFloatv" template="GetState" gltype="GLfloat"/> - <function name="GetIntegerv" template="GetState" gltype="GLint"/> + <function name="GetFloatv" default_prefix="_es2_" template="GetState" gltype="GLfloat"/> + <function name="GetIntegerv" default_prefix="_es2_" template="GetState" gltype="GLint"/> - <function name="GetString" external="true" template="GetString"/> + <function name="GetString" template="GetString"/> <function name="GetTexParameterfv" template="GetTexParameter" gltype="GLfloat"/> <function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/> @@ -4217,7 +4217,7 @@ <function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/> - <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/> + <function name="CompressedTexImage2D" template="CompressedTexImage2D"/> <function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/> <function name="BlendFuncSeparate" template="BlendFuncSeparate"/> diff --git a/src/mesa/es/main/APIspecutil.py b/src/mesa/main/APIspecutil.py index 27a8fe8a6d4..9e604bb84b3 100644 --- a/src/mesa/es/main/APIspecutil.py +++ b/src/mesa/main/APIspecutil.py @@ -222,6 +222,13 @@ def Parameters(funcname): return params +def FunctionPrefix(funcname): + """Return function specific prefix.""" + func = __functions[funcname] + + return func.prefix + + def FindParamIndex(params, paramname): """Find the index of a named parameter.""" for i in xrange(len(params)): diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 1e1aa416118..f838561aef3 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -107,6 +107,44 @@ #endif #include "main/dispatch.h" +#ifdef _GLAPI_USE_REMAP_TABLE + +#define need_MESA_remap_table +#include "main/remap.h" +#include "main/remap_helper.h" + +/* This is shared across all APIs but We define this here since + * desktop GL has the biggest remap table. */ +int driDispatchRemapTable[driDispatchRemapTable_size]; + +/** + * Map the functions which are already static. + * + * When a extension function are incorporated into the ABI, the + * extension suffix is usually stripped. Mapping such functions + * makes sure the alternative names are available. + * + * Note that functions mapped by _mesa_init_remap_table() are + * excluded. + */ +void +_mesa_map_static_functions(void) +{ + /* Remap static functions which have alternative names and are in the ABI. + * This is to be on the safe side. glapi should have defined those names. + */ + _mesa_map_function_array(MESA_alt_functions); +} + +void +_mesa_init_remap_table(void) +{ + _mesa_do_init_remap_table(_mesa_function_pool, + driDispatchRemapTable_size, + MESA_remap_table_functions); +} + +#endif /* _GLAPI_USE_REMAP_TABLE */ /** @@ -119,9 +157,15 @@ * \param ctx GL context to which \c exec belongs. * \param exec dispatch table. */ -void -_mesa_init_exec_table(struct _glapi_table *exec) +struct _glapi_table * +_mesa_create_exec_table(void) { + struct _glapi_table *exec; + + exec = _mesa_alloc_dispatch_table(sizeof *exec); + if (exec == NULL) + return NULL; + #if _HAVE_FULL_GL _mesa_loopback_init_api_table( exec ); #endif @@ -777,4 +821,6 @@ _mesa_init_exec_table(struct _glapi_table *exec) SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE); SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE); #endif + + return exec; } diff --git a/src/mesa/main/api_exec.h b/src/mesa/main/api_exec.h index 4bd715053ab..29c953f31be 100644 --- a/src/mesa/main/api_exec.h +++ b/src/mesa/main/api_exec.h @@ -29,9 +29,17 @@ struct _glapi_table; +extern struct _glapi_table * +_mesa_alloc_dispatch_table(int size); -extern void -_mesa_init_exec_table(struct _glapi_table *exec); +extern struct _glapi_table * +_mesa_create_exec_table(void); + +extern struct _glapi_table * +_mesa_create_exec_table_es1(void); + +extern struct _glapi_table * +_mesa_create_exec_table_es2(void); #endif diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index 30b48e4bd08..84f7665fc07 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -250,7 +250,7 @@ /** For GL_ARB_draw_buffers */ /*@{*/ -#define MAX_DRAW_BUFFERS 4 +#define MAX_DRAW_BUFFERS 8 /*@}*/ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 1707e229c91..4dd448a698d 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -129,8 +129,6 @@ #include "version.h" #include "viewport.h" #include "vtxfmt.h" -#include "glapi/glthread.h" -#include "glapi/glapitable.h" #include "shader/program.h" #include "shader/prog_print.h" #include "shader/shader_api.h" @@ -396,7 +394,25 @@ one_time_init( GLcontext *ctx ) _mesa_get_cpu_features(); - _mesa_init_remap_table(); + switch (ctx->API) { +#if FEATURE_GL + case API_OPENGL: + _mesa_init_remap_table(); + break; +#endif +#if FEATURE_ES1 + case API_OPENGLES: + _mesa_init_remap_table_es1(); + break; +#endif +#if FEATURE_ES2 + case API_OPENGLES2: + _mesa_init_remap_table_es2(); + break; +#endif + default: + break; + } _mesa_init_sqrt_table(); @@ -636,6 +652,9 @@ check_context_limits(GLcontext *ctx) assert(ctx->Const.MaxDrawBuffers <= MAX_DRAW_BUFFERS); + /* if this fails, add more enum values to gl_buffer_index */ + assert(BUFFER_COLOR0 + MAX_DRAW_BUFFERS <= BUFFER_COUNT); + /* XXX probably add more tests */ } @@ -749,8 +768,8 @@ generic_nop(void) /** * Allocate and initialize a new dispatch table. */ -static struct _glapi_table * -alloc_dispatch_table(void) +struct _glapi_table * +_mesa_alloc_dispatch_table(int size) { /* Find the larger of Mesa's dispatch table and libGL's dispatch table. * In practice, this'll be the same for stand-alone Mesa. But for DRI @@ -758,7 +777,7 @@ alloc_dispatch_table(void) * DRI drivers. */ GLint numEntries = MAX2(_glapi_get_dispatch_table_size(), - sizeof(struct _glapi_table) / sizeof(_glapi_proc)); + size / sizeof(_glapi_proc)); struct _glapi_table *table = (struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc)); if (table) { @@ -791,6 +810,7 @@ alloc_dispatch_table(void) * for debug flags. * * \param ctx the context to initialize + * \param api the GL API type to create the context for * \param visual describes the visual attributes for this context * \param share_list points to context to share textures, display lists, * etc with, or NULL @@ -799,27 +819,30 @@ alloc_dispatch_table(void) * \param driverContext pointer to driver-specific context data */ GLboolean -_mesa_initialize_context(GLcontext *ctx, - const GLvisual *visual, - GLcontext *share_list, - const struct dd_function_table *driverFunctions, - void *driverContext) +_mesa_initialize_context_for_api(GLcontext *ctx, + gl_api api, + const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext) { struct gl_shared_state *shared; + int i; /*ASSERT(driverContext);*/ assert(driverFunctions->NewTextureObject); assert(driverFunctions->FreeTexImageData); - /* misc one-time initializations */ - one_time_init(ctx); - + ctx->API = api; ctx->Visual = *visual; ctx->DrawBuffer = NULL; ctx->ReadBuffer = NULL; ctx->WinSysDrawBuffer = NULL; ctx->WinSysReadBuffer = NULL; + /* misc one-time initializations */ + one_time_init(ctx); + /* Plug in driver functions and context pointer here. * This is important because when we call alloc_shared_state() below * we'll call ctx->Driver.NewTextureObject() to create the default @@ -849,30 +872,36 @@ _mesa_initialize_context(GLcontext *ctx, return GL_FALSE; } +#if FEATURE_dispatch /* setup the API dispatch tables */ - ctx->Exec = alloc_dispatch_table(); - ctx->Save = alloc_dispatch_table(); - if (!ctx->Exec || !ctx->Save) { + switch (ctx->API) { +#if FEATURE_GL + case API_OPENGL: + ctx->Exec = _mesa_create_exec_table(); + break; +#endif +#if FEATURE_ES1 + case API_OPENGLES: + ctx->Exec = _mesa_create_exec_table_es1(); + break; +#endif +#if FEATURE_ES2 + case API_OPENGLES2: + ctx->Exec = _mesa_create_exec_table_es2(); + break; +#endif + default: + _mesa_problem(ctx, "unknown or unsupported API"); + break; + } + + if (!ctx->Exec) { _mesa_release_shared_state(ctx, ctx->Shared); - if (ctx->Exec) - free(ctx->Exec); return GL_FALSE; } -#if FEATURE_dispatch - _mesa_init_exec_table(ctx->Exec); #endif ctx->CurrentDispatch = ctx->Exec; -#if FEATURE_dlist - _mesa_init_save_table(ctx->Save); - _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt ); -#endif - - /* Neutral tnl module stuff */ - _mesa_init_exec_vtxfmt( ctx ); - ctx->TnlModule.Current = NULL; - ctx->TnlModule.SwapCount = 0; - ctx->FragmentProgram._MaintainTexEnvProgram = (_mesa_getenv("MESA_TEX_PROG") != NULL); @@ -883,15 +912,65 @@ _mesa_initialize_context(GLcontext *ctx, ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; } -#if FEATURE_extra_context_init - _mesa_initialize_context_extra(ctx); + switch (ctx->API) { + case API_OPENGL: + /* Neutral tnl module stuff */ + _mesa_init_exec_vtxfmt( ctx ); + ctx->TnlModule.Current = NULL; + ctx->TnlModule.SwapCount = 0; + +#if FEATURE_dlist + ctx->Save = _mesa_create_save_table(); + if (!ctx->Save) { + _mesa_release_shared_state(ctx, ctx->Shared); + free(ctx->Exec); + return GL_FALSE; + } + + _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt ); #endif + break; + case API_OPENGLES: + /** + * GL_OES_texture_cube_map says + * "Initially all texture generation modes are set to REFLECTION_MAP_OES" + */ + for (i = 0; i < MAX_TEXTURE_UNITS; i++) { + struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i]; + texUnit->GenS.Mode = GL_REFLECTION_MAP_NV; + texUnit->GenT.Mode = GL_REFLECTION_MAP_NV; + texUnit->GenR.Mode = GL_REFLECTION_MAP_NV; + texUnit->GenS._ModeBit = TEXGEN_REFLECTION_MAP_NV; + texUnit->GenT._ModeBit = TEXGEN_REFLECTION_MAP_NV; + texUnit->GenR._ModeBit = TEXGEN_REFLECTION_MAP_NV; + } + break; + case API_OPENGLES2: + ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE; + ctx->VertexProgram._MaintainTnlProgram = GL_TRUE; + ctx->Point.PointSprite = GL_TRUE; /* always on for ES 2.x */ + break; + } ctx->FirstTimeCurrent = GL_TRUE; return GL_TRUE; } +GLboolean +_mesa_initialize_context(GLcontext *ctx, + const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext) +{ + return _mesa_initialize_context_for_api(ctx, + API_OPENGL, + visual, + share_list, + driverFunctions, + driverContext); +} /** * Allocate and initialize a GLcontext structure. @@ -899,6 +978,7 @@ _mesa_initialize_context(GLcontext *ctx, * we need to at least call driverFunctions->NewTextureObject to initialize * the rendering context. * + * \param api the GL API type to create the context for * \param visual a GLvisual pointer (we copy the struct contents) * \param share_list another context to share display lists with or NULL * \param driverFunctions points to the dd_function_table into which the @@ -908,10 +988,11 @@ _mesa_initialize_context(GLcontext *ctx, * \return pointer to a new __GLcontextRec or NULL if error. */ GLcontext * -_mesa_create_context(const GLvisual *visual, - GLcontext *share_list, - const struct dd_function_table *driverFunctions, - void *driverContext) +_mesa_create_context_for_api(gl_api api, + const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext) { GLcontext *ctx; @@ -922,8 +1003,8 @@ _mesa_create_context(const GLvisual *visual, if (!ctx) return NULL; - if (_mesa_initialize_context(ctx, visual, share_list, - driverFunctions, driverContext)) { + if (_mesa_initialize_context_for_api(ctx, api, visual, share_list, + driverFunctions, driverContext)) { return ctx; } else { @@ -932,6 +1013,17 @@ _mesa_create_context(const GLvisual *visual, } } +GLcontext * +_mesa_create_context(const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext) +{ + return _mesa_create_context_for_api(API_OPENGL, visual, + share_list, + driverFunctions, + driverContext); +} /** * Free the data associated with the given context. diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index 09bf1777dab..c9f4d433a57 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -112,8 +112,20 @@ _mesa_initialize_context( GLcontext *ctx, const struct dd_function_table *driverFunctions, void *driverContext ); -extern void -_mesa_initialize_context_extra(GLcontext *ctx); +extern GLcontext * +_mesa_create_context_for_api(gl_api api, + const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext); + +extern GLboolean +_mesa_initialize_context_for_api(GLcontext *ctx, + gl_api api, + const GLvisual *visual, + GLcontext *share_list, + const struct dd_function_table *driverFunctions, + void *driverContext); extern void _mesa_free_context_data( GLcontext *ctx ); diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 9bcfc1008a8..526145aeccf 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -315,7 +315,7 @@ write_texture_image(struct gl_texture_object *texObj, buffer, texObj, img); /* make filename */ - sprintf(s, "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face); + _mesa_snprintf(s, sizeof(s), "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face); printf(" Writing image level %u to %s\n", level, s); write_ppm(s, buffer, img->Width, img->Height, 4, 0, 1, 2, GL_FALSE); @@ -357,7 +357,7 @@ write_renderbuffer_image(const struct gl_renderbuffer *rb) format, type, &ctx->DefaultPacking, buffer); /* make filename */ - sprintf(s, "/tmp/renderbuffer%u.ppm", rb->Name); + _mesa_snprintf(s, sizeof(s), "/tmp/renderbuffer%u.ppm", rb->Name); printf(" Writing renderbuffer image to %s\n", s); write_ppm(s, buffer, rb->Width, rb->Height, 4, 0, 1, 2, GL_TRUE); diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index f869a585d6b..0c162f081aa 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -32,6 +32,7 @@ #include "glheader.h" #include "imports.h" #include "api_arrayelt.h" +#include "api_exec.h" #include "api_loopback.h" #include "config.h" #include "mfeatures.h" @@ -7725,7 +7726,7 @@ execute_list(GLcontext *ctx, GLuint list) default: { char msg[1000]; - sprintf(msg, "Error in execute_list: opcode=%d", + _mesa_snprintf(msg, sizeof(msg), "Error in execute_list: opcode=%d", (int) opcode); _mesa_problem(ctx, msg); } @@ -8747,9 +8748,15 @@ exec_MultiModeDrawElementsIBM(const GLenum * mode, * initialized from _mesa_init_api_defaults and from the active vtxfmt * struct. */ -void -_mesa_init_save_table(struct _glapi_table *table) +struct _glapi_table * +_mesa_create_save_table(void) { + struct _glapi_table *table; + + table = _mesa_alloc_dispatch_table(sizeof *table); + if (table == NULL) + return NULL; + _mesa_loopback_init_api_table(table); /* GL 1.0 */ @@ -9349,6 +9356,8 @@ _mesa_init_save_table(struct _glapi_table *table) (void) save_ClearBufferfv; (void) save_ClearBufferfi; #endif + + return table; } diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h index f37a93a7f4b..f8255facc5e 100644 --- a/src/mesa/main/dlist.h +++ b/src/mesa/main/dlist.h @@ -72,7 +72,7 @@ extern void _mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist); extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); -extern void _mesa_init_save_table( struct _glapi_table *table ); +extern struct _glapi_table *_mesa_create_save_table(void); extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp, const GLvertexformat *vfmt); diff --git a/src/mesa/es/main/drawtex.c b/src/mesa/main/drawtex.c index 42f44093972..86d5b555e0f 100644 --- a/src/mesa/es/main/drawtex.c +++ b/src/mesa/main/drawtex.c @@ -21,7 +21,7 @@ * DEALINGS IN THE SOFTWARE. */ -#include "drawtex.h" +#include "main/drawtex.h" #include "main/state.h" #include "main/imports.h" @@ -130,19 +130,4 @@ _mesa_DrawTexxv(const GLfixed *coords) (GLfloat) coords[4] / 65536.0f); } - -void -_mesa_init_drawtex_dispatch(struct _glapi_table *disp) -{ - SET_DrawTexfOES(disp, _mesa_DrawTexf); - SET_DrawTexfvOES(disp, _mesa_DrawTexfv); - SET_DrawTexiOES(disp, _mesa_DrawTexi); - SET_DrawTexivOES(disp, _mesa_DrawTexiv); - SET_DrawTexsOES(disp, _mesa_DrawTexs); - SET_DrawTexsvOES(disp, _mesa_DrawTexsv); - SET_DrawTexxOES(disp, _mesa_DrawTexx); - SET_DrawTexxvOES(disp, _mesa_DrawTexxv); -} - - #endif /* FEATURE_OES_draw_texture */ diff --git a/src/mesa/es/main/drawtex.h b/src/mesa/main/drawtex.h index 0f3bac38c77..95f4ac86f07 100644 --- a/src/mesa/es/main/drawtex.h +++ b/src/mesa/main/drawtex.h @@ -59,18 +59,10 @@ _mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); extern void GLAPIENTRY _mesa_DrawTexxv(const GLfixed *coords); -extern void -_mesa_init_drawtex_dispatch(struct _glapi_table *disp); - #else /* FEATURE_OES_draw_texture */ #define _MESA_INIT_DRAWTEX_FUNCTIONS(driver, impl) do { } while (0) -static INLINE void -_mesa_init_drawtex_dispatch(struct _glapi_table *disp) -{ -} - #endif /* FEATURE_OES_draw_texture */ diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 72787226dc4..db30123c0fb 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -682,6 +682,25 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state) } break; +#if FEATURE_ES1 + case GL_TEXTURE_GEN_STR_OES: + /* disable S, T, and R at the same time */ + { + struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); + if (texUnit) { + GLuint newenabled = + texUnit->TexGenEnabled & ~STR_BITS; + if (state) + newenabled |= STR_BITS; + if (texUnit->TexGenEnabled == newenabled) + return; + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + texUnit->TexGenEnabled = newenabled; + } + } + break; +#endif + /* * CLIENT STATE!!! */ @@ -1301,6 +1320,15 @@ _mesa_IsEnabled( GLenum cap ) } } return GL_FALSE; +#if FEATURE_ES1 + case GL_TEXTURE_GEN_STR_OES: + { + const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); + if (texUnit) { + return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS ? GL_TRUE : GL_FALSE; + } + } +#endif /* * CLIENT STATE!!! diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index 45f6a64356a..13705b9f671 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -109,6 +109,7 @@ LONGSTRING static const char enum_string_table[] = "GL_BACK_RIGHT\0" "GL_BGR\0" "GL_BGRA\0" + "GL_BGRA_EXT\0" "GL_BITMAP\0" "GL_BITMAP_TOKEN\0" "GL_BLEND\0" @@ -116,16 +117,23 @@ LONGSTRING static const char enum_string_table[] = "GL_BLEND_COLOR_EXT\0" "GL_BLEND_DST\0" "GL_BLEND_DST_ALPHA\0" + "GL_BLEND_DST_ALPHA_OES\0" "GL_BLEND_DST_RGB\0" + "GL_BLEND_DST_RGB_OES\0" "GL_BLEND_EQUATION\0" "GL_BLEND_EQUATION_ALPHA\0" "GL_BLEND_EQUATION_ALPHA_EXT\0" + "GL_BLEND_EQUATION_ALPHA_OES\0" "GL_BLEND_EQUATION_EXT\0" + "GL_BLEND_EQUATION_OES\0" "GL_BLEND_EQUATION_RGB\0" "GL_BLEND_EQUATION_RGB_EXT\0" + "GL_BLEND_EQUATION_RGB_OES\0" "GL_BLEND_SRC\0" "GL_BLEND_SRC_ALPHA\0" + "GL_BLEND_SRC_ALPHA_OES\0" "GL_BLEND_SRC_RGB\0" + "GL_BLEND_SRC_RGB_OES\0" "GL_BLUE\0" "GL_BLUE_BIAS\0" "GL_BLUE_BITS\0" @@ -140,11 +148,14 @@ LONGSTRING static const char enum_string_table[] = "GL_BOOL_VEC4_ARB\0" "GL_BUFFER_ACCESS\0" "GL_BUFFER_ACCESS_ARB\0" + "GL_BUFFER_ACCESS_OES\0" "GL_BUFFER_FLUSHING_UNMAP_APPLE\0" "GL_BUFFER_MAPPED\0" "GL_BUFFER_MAPPED_ARB\0" + "GL_BUFFER_MAPPED_OES\0" "GL_BUFFER_MAP_POINTER\0" "GL_BUFFER_MAP_POINTER_ARB\0" + "GL_BUFFER_MAP_POINTER_OES\0" "GL_BUFFER_OBJECT_APPLE\0" "GL_BUFFER_SERIALIZED_MODIFY_APPLE\0" "GL_BUFFER_SIZE\0" @@ -194,6 +205,7 @@ LONGSTRING static const char enum_string_table[] = "GL_COLOR_ARRAY_TYPE\0" "GL_COLOR_ATTACHMENT0\0" "GL_COLOR_ATTACHMENT0_EXT\0" + "GL_COLOR_ATTACHMENT0_OES\0" "GL_COLOR_ATTACHMENT1\0" "GL_COLOR_ATTACHMENT10\0" "GL_COLOR_ATTACHMENT10_EXT\0" @@ -336,6 +348,7 @@ LONGSTRING static const char enum_string_table[] = "GL_COORD_REPLACE\0" "GL_COORD_REPLACE_ARB\0" "GL_COORD_REPLACE_NV\0" + "GL_COORD_REPLACE_OES\0" "GL_COPY\0" "GL_COPY_INVERTED\0" "GL_COPY_PIXEL_TOKEN\0" @@ -359,6 +372,7 @@ LONGSTRING static const char enum_string_table[] = "GL_CURRENT_MATRIX_STACK_DEPTH_NV\0" "GL_CURRENT_NORMAL\0" "GL_CURRENT_PALETTE_MATRIX_ARB\0" + "GL_CURRENT_PALETTE_MATRIX_OES\0" "GL_CURRENT_PROGRAM\0" "GL_CURRENT_QUERY\0" "GL_CURRENT_QUERY_ARB\0" @@ -386,8 +400,10 @@ LONGSTRING static const char enum_string_table[] = "GL_DEPTH\0" "GL_DEPTH24_STENCIL8\0" "GL_DEPTH24_STENCIL8_EXT\0" + "GL_DEPTH24_STENCIL8_OES\0" "GL_DEPTH_ATTACHMENT\0" "GL_DEPTH_ATTACHMENT_EXT\0" + "GL_DEPTH_ATTACHMENT_OES\0" "GL_DEPTH_BIAS\0" "GL_DEPTH_BITS\0" "GL_DEPTH_BOUNDS_EXT\0" @@ -399,12 +415,15 @@ LONGSTRING static const char enum_string_table[] = "GL_DEPTH_COMPONENT\0" "GL_DEPTH_COMPONENT16\0" "GL_DEPTH_COMPONENT16_ARB\0" + "GL_DEPTH_COMPONENT16_OES\0" "GL_DEPTH_COMPONENT16_SGIX\0" "GL_DEPTH_COMPONENT24\0" "GL_DEPTH_COMPONENT24_ARB\0" + "GL_DEPTH_COMPONENT24_OES\0" "GL_DEPTH_COMPONENT24_SGIX\0" "GL_DEPTH_COMPONENT32\0" "GL_DEPTH_COMPONENT32_ARB\0" + "GL_DEPTH_COMPONENT32_OES\0" "GL_DEPTH_COMPONENT32_SGIX\0" "GL_DEPTH_FUNC\0" "GL_DEPTH_RANGE\0" @@ -413,6 +432,7 @@ LONGSTRING static const char enum_string_table[] = "GL_DEPTH_STENCIL_ATTACHMENT\0" "GL_DEPTH_STENCIL_EXT\0" "GL_DEPTH_STENCIL_NV\0" + "GL_DEPTH_STENCIL_OES\0" "GL_DEPTH_STENCIL_TO_BGRA_NV\0" "GL_DEPTH_STENCIL_TO_RGBA_NV\0" "GL_DEPTH_TEST\0" @@ -525,6 +545,8 @@ LONGSTRING static const char enum_string_table[] = "GL_FILL\0" "GL_FIRST_VERTEX_CONVENTION\0" "GL_FIRST_VERTEX_CONVENTION_EXT\0" + "GL_FIXED\0" + "GL_FIXED_OES\0" "GL_FLAT\0" "GL_FLOAT\0" "GL_FLOAT_MAT2\0" @@ -577,6 +599,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAGMENT_SHADER\0" "GL_FRAGMENT_SHADER_ARB\0" "GL_FRAGMENT_SHADER_DERIVATIVE_HINT\0" + "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES\0" "GL_FRAMEBUFFER\0" "GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE\0" @@ -586,40 +609,56 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES\0" "GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\0" "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT\0" + "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES\0" "GL_FRAMEBUFFER_BINDING\0" "GL_FRAMEBUFFER_BINDING_EXT\0" + "GL_FRAMEBUFFER_BINDING_OES\0" "GL_FRAMEBUFFER_COMPLETE\0" "GL_FRAMEBUFFER_COMPLETE_EXT\0" + "GL_FRAMEBUFFER_COMPLETE_OES\0" "GL_FRAMEBUFFER_DEFAULT\0" "GL_FRAMEBUFFER_EXT\0" "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT\0" "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES\0" + "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS\0" "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER\0" "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT\0" "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\0" "GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT\0" "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER\0" "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\0" + "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES\0" + "GL_FRAMEBUFFER_OES\0" "GL_FRAMEBUFFER_STATUS_ERROR_EXT\0" "GL_FRAMEBUFFER_UNDEFINED\0" "GL_FRAMEBUFFER_UNSUPPORTED\0" "GL_FRAMEBUFFER_UNSUPPORTED_EXT\0" + "GL_FRAMEBUFFER_UNSUPPORTED_OES\0" "GL_FRONT\0" "GL_FRONT_AND_BACK\0" "GL_FRONT_FACE\0" @@ -627,10 +666,13 @@ LONGSTRING static const char enum_string_table[] = "GL_FRONT_RIGHT\0" "GL_FUNC_ADD\0" "GL_FUNC_ADD_EXT\0" + "GL_FUNC_ADD_OES\0" "GL_FUNC_REVERSE_SUBTRACT\0" "GL_FUNC_REVERSE_SUBTRACT_EXT\0" + "GL_FUNC_REVERSE_SUBTRACT_OES\0" "GL_FUNC_SUBTRACT\0" "GL_FUNC_SUBTRACT_EXT\0" + "GL_FUNC_SUBTRACT_OES\0" "GL_GENERATE_MIPMAP\0" "GL_GENERATE_MIPMAP_HINT\0" "GL_GENERATE_MIPMAP_HINT_SGIS\0" @@ -642,6 +684,9 @@ LONGSTRING static const char enum_string_table[] = "GL_GREEN_BITS\0" "GL_GREEN_SCALE\0" "GL_HALF_FLOAT\0" + "GL_HALF_FLOAT_OES\0" + "GL_HIGH_FLOAT\0" + "GL_HIGH_INT\0" "GL_HINT_BIT\0" "GL_HISTOGRAM\0" "GL_HISTOGRAM_ALPHA_SIZE\0" @@ -663,7 +708,9 @@ LONGSTRING static const char enum_string_table[] = "GL_HISTOGRAM_WIDTH_EXT\0" "GL_IDENTITY_NV\0" "GL_IGNORE_BORDER_HP\0" + "GL_IMPLEMENTATION_COLOR_READ_FORMAT\0" "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES\0" + "GL_IMPLEMENTATION_COLOR_READ_TYPE\0" "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES\0" "GL_INCR\0" "GL_INCR_WRAP\0" @@ -698,6 +745,7 @@ LONGSTRING static const char enum_string_table[] = "GL_INTERPOLATE\0" "GL_INTERPOLATE_ARB\0" "GL_INTERPOLATE_EXT\0" + "GL_INT_10_10_10_2_OES\0" "GL_INT_VEC2\0" "GL_INT_VEC2_ARB\0" "GL_INT_VEC3\0" @@ -707,6 +755,7 @@ LONGSTRING static const char enum_string_table[] = "GL_INVALID_ENUM\0" "GL_INVALID_FRAMEBUFFER_OPERATION\0" "GL_INVALID_FRAMEBUFFER_OPERATION_EXT\0" + "GL_INVALID_FRAMEBUFFER_OPERATION_OES\0" "GL_INVALID_OPERATION\0" "GL_INVALID_VALUE\0" "GL_INVERSE_NV\0" @@ -763,6 +812,8 @@ LONGSTRING static const char enum_string_table[] = "GL_LOGIC_OP\0" "GL_LOGIC_OP_MODE\0" "GL_LOWER_LEFT\0" + "GL_LOW_FLOAT\0" + "GL_LOW_INT\0" "GL_LUMINANCE\0" "GL_LUMINANCE12\0" "GL_LUMINANCE12_ALPHA12\0" @@ -888,14 +939,22 @@ LONGSTRING static const char enum_string_table[] = "GL_MATRIX8_ARB\0" "GL_MATRIX9_ARB\0" "GL_MATRIX_INDEX_ARRAY_ARB\0" + "GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES\0" + "GL_MATRIX_INDEX_ARRAY_OES\0" "GL_MATRIX_INDEX_ARRAY_POINTER_ARB\0" + "GL_MATRIX_INDEX_ARRAY_POINTER_OES\0" "GL_MATRIX_INDEX_ARRAY_SIZE_ARB\0" + "GL_MATRIX_INDEX_ARRAY_SIZE_OES\0" "GL_MATRIX_INDEX_ARRAY_STRIDE_ARB\0" + "GL_MATRIX_INDEX_ARRAY_STRIDE_OES\0" "GL_MATRIX_INDEX_ARRAY_TYPE_ARB\0" + "GL_MATRIX_INDEX_ARRAY_TYPE_OES\0" "GL_MATRIX_MODE\0" "GL_MATRIX_PALETTE_ARB\0" + "GL_MATRIX_PALETTE_OES\0" "GL_MAX\0" "GL_MAX_3D_TEXTURE_SIZE\0" + "GL_MAX_3D_TEXTURE_SIZE_OES\0" "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0" "GL_MAX_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0" @@ -914,6 +973,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_CONVOLUTION_WIDTH_EXT\0" "GL_MAX_CUBE_MAP_TEXTURE_SIZE\0" "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB\0" + "GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES\0" "GL_MAX_DRAW_BUFFERS\0" "GL_MAX_DRAW_BUFFERS_ARB\0" "GL_MAX_DRAW_BUFFERS_ATI\0" @@ -923,12 +983,14 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_EXT\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0" + "GL_MAX_FRAGMENT_UNIFORM_VECTORS\0" "GL_MAX_LIGHTS\0" "GL_MAX_LIST_NESTING\0" "GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB\0" "GL_MAX_MODELVIEW_STACK_DEPTH\0" "GL_MAX_NAME_STACK_DEPTH\0" "GL_MAX_PALETTE_MATRICES_ARB\0" + "GL_MAX_PALETTE_MATRICES_OES\0" "GL_MAX_PIXEL_MAP_TABLE\0" "GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB\0" "GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB\0" @@ -960,6 +1022,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0" "GL_MAX_RENDERBUFFER_SIZE\0" "GL_MAX_RENDERBUFFER_SIZE_EXT\0" + "GL_MAX_RENDERBUFFER_SIZE_OES\0" "GL_MAX_SAMPLES\0" "GL_MAX_SAMPLES_EXT\0" "GL_MAX_SERVER_WAIT_TIMEOUT\0" @@ -970,6 +1033,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_TEXTURE_IMAGE_UNITS\0" "GL_MAX_TEXTURE_IMAGE_UNITS_ARB\0" "GL_MAX_TEXTURE_LOD_BIAS\0" + "GL_MAX_TEXTURE_LOD_BIAS_EXT\0" "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT\0" "GL_MAX_TEXTURE_SIZE\0" "GL_MAX_TEXTURE_STACK_DEPTH\0" @@ -982,14 +1046,19 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT\0" "GL_MAX_VARYING_FLOATS\0" "GL_MAX_VARYING_FLOATS_ARB\0" + "GL_MAX_VARYING_VECTORS\0" "GL_MAX_VERTEX_ATTRIBS\0" "GL_MAX_VERTEX_ATTRIBS_ARB\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0" "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0" "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB\0" + "GL_MAX_VERTEX_UNIFORM_VECTORS\0" "GL_MAX_VERTEX_UNITS_ARB\0" + "GL_MAX_VERTEX_UNITS_OES\0" "GL_MAX_VIEWPORT_DIMS\0" + "GL_MEDIUM_FLOAT\0" + "GL_MEDIUM_INT\0" "GL_MIN\0" "GL_MINMAX\0" "GL_MINMAX_EXT\0" @@ -1040,6 +1109,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MODELVIEW8_ARB\0" "GL_MODELVIEW9_ARB\0" "GL_MODELVIEW_MATRIX\0" + "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES\0" "GL_MODELVIEW_PROJECTION_NV\0" "GL_MODELVIEW_STACK_DEPTH\0" "GL_MODULATE\0" @@ -1065,6 +1135,7 @@ LONGSTRING static const char enum_string_table[] = "GL_NEVER\0" "GL_NICEST\0" "GL_NONE\0" + "GL_NONE_OES\0" "GL_NOOP\0" "GL_NOR\0" "GL_NORMALIZE\0" @@ -1077,10 +1148,13 @@ LONGSTRING static const char enum_string_table[] = "GL_NORMAL_MAP\0" "GL_NORMAL_MAP_ARB\0" "GL_NORMAL_MAP_NV\0" + "GL_NORMAL_MAP_OES\0" "GL_NOTEQUAL\0" "GL_NO_ERROR\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0" + "GL_NUM_PROGRAM_BINARY_FORMATS_OES\0" + "GL_NUM_SHADER_BINARY_FORMATS\0" "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0" "GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB\0" "GL_OBJECT_ACTIVE_UNIFORMS_ARB\0" @@ -1195,6 +1269,11 @@ LONGSTRING static const char enum_string_table[] = "GL_POINT_FADE_THRESHOLD_SIZE_EXT\0" "GL_POINT_FADE_THRESHOLD_SIZE_SGIS\0" "GL_POINT_SIZE\0" + "GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES\0" + "GL_POINT_SIZE_ARRAY_OES\0" + "GL_POINT_SIZE_ARRAY_POINTER_OES\0" + "GL_POINT_SIZE_ARRAY_STRIDE_OES\0" + "GL_POINT_SIZE_ARRAY_TYPE_OES\0" "GL_POINT_SIZE_GRANULARITY\0" "GL_POINT_SIZE_MAX\0" "GL_POINT_SIZE_MAX_ARB\0" @@ -1211,6 +1290,7 @@ LONGSTRING static const char enum_string_table[] = "GL_POINT_SPRITE_ARB\0" "GL_POINT_SPRITE_COORD_ORIGIN\0" "GL_POINT_SPRITE_NV\0" + "GL_POINT_SPRITE_OES\0" "GL_POINT_SPRITE_R_MODE_NV\0" "GL_POINT_TOKEN\0" "GL_POLYGON\0" @@ -1276,6 +1356,8 @@ LONGSTRING static const char enum_string_table[] = "GL_PROGRAM_ADDRESS_REGISTERS_ARB\0" "GL_PROGRAM_ALU_INSTRUCTIONS_ARB\0" "GL_PROGRAM_ATTRIBS_ARB\0" + "GL_PROGRAM_BINARY_FORMATS_OES\0" + "GL_PROGRAM_BINARY_LENGTH_OES\0" "GL_PROGRAM_BINDING_ARB\0" "GL_PROGRAM_ERROR_POSITION_ARB\0" "GL_PROGRAM_ERROR_POSITION_NV\0" @@ -1306,6 +1388,7 @@ LONGSTRING static const char enum_string_table[] = "GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB\0" "GL_PROJECTION\0" "GL_PROJECTION_MATRIX\0" + "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES\0" "GL_PROJECTION_STACK_DEPTH\0" "GL_PROVOKING_VERTEX\0" "GL_PROVOKING_VERTEX_EXT\0" @@ -1366,26 +1449,38 @@ LONGSTRING static const char enum_string_table[] = "GL_REFLECTION_MAP\0" "GL_REFLECTION_MAP_ARB\0" "GL_REFLECTION_MAP_NV\0" + "GL_REFLECTION_MAP_OES\0" "GL_RELEASED_APPLE\0" "GL_RENDER\0" "GL_RENDERBUFFER\0" "GL_RENDERBUFFER_ALPHA_SIZE\0" + "GL_RENDERBUFFER_ALPHA_SIZE_OES\0" "GL_RENDERBUFFER_BINDING\0" "GL_RENDERBUFFER_BINDING_EXT\0" + "GL_RENDERBUFFER_BINDING_OES\0" "GL_RENDERBUFFER_BLUE_SIZE\0" + "GL_RENDERBUFFER_BLUE_SIZE_OES\0" "GL_RENDERBUFFER_DEPTH_SIZE\0" + "GL_RENDERBUFFER_DEPTH_SIZE_OES\0" "GL_RENDERBUFFER_EXT\0" "GL_RENDERBUFFER_GREEN_SIZE\0" + "GL_RENDERBUFFER_GREEN_SIZE_OES\0" "GL_RENDERBUFFER_HEIGHT\0" "GL_RENDERBUFFER_HEIGHT_EXT\0" + "GL_RENDERBUFFER_HEIGHT_OES\0" "GL_RENDERBUFFER_INTERNAL_FORMAT\0" "GL_RENDERBUFFER_INTERNAL_FORMAT_EXT\0" + "GL_RENDERBUFFER_INTERNAL_FORMAT_OES\0" + "GL_RENDERBUFFER_OES\0" "GL_RENDERBUFFER_RED_SIZE\0" + "GL_RENDERBUFFER_RED_SIZE_OES\0" "GL_RENDERBUFFER_SAMPLES\0" "GL_RENDERBUFFER_SAMPLES_EXT\0" "GL_RENDERBUFFER_STENCIL_SIZE\0" + "GL_RENDERBUFFER_STENCIL_SIZE_OES\0" "GL_RENDERBUFFER_WIDTH\0" "GL_RENDERBUFFER_WIDTH_EXT\0" + "GL_RENDERBUFFER_WIDTH_OES\0" "GL_RENDERER\0" "GL_RENDER_MODE\0" "GL_REPEAT\0" @@ -1410,11 +1505,15 @@ LONGSTRING static const char enum_string_table[] = "GL_RGB4_EXT\0" "GL_RGB4_S3TC\0" "GL_RGB5\0" + "GL_RGB565\0" + "GL_RGB565_OES\0" "GL_RGB5_A1\0" "GL_RGB5_A1_EXT\0" + "GL_RGB5_A1_OES\0" "GL_RGB5_EXT\0" "GL_RGB8\0" "GL_RGB8_EXT\0" + "GL_RGB8_OES\0" "GL_RGBA\0" "GL_RGBA12\0" "GL_RGBA12_EXT\0" @@ -1425,9 +1524,11 @@ LONGSTRING static const char enum_string_table[] = "GL_RGBA4\0" "GL_RGBA4_DXT5_S3TC\0" "GL_RGBA4_EXT\0" + "GL_RGBA4_OES\0" "GL_RGBA4_S3TC\0" "GL_RGBA8\0" "GL_RGBA8_EXT\0" + "GL_RGBA8_OES\0" "GL_RGBA8_SNORM\0" "GL_RGBA_DXT5_S3TC\0" "GL_RGBA_MODE\0" @@ -1444,6 +1545,7 @@ LONGSTRING static const char enum_string_table[] = "GL_SAMPLER_2D\0" "GL_SAMPLER_2D_SHADOW\0" "GL_SAMPLER_3D\0" + "GL_SAMPLER_3D_OES\0" "GL_SAMPLER_CUBE\0" "GL_SAMPLES\0" "GL_SAMPLES_3DFX\0" @@ -1481,6 +1583,8 @@ LONGSTRING static const char enum_string_table[] = "GL_SEPARATE_SPECULAR_COLOR\0" "GL_SEPARATE_SPECULAR_COLOR_EXT\0" "GL_SET\0" + "GL_SHADER_BINARY_FORMATS\0" + "GL_SHADER_COMPILER\0" "GL_SHADER_OBJECT_ARB\0" "GL_SHADER_SOURCE_LENGTH\0" "GL_SHADER_TYPE\0" @@ -1553,6 +1657,7 @@ LONGSTRING static const char enum_string_table[] = "GL_STENCIL\0" "GL_STENCIL_ATTACHMENT\0" "GL_STENCIL_ATTACHMENT_EXT\0" + "GL_STENCIL_ATTACHMENT_OES\0" "GL_STENCIL_BACK_FAIL\0" "GL_STENCIL_BACK_FAIL_ATI\0" "GL_STENCIL_BACK_FUNC\0" @@ -1574,10 +1679,13 @@ LONGSTRING static const char enum_string_table[] = "GL_STENCIL_INDEX16\0" "GL_STENCIL_INDEX16_EXT\0" "GL_STENCIL_INDEX1_EXT\0" + "GL_STENCIL_INDEX1_OES\0" "GL_STENCIL_INDEX4\0" "GL_STENCIL_INDEX4_EXT\0" + "GL_STENCIL_INDEX4_OES\0" "GL_STENCIL_INDEX8\0" "GL_STENCIL_INDEX8_EXT\0" + "GL_STENCIL_INDEX8_OES\0" "GL_STENCIL_INDEX_EXT\0" "GL_STENCIL_PASS_DEPTH_FAIL\0" "GL_STENCIL_PASS_DEPTH_PASS\0" @@ -1684,6 +1792,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_2D\0" "GL_TEXTURE_2D_ARRAY_EXT\0" "GL_TEXTURE_3D\0" + "GL_TEXTURE_3D_OES\0" "GL_TEXTURE_ALPHA_SIZE\0" "GL_TEXTURE_ALPHA_SIZE_EXT\0" "GL_TEXTURE_BASE_LEVEL\0" @@ -1692,8 +1801,10 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BINDING_2D\0" "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_3D\0" + "GL_TEXTURE_BINDING_3D_OES\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" + "GL_TEXTURE_BINDING_CUBE_MAP_OES\0" "GL_TEXTURE_BINDING_RECTANGLE_ARB\0" "GL_TEXTURE_BINDING_RECTANGLE_NV\0" "GL_TEXTURE_BIT\0" @@ -1731,20 +1842,28 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_COORD_ARRAY_SIZE\0" "GL_TEXTURE_COORD_ARRAY_STRIDE\0" "GL_TEXTURE_COORD_ARRAY_TYPE\0" + "GL_TEXTURE_CROP_RECT_OES\0" "GL_TEXTURE_CUBE_MAP\0" "GL_TEXTURE_CUBE_MAP_ARB\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_X\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB\0" + "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB\0" + "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z\0" "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB\0" + "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES\0" + "GL_TEXTURE_CUBE_MAP_OES\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_X\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB\0" + "GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_Y\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB\0" + "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_Z\0" "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB\0" + "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES\0" "GL_TEXTURE_CUBE_MAP_SEAMLESS\0" "GL_TEXTURE_DEPTH\0" "GL_TEXTURE_DEPTH_SIZE\0" @@ -1753,10 +1872,13 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_ENV_COLOR\0" "GL_TEXTURE_ENV_MODE\0" "GL_TEXTURE_FILTER_CONTROL\0" + "GL_TEXTURE_FILTER_CONTROL_EXT\0" "GL_TEXTURE_GEN_MODE\0" + "GL_TEXTURE_GEN_MODE_OES\0" "GL_TEXTURE_GEN_Q\0" "GL_TEXTURE_GEN_R\0" "GL_TEXTURE_GEN_S\0" + "GL_TEXTURE_GEN_STR_OES\0" "GL_TEXTURE_GEN_T\0" "GL_TEXTURE_GEQUAL_R_SGIX\0" "GL_TEXTURE_GREEN_SIZE\0" @@ -1776,6 +1898,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_LUMINANCE_SIZE_EXT\0" "GL_TEXTURE_MAG_FILTER\0" "GL_TEXTURE_MATRIX\0" + "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES\0" "GL_TEXTURE_MAX_ANISOTROPY_EXT\0" "GL_TEXTURE_MAX_CLAMP_R_SGIX\0" "GL_TEXTURE_MAX_CLAMP_S_SGIX\0" @@ -1800,6 +1923,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_UNSIGNED_REMAP_MODE_NV\0" "GL_TEXTURE_WIDTH\0" "GL_TEXTURE_WRAP_R\0" + "GL_TEXTURE_WRAP_R_OES\0" "GL_TEXTURE_WRAP_S\0" "GL_TEXTURE_WRAP_T\0" "GL_TIMEOUT_EXPIRED\0" @@ -1845,17 +1969,22 @@ LONGSTRING static const char enum_string_table[] = "GL_UNSIGNED_BYTE_3_3_2\0" "GL_UNSIGNED_INT\0" "GL_UNSIGNED_INT_10_10_10_2\0" + "GL_UNSIGNED_INT_10_10_10_2_OES\0" "GL_UNSIGNED_INT_24_8\0" "GL_UNSIGNED_INT_24_8_EXT\0" "GL_UNSIGNED_INT_24_8_NV\0" + "GL_UNSIGNED_INT_24_8_OES\0" "GL_UNSIGNED_INT_2_10_10_10_REV\0" + "GL_UNSIGNED_INT_2_10_10_10_REV_EXT\0" "GL_UNSIGNED_INT_8_8_8_8\0" "GL_UNSIGNED_INT_8_8_8_8_REV\0" "GL_UNSIGNED_NORMALIZED\0" "GL_UNSIGNED_SHORT\0" "GL_UNSIGNED_SHORT_1_5_5_5_REV\0" + "GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT\0" "GL_UNSIGNED_SHORT_4_4_4_4\0" "GL_UNSIGNED_SHORT_4_4_4_4_REV\0" + "GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT\0" "GL_UNSIGNED_SHORT_5_5_5_1\0" "GL_UNSIGNED_SHORT_5_6_5\0" "GL_UNSIGNED_SHORT_5_6_5_REV\0" @@ -1928,14 +2057,21 @@ LONGSTRING static const char enum_string_table[] = "GL_WEIGHT_ARRAY_ARB\0" "GL_WEIGHT_ARRAY_BUFFER_BINDING\0" "GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB\0" + "GL_WEIGHT_ARRAY_BUFFER_BINDING_OES\0" + "GL_WEIGHT_ARRAY_OES\0" "GL_WEIGHT_ARRAY_POINTER_ARB\0" + "GL_WEIGHT_ARRAY_POINTER_OES\0" "GL_WEIGHT_ARRAY_SIZE_ARB\0" + "GL_WEIGHT_ARRAY_SIZE_OES\0" "GL_WEIGHT_ARRAY_STRIDE_ARB\0" + "GL_WEIGHT_ARRAY_STRIDE_OES\0" "GL_WEIGHT_ARRAY_TYPE_ARB\0" + "GL_WEIGHT_ARRAY_TYPE_OES\0" "GL_WEIGHT_SUM_UNITY_ARB\0" "GL_WRAP_BORDER_SUN\0" "GL_WRITE_ONLY\0" "GL_WRITE_ONLY_ARB\0" + "GL_WRITE_ONLY_OES\0" "GL_XOR\0" "GL_YCBCR_422_APPLE\0" "GL_YCBCR_MESA\0" @@ -1944,7 +2080,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[1906] = +static const enum_elt all_enums[2042] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2019,3214 +2155,3380 @@ static const enum_elt all_enums[1906] = { 1175, 0x00000403 }, /* GL_BACK_RIGHT */ { 1189, 0x000080E0 }, /* GL_BGR */ { 1196, 0x000080E1 }, /* GL_BGRA */ - { 1204, 0x00001A00 }, /* GL_BITMAP */ - { 1214, 0x00000704 }, /* GL_BITMAP_TOKEN */ - { 1230, 0x00000BE2 }, /* GL_BLEND */ - { 1239, 0x00008005 }, /* GL_BLEND_COLOR */ - { 1254, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ - { 1273, 0x00000BE0 }, /* GL_BLEND_DST */ - { 1286, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ - { 1305, 0x000080C8 }, /* GL_BLEND_DST_RGB */ - { 1322, 0x00008009 }, /* GL_BLEND_EQUATION */ - { 1340, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ - { 1364, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ - { 1392, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ - { 1414, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ - { 1436, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ - { 1462, 0x00000BE1 }, /* GL_BLEND_SRC */ - { 1475, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ - { 1494, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ - { 1511, 0x00001905 }, /* GL_BLUE */ - { 1519, 0x00000D1B }, /* GL_BLUE_BIAS */ - { 1532, 0x00000D54 }, /* GL_BLUE_BITS */ - { 1545, 0x00000D1A }, /* GL_BLUE_SCALE */ - { 1559, 0x00008B56 }, /* GL_BOOL */ - { 1567, 0x00008B56 }, /* GL_BOOL_ARB */ - { 1579, 0x00008B57 }, /* GL_BOOL_VEC2 */ - { 1592, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ - { 1609, 0x00008B58 }, /* GL_BOOL_VEC3 */ - { 1622, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ - { 1639, 0x00008B59 }, /* GL_BOOL_VEC4 */ - { 1652, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ - { 1669, 0x000088BB }, /* GL_BUFFER_ACCESS */ - { 1686, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ - { 1707, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - { 1738, 0x000088BC }, /* GL_BUFFER_MAPPED */ - { 1755, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ - { 1776, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ - { 1798, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ - { 1824, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ - { 1847, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - { 1881, 0x00008764 }, /* GL_BUFFER_SIZE */ - { 1896, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ - { 1915, 0x00008765 }, /* GL_BUFFER_USAGE */ - { 1931, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ - { 1951, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ - { 1970, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - { 1996, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ - { 2019, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - { 2047, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ - { 2066, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ - { 2088, 0x00001400 }, /* GL_BYTE */ - { 2096, 0x00002A24 }, /* GL_C3F_V3F */ - { 2107, 0x00002A26 }, /* GL_C4F_N3F_V3F */ - { 2122, 0x00002A22 }, /* GL_C4UB_V2F */ - { 2134, 0x00002A23 }, /* GL_C4UB_V3F */ - { 2146, 0x00000901 }, /* GL_CCW */ - { 2153, 0x00002900 }, /* GL_CLAMP */ - { 2162, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ - { 2181, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ - { 2204, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ - { 2228, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ - { 2245, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ - { 2267, 0x00001500 }, /* GL_CLEAR */ - { 2276, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ - { 2301, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ - { 2330, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ - { 2356, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - { 2385, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ - { 2411, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ - { 2438, 0x00003000 }, /* GL_CLIP_PLANE0 */ - { 2453, 0x00003001 }, /* GL_CLIP_PLANE1 */ - { 2468, 0x00003002 }, /* GL_CLIP_PLANE2 */ - { 2483, 0x00003003 }, /* GL_CLIP_PLANE3 */ - { 2498, 0x00003004 }, /* GL_CLIP_PLANE4 */ - { 2513, 0x00003005 }, /* GL_CLIP_PLANE5 */ - { 2528, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - { 2561, 0x00000A00 }, /* GL_COEFF */ - { 2570, 0x00001800 }, /* GL_COLOR */ - { 2579, 0x00008076 }, /* GL_COLOR_ARRAY */ - { 2594, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - { 2624, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 2658, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ - { 2681, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ - { 2701, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ - { 2723, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ - { 2743, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ - { 2764, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ - { 2789, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ - { 2810, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ - { 2832, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ - { 2858, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ - { 2880, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ - { 2906, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ - { 2928, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ - { 2954, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ - { 2976, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ - { 3002, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ - { 3024, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ - { 3050, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ - { 3072, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ - { 3098, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ - { 3123, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ - { 3144, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ - { 3169, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ - { 3190, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ - { 3215, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ - { 3236, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ - { 3261, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ - { 3282, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ - { 3307, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ - { 3328, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ - { 3353, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ - { 3374, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ - { 3399, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ - { 3420, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ - { 3445, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ - { 3466, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ - { 3491, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ - { 3511, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ - { 3532, 0x00001900 }, /* GL_COLOR_INDEX */ - { 3547, 0x00001603 }, /* GL_COLOR_INDEXES */ - { 3564, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ - { 3582, 0x00000B57 }, /* GL_COLOR_MATERIAL */ - { 3600, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ - { 3623, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ - { 3651, 0x000080B1 }, /* GL_COLOR_MATRIX */ - { 3667, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ - { 3687, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ - { 3715, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 3747, 0x00008458 }, /* GL_COLOR_SUM */ - { 3760, 0x00008458 }, /* GL_COLOR_SUM_ARB */ - { 3777, 0x000080D0 }, /* GL_COLOR_TABLE */ - { 3792, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ - { 3818, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ - { 3848, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ - { 3878, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ - { 3898, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ - { 3922, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ - { 3947, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ - { 3976, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ - { 4005, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ - { 4027, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ - { 4053, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ - { 4079, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ - { 4105, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ - { 4135, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ - { 4165, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - { 4195, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ - { 4229, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ - { 4263, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - { 4293, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ - { 4327, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ - { 4361, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ - { 4385, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ - { 4413, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ - { 4441, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ - { 4462, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ - { 4487, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ - { 4508, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ - { 4533, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ - { 4558, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ - { 4577, 0x00008570 }, /* GL_COMBINE */ - { 4588, 0x00008503 }, /* GL_COMBINE4 */ - { 4600, 0x00008572 }, /* GL_COMBINE_ALPHA */ - { 4617, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ - { 4638, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ - { 4659, 0x00008570 }, /* GL_COMBINE_ARB */ - { 4674, 0x00008570 }, /* GL_COMBINE_EXT */ - { 4689, 0x00008571 }, /* GL_COMBINE_RGB */ - { 4704, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ - { 4723, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 4742, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ - { 4778, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 4802, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 4830, 0x00001300 }, /* GL_COMPILE */ - { 4841, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 4864, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 4882, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 4902, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 4926, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 4950, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 4978, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 5002, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 5032, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 5066, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 5094, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 5112, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 5131, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 5154, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 5183, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 5216, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 5249, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 5282, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 5304, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 5332, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 5364, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ - { 5389, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 5420, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ - { 5439, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ - { 5464, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 5494, 0x0000911C }, /* GL_CONDITION_SATISFIED */ - { 5517, 0x00008576 }, /* GL_CONSTANT */ - { 5529, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 5547, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 5569, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 5585, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 5609, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 5631, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 5649, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 5671, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 5687, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 5705, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 5723, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 5751, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 5782, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 5809, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 5840, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 5867, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 5898, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 5926, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 5958, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 5980, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 6006, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 6028, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 6054, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 6075, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 6100, 0x00008862 }, /* GL_COORD_REPLACE */ - { 6117, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 6138, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 6158, 0x00001503 }, /* GL_COPY */ - { 6166, 0x0000150C }, /* GL_COPY_INVERTED */ - { 6183, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 6203, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ - { 6223, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ - { 6244, 0x00000B44 }, /* GL_CULL_FACE */ - { 6257, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 6275, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 6294, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 6326, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 6361, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 6382, 0x00000001 }, /* GL_CURRENT_BIT */ - { 6397, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 6414, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 6435, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 6461, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 6478, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 6500, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 6528, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 6549, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 6583, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 6616, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 6634, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 6664, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 6683, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 6700, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 6721, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 6745, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 6772, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 6796, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 6823, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 6856, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 6890, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 6923, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 6950, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 6976, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 7001, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 7030, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 7052, 0x00000900 }, /* GL_CW */ - { 7058, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 7079, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 7100, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 7120, 0x00002101 }, /* GL_DECAL */ - { 7129, 0x00001E03 }, /* GL_DECR */ - { 7137, 0x00008508 }, /* GL_DECR_WRAP */ - { 7150, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 7167, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 7184, 0x00001801 }, /* GL_DEPTH */ - { 7193, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ - { 7213, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ - { 7237, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ - { 7257, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 7281, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 7295, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 7309, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 7329, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 7354, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 7374, 0x0000864F }, /* GL_DEPTH_CLAMP */ - { 7389, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 7407, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 7428, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 7447, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 7468, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 7493, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 7519, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 7540, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 7565, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 7591, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 7612, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 7637, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 7663, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 7677, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 7692, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 7707, 0x000084F9 }, /* GL_DEPTH_STENCIL */ - { 7724, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ - { 7752, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ - { 7773, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 7793, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 7821, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 7849, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 7863, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 7885, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 7911, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 7930, 0x00001201 }, /* GL_DIFFUSE */ - { 7941, 0x00000BD0 }, /* GL_DITHER */ - { 7951, 0x00000A02 }, /* GL_DOMAIN */ - { 7961, 0x00001100 }, /* GL_DONT_CARE */ - { 7974, 0x000086AE }, /* GL_DOT3_RGB */ - { 7986, 0x000086AF }, /* GL_DOT3_RGBA */ - { 7999, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 8016, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 8033, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 8049, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 8065, 0x0000140A }, /* GL_DOUBLE */ - { 8075, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 8091, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 8106, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 8122, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 8142, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 8162, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 8178, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 8195, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 8216, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 8237, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 8254, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 8275, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 8296, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 8313, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 8334, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 8355, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 8372, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 8393, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 8414, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 8431, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 8452, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 8473, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 8490, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 8511, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 8532, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 8552, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 8572, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 8588, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 8608, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 8628, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 8644, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 8664, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 8684, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 8700, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 8720, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 8740, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 8756, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 8776, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 8796, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 8812, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 8832, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 8852, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 8868, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 8888, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 8908, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 8924, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 8944, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 8964, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 8980, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 9000, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 9020, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 9040, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 9068, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 9100, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 9124, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 9144, 0x00000304 }, /* GL_DST_ALPHA */ - { 9157, 0x00000306 }, /* GL_DST_COLOR */ - { 9170, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 9184, 0x00008779 }, /* GL_DUDV_ATI */ - { 9196, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 9212, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 9232, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 9248, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 9268, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 9284, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 9304, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 9317, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 9336, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 9370, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 9408, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 9435, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 9461, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 9485, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 9517, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 9553, 0x00001600 }, /* GL_EMISSION */ - { 9565, 0x00002000 }, /* GL_ENABLE_BIT */ - { 9579, 0x00000202 }, /* GL_EQUAL */ - { 9588, 0x00001509 }, /* GL_EQUIV */ - { 9597, 0x00010000 }, /* GL_EVAL_BIT */ - { 9609, 0x00000800 }, /* GL_EXP */ - { 9616, 0x00000801 }, /* GL_EXP2 */ - { 9624, 0x00001F03 }, /* GL_EXTENSIONS */ - { 9638, 0x00002400 }, /* GL_EYE_LINEAR */ - { 9652, 0x00002502 }, /* GL_EYE_PLANE */ - { 9665, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 9690, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 9707, 0x00000000 }, /* GL_FALSE */ - { 9716, 0x00001101 }, /* GL_FASTEST */ - { 9727, 0x00001C01 }, /* GL_FEEDBACK */ - { 9739, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 9766, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 9790, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 9814, 0x00001B02 }, /* GL_FILL */ - { 9822, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 9849, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 9880, 0x00001D00 }, /* GL_FLAT */ - { 9888, 0x00001406 }, /* GL_FLOAT */ - { 9897, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 9911, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 9929, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 9945, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 9961, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 9975, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 9993, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 10009, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 10025, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 10039, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 10057, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 10073, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 10089, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 10103, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 10121, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 10135, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 10153, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 10167, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 10185, 0x00000B60 }, /* GL_FOG */ - { 10192, 0x00000080 }, /* GL_FOG_BIT */ - { 10203, 0x00000B66 }, /* GL_FOG_COLOR */ - { 10216, 0x00008451 }, /* GL_FOG_COORD */ - { 10229, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 10247, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 10271, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 10310, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 10353, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 10385, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 10416, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 10445, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 10470, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 10489, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 10523, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 10550, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 10576, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 10600, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 10617, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 10632, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 10656, 0x00000B64 }, /* GL_FOG_END */ - { 10667, 0x00000C54 }, /* GL_FOG_HINT */ - { 10679, 0x00000B61 }, /* GL_FOG_INDEX */ - { 10692, 0x00000B65 }, /* GL_FOG_MODE */ - { 10704, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 10723, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 10748, 0x00000B63 }, /* GL_FOG_START */ - { 10761, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 10779, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 10803, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 10822, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 10845, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 10880, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 10895, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 10932, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 10968, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 11009, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 11050, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 11087, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 11124, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 11162, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 11204, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 11242, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 11284, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 11319, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 11358, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 11407, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 11455, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 11507, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 11547, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 11591, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 11631, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 11675, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 11698, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 11725, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 11749, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 11777, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 11800, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 11819, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 11856, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 11897, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 11938, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 11976, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 12018, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 12069, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 12107, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 12152, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 12201, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 12239, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 12281, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 12319, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 12361, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 12393, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 12418, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 12445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 12476, 0x00000404 }, /* GL_FRONT */ - { 12485, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 12503, 0x00000B46 }, /* GL_FRONT_FACE */ - { 12517, 0x00000400 }, /* GL_FRONT_LEFT */ - { 12531, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 12546, 0x00008006 }, /* GL_FUNC_ADD */ - { 12558, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 12574, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 12599, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 12628, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 12645, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 12666, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 12685, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 12709, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 12738, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 12762, 0x00000206 }, /* GL_GEQUAL */ - { 12772, 0x00000204 }, /* GL_GREATER */ - { 12783, 0x00001904 }, /* GL_GREEN */ - { 12792, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 12806, 0x00000D53 }, /* GL_GREEN_BITS */ - { 12820, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 12835, 0x0000140B }, /* GL_HALF_FLOAT */ - { 12849, 0x00008000 }, /* GL_HINT_BIT */ - { 12861, 0x00008024 }, /* GL_HISTOGRAM */ - { 12874, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 12898, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 12926, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 12949, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 12976, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 12993, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 13013, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 13037, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 13061, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 13089, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 13117, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 13149, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 13171, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 13197, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 13215, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 13237, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 13256, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 13279, 0x0000862A }, /* GL_IDENTITY_NV */ - { 13294, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 13314, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 13354, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 13392, 0x00001E02 }, /* GL_INCR */ - { 13400, 0x00008507 }, /* GL_INCR_WRAP */ - { 13413, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 13430, 0x00008222 }, /* GL_INDEX */ - { 13439, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 13454, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 13484, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 13518, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 13541, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 13563, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 13583, 0x00000D51 }, /* GL_INDEX_BITS */ - { 13597, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 13618, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 13636, 0x00000C30 }, /* GL_INDEX_MODE */ - { 13650, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 13666, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 13681, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 13700, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 13719, 0x00001404 }, /* GL_INT */ - { 13726, 0x00008049 }, /* GL_INTENSITY */ - { 13739, 0x0000804C }, /* GL_INTENSITY12 */ - { 13754, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 13773, 0x0000804D }, /* GL_INTENSITY16 */ - { 13788, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 13807, 0x0000804A }, /* GL_INTENSITY4 */ - { 13821, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 13839, 0x0000804B }, /* GL_INTENSITY8 */ - { 13853, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 13871, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 13888, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 13915, 0x00008575 }, /* GL_INTERPOLATE */ - { 13930, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 13949, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 13968, 0x00008B53 }, /* GL_INT_VEC2 */ - { 13980, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 13996, 0x00008B54 }, /* GL_INT_VEC3 */ - { 14008, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 14024, 0x00008B55 }, /* GL_INT_VEC4 */ - { 14036, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 14052, 0x00000500 }, /* GL_INVALID_ENUM */ - { 14068, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 14101, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 14138, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 14159, 0x00000501 }, /* GL_INVALID_VALUE */ - { 14176, 0x0000862B }, /* GL_INVERSE_NV */ - { 14190, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 14214, 0x0000150A }, /* GL_INVERT */ - { 14224, 0x00001E00 }, /* GL_KEEP */ - { 14232, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 14258, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 14288, 0x00000406 }, /* GL_LEFT */ - { 14296, 0x00000203 }, /* GL_LEQUAL */ - { 14306, 0x00000201 }, /* GL_LESS */ - { 14314, 0x00004000 }, /* GL_LIGHT0 */ - { 14324, 0x00004001 }, /* GL_LIGHT1 */ - { 14334, 0x00004002 }, /* GL_LIGHT2 */ - { 14344, 0x00004003 }, /* GL_LIGHT3 */ - { 14354, 0x00004004 }, /* GL_LIGHT4 */ - { 14364, 0x00004005 }, /* GL_LIGHT5 */ - { 14374, 0x00004006 }, /* GL_LIGHT6 */ - { 14384, 0x00004007 }, /* GL_LIGHT7 */ - { 14394, 0x00000B50 }, /* GL_LIGHTING */ - { 14406, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 14422, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 14445, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 14474, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 14507, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 14535, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 14559, 0x00001B01 }, /* GL_LINE */ - { 14567, 0x00002601 }, /* GL_LINEAR */ - { 14577, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 14599, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 14629, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 14660, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 14684, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 14709, 0x00000001 }, /* GL_LINES */ - { 14718, 0x00000004 }, /* GL_LINE_BIT */ - { 14730, 0x00000002 }, /* GL_LINE_LOOP */ - { 14743, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 14763, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 14778, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 14798, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 14814, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 14838, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 14861, 0x00000003 }, /* GL_LINE_STRIP */ - { 14875, 0x00000702 }, /* GL_LINE_TOKEN */ - { 14889, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 14903, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 14929, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 14949, 0x00008B82 }, /* GL_LINK_STATUS */ - { 14964, 0x00000B32 }, /* GL_LIST_BASE */ - { 14977, 0x00020000 }, /* GL_LIST_BIT */ - { 14989, 0x00000B33 }, /* GL_LIST_INDEX */ - { 15003, 0x00000B30 }, /* GL_LIST_MODE */ - { 15016, 0x00000101 }, /* GL_LOAD */ - { 15024, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 15036, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 15053, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 15067, 0x00001909 }, /* GL_LUMINANCE */ - { 15080, 0x00008041 }, /* GL_LUMINANCE12 */ - { 15095, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 15118, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 15145, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 15167, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 15193, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 15212, 0x00008042 }, /* GL_LUMINANCE16 */ - { 15227, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 15250, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 15277, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 15296, 0x0000803F }, /* GL_LUMINANCE4 */ - { 15310, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 15331, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 15356, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 15374, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 15395, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 15420, 0x00008040 }, /* GL_LUMINANCE8 */ - { 15434, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 15455, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 15480, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 15498, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 15517, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 15533, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 15553, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 15575, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 15589, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 15604, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 15628, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 15652, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 15676, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 15700, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 15717, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 15734, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 15762, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 15791, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 15820, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 15849, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 15878, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 15907, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 15936, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 15964, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 15992, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 16020, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 16048, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 16076, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 16104, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 16132, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 16160, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 16188, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 16204, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 16224, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 16246, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 16260, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 16275, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 16299, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 16323, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 16347, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 16371, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 16388, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 16405, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 16433, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 16462, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 16491, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 16520, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 16549, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 16578, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 16607, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 16635, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 16663, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 16691, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 16719, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 16747, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 16775, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 16803, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 16831, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 16859, 0x00000D10 }, /* GL_MAP_COLOR */ - { 16872, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 16898, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 16927, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 16955, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 16971, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 16986, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 17012, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 17029, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 17044, 0x00008630 }, /* GL_MATRIX0_NV */ - { 17058, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 17074, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 17090, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 17106, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 17122, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 17138, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 17154, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 17170, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 17186, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 17202, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 17218, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 17233, 0x00008631 }, /* GL_MATRIX1_NV */ - { 17247, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 17263, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 17279, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 17295, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 17311, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 17327, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 17343, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 17359, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 17375, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 17391, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 17407, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 17422, 0x00008632 }, /* GL_MATRIX2_NV */ - { 17436, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 17452, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 17468, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 17483, 0x00008633 }, /* GL_MATRIX3_NV */ - { 17497, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 17512, 0x00008634 }, /* GL_MATRIX4_NV */ - { 17526, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 17541, 0x00008635 }, /* GL_MATRIX5_NV */ - { 17555, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 17570, 0x00008636 }, /* GL_MATRIX6_NV */ - { 17584, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 17599, 0x00008637 }, /* GL_MATRIX7_NV */ - { 17613, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 17628, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 17643, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 17669, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 17703, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 17734, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 17767, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 17798, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 17813, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 17835, 0x00008008 }, /* GL_MAX */ - { 17842, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 17865, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 17897, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 17923, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 17956, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 17982, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 18016, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 18035, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 18060, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 18089, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 18121, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 18157, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 18193, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 18233, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 18259, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 18289, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 18314, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 18343, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 18372, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 18405, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 18425, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 18449, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 18473, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 18497, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 18522, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 18540, 0x00008008 }, /* GL_MAX_EXT */ - { 18551, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 18586, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 18625, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 18639, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 18659, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 18697, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 18726, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 18750, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 18778, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 18801, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 18838, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 18874, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 18901, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 18930, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 18964, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 19000, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 19027, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 19059, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 19095, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 19124, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 19153, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 19181, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 19219, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 19263, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 19306, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 19340, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 19379, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 19416, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 19454, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 19497, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 19540, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 19570, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 19601, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 19637, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 19673, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 19703, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 19737, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 19770, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 19795, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 19824, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 19839, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 19858, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 19885, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 19905, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 19929, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 19951, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 19977, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 20004, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 20035, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 20059, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 20093, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 20113, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 20140, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 20161, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 20186, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 20211, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 20246, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 20299, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 20346, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 20396, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 20418, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 20444, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 20466, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 20492, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 20526, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 20564, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 20597, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 20634, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 20658, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 20679, 0x00008007 }, /* GL_MIN */ - { 20686, 0x0000802E }, /* GL_MINMAX */ - { 20696, 0x0000802E }, /* GL_MINMAX_EXT */ - { 20710, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 20727, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 20748, 0x00008030 }, /* GL_MINMAX_SINK */ - { 20763, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 20782, 0x00008007 }, /* GL_MIN_EXT */ - { 20793, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 20812, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 20835, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 20858, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 20878, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 20898, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 20928, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 20956, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 20984, 0x00001700 }, /* GL_MODELVIEW */ - { 20997, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 21015, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 21034, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 21053, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 21072, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 21091, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 21110, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 21129, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 21148, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 21167, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 21186, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 21205, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 21223, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 21242, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 21261, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 21280, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 21299, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 21318, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 21337, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 21356, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 21375, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 21394, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 21413, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 21431, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 21450, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 21469, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 21487, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 21505, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 21523, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 21541, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 21559, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 21577, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 21595, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 21615, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 21642, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 21667, 0x00002100 }, /* GL_MODULATE */ - { 21679, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 21699, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 21726, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 21751, 0x00000103 }, /* GL_MULT */ - { 21759, 0x0000809D }, /* GL_MULTISAMPLE */ - { 21774, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 21794, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 21813, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 21832, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 21856, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 21879, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 21909, 0x00002A25 }, /* GL_N3F_V3F */ - { 21920, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 21940, 0x0000150E }, /* GL_NAND */ - { 21948, 0x00002600 }, /* GL_NEAREST */ - { 21959, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 21990, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 22022, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 22047, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 22073, 0x00000200 }, /* GL_NEVER */ - { 22082, 0x00001102 }, /* GL_NICEST */ - { 22092, 0x00000000 }, /* GL_NONE */ - { 22100, 0x00001505 }, /* GL_NOOP */ - { 22108, 0x00001508 }, /* GL_NOR */ - { 22115, 0x00000BA1 }, /* GL_NORMALIZE */ - { 22128, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 22144, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 22175, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 22210, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 22234, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 22257, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 22278, 0x00008511 }, /* GL_NORMAL_MAP */ - { 22292, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 22310, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 22327, 0x00000205 }, /* GL_NOTEQUAL */ - { 22339, 0x00000000 }, /* GL_NO_ERROR */ - { 22351, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 22385, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 22423, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 22455, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 22497, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 22527, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 22567, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 22598, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 22627, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 22655, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 22685, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 22702, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 22728, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 22744, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 22779, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 22801, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 22816, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 22835, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 22865, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 22886, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 22914, 0x00000001 }, /* GL_ONE */ - { 22921, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 22949, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 22981, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 23009, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 23041, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 23064, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 23087, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 23110, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 23133, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 23151, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 23173, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 23195, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 23211, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 23231, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 23251, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 23269, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 23291, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 23313, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 23329, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 23349, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 23369, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 23387, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 23409, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 23431, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 23447, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 23467, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 23487, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 23508, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 23527, 0x00001507 }, /* GL_OR */ - { 23533, 0x00000A01 }, /* GL_ORDER */ - { 23542, 0x0000150D }, /* GL_OR_INVERTED */ - { 23557, 0x0000150B }, /* GL_OR_REVERSE */ - { 23571, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 23588, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 23606, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 23627, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 23647, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 23665, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 23684, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 23704, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 23724, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 23742, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 23761, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 23786, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 23810, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 23831, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 23853, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 23875, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 23900, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 23924, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 23945, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 23967, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 23989, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 24011, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 24042, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 24062, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 24087, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 24107, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 24132, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 24152, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 24177, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 24197, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 24222, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 24242, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 24267, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 24287, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 24312, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 24332, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 24357, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 24377, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 24402, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 24422, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 24447, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 24467, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 24492, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 24510, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 24531, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 24560, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 24593, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 24618, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 24641, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 24672, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 24707, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 24734, 0x00001B00 }, /* GL_POINT */ - { 24743, 0x00000000 }, /* GL_POINTS */ - { 24753, 0x00000002 }, /* GL_POINT_BIT */ - { 24766, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 24796, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 24830, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 24864, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 24899, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 24928, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 24961, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 24994, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 25028, 0x00000B11 }, /* GL_POINT_SIZE */ - { 25042, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 25068, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 25086, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 25108, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 25130, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 25153, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 25171, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 25193, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 25215, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 25238, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 25258, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 25274, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 25295, 0x00008861 }, /* GL_POINT_SPRITE */ - { 25311, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 25331, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 25360, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 25379, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 25405, 0x00000701 }, /* GL_POINT_TOKEN */ - { 25420, 0x00000009 }, /* GL_POLYGON */ - { 25431, 0x00000008 }, /* GL_POLYGON_BIT */ - { 25446, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 25462, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 25485, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 25510, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 25533, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 25556, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 25580, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 25604, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 25622, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 25645, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 25664, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 25687, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 25704, 0x00001203 }, /* GL_POSITION */ - { 25716, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 25748, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 25784, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 25817, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 25854, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 25885, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 25920, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 25952, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 25988, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 26021, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 26053, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 26089, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 26122, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 26159, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 26189, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 26223, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 26254, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 26289, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 26320, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 26355, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 26387, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 26423, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 26453, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 26487, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 26518, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 26553, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 26585, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 26616, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 26651, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 26683, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 26719, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 26748, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 26781, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 26811, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 26845, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 26884, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 26917, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 26957, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 26991, 0x00008578 }, /* GL_PREVIOUS */ - { 27003, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 27019, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 27035, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 27052, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 27073, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 27094, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 27122, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 27155, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 27187, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 27210, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 27233, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 27263, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 27292, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 27320, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 27342, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 27370, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 27398, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 27420, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 27441, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 27481, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 27520, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 27550, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 27585, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 27618, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 27652, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 27691, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 27730, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 27752, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 27778, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 27802, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 27825, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 27847, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 27868, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 27889, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 27916, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 27948, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 27980, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 28015, 0x00001701 }, /* GL_PROJECTION */ - { 28029, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 28050, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 28076, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 28096, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 28120, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 28141, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 28160, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 28183, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 28222, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 28260, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 28280, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 28310, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 28334, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 28354, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 28384, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 28408, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 28428, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 28461, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 28487, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 28517, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 28548, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 28578, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 28597, 0x00002003 }, /* GL_Q */ - { 28602, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 28627, 0x00000007 }, /* GL_QUADS */ - { 28636, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 28680, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 28728, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 28745, 0x00000008 }, /* GL_QUAD_STRIP */ - { 28759, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 28789, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 28816, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 28838, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 28864, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 28884, 0x00008866 }, /* GL_QUERY_RESULT */ - { 28900, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 28920, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 28946, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 28976, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 28993, 0x00002002 }, /* GL_R */ - { 28998, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 29010, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 29036, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 29069, 0x00000C02 }, /* GL_READ_BUFFER */ - { 29084, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 29104, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 29132, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 29164, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 29188, 0x000088B8 }, /* GL_READ_ONLY */ - { 29201, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 29218, 0x000088BA }, /* GL_READ_WRITE */ - { 29232, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 29250, 0x00001903 }, /* GL_RED */ - { 29257, 0x00008016 }, /* GL_REDUCE */ - { 29267, 0x00008016 }, /* GL_REDUCE_EXT */ - { 29281, 0x00000D15 }, /* GL_RED_BIAS */ - { 29293, 0x00000D52 }, /* GL_RED_BITS */ - { 29305, 0x00000D14 }, /* GL_RED_SCALE */ - { 29318, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 29336, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 29358, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 29379, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 29397, 0x00001C00 }, /* GL_RENDER */ - { 29407, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 29423, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 29450, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 29474, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 29502, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 29528, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 29555, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 29575, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 29602, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 29625, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 29652, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 29684, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 29720, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 29745, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 29769, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 29797, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 29826, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 29848, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 29874, 0x00001F01 }, /* GL_RENDERER */ - { 29886, 0x00000C40 }, /* GL_RENDER_MODE */ - { 29901, 0x00002901 }, /* GL_REPEAT */ - { 29911, 0x00001E01 }, /* GL_REPLACE */ - { 29922, 0x00008062 }, /* GL_REPLACE_EXT */ - { 29937, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 29960, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 29978, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 30000, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 30018, 0x00000102 }, /* GL_RETURN */ - { 30028, 0x00001907 }, /* GL_RGB */ - { 30035, 0x00008052 }, /* GL_RGB10 */ - { 30044, 0x00008059 }, /* GL_RGB10_A2 */ - { 30056, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 30072, 0x00008052 }, /* GL_RGB10_EXT */ - { 30085, 0x00008053 }, /* GL_RGB12 */ - { 30094, 0x00008053 }, /* GL_RGB12_EXT */ - { 30107, 0x00008054 }, /* GL_RGB16 */ - { 30116, 0x00008054 }, /* GL_RGB16_EXT */ - { 30129, 0x0000804E }, /* GL_RGB2_EXT */ - { 30141, 0x0000804F }, /* GL_RGB4 */ - { 30149, 0x0000804F }, /* GL_RGB4_EXT */ - { 30161, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 30174, 0x00008050 }, /* GL_RGB5 */ - { 30182, 0x00008057 }, /* GL_RGB5_A1 */ - { 30193, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 30208, 0x00008050 }, /* GL_RGB5_EXT */ - { 30220, 0x00008051 }, /* GL_RGB8 */ - { 30228, 0x00008051 }, /* GL_RGB8_EXT */ - { 30240, 0x00001908 }, /* GL_RGBA */ - { 30248, 0x0000805A }, /* GL_RGBA12 */ - { 30258, 0x0000805A }, /* GL_RGBA12_EXT */ - { 30272, 0x0000805B }, /* GL_RGBA16 */ - { 30282, 0x0000805B }, /* GL_RGBA16_EXT */ - { 30296, 0x00008055 }, /* GL_RGBA2 */ - { 30305, 0x00008055 }, /* GL_RGBA2_EXT */ - { 30318, 0x00008056 }, /* GL_RGBA4 */ - { 30327, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 30346, 0x00008056 }, /* GL_RGBA4_EXT */ - { 30359, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 30373, 0x00008058 }, /* GL_RGBA8 */ - { 30382, 0x00008058 }, /* GL_RGBA8_EXT */ - { 30395, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 30410, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 30428, 0x00000C31 }, /* GL_RGBA_MODE */ - { 30441, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 30454, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 30468, 0x000083A0 }, /* GL_RGB_S3TC */ - { 30480, 0x00008573 }, /* GL_RGB_SCALE */ - { 30493, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 30510, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 30527, 0x00000407 }, /* GL_RIGHT */ - { 30536, 0x00002000 }, /* GL_S */ - { 30541, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 30555, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 30576, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 30590, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 30611, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 30625, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 30641, 0x000080A9 }, /* GL_SAMPLES */ - { 30652, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 30668, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 30683, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 30701, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 30723, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 30751, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 30783, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 30806, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 30833, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 30851, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 30874, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 30896, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 30915, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 30938, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 30964, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 30994, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 31019, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 31048, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 31063, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 31078, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 31094, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 31119, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 31159, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 31203, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 31236, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 31266, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 31298, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 31328, 0x00001C02 }, /* GL_SELECT */ - { 31338, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 31366, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 31391, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 31407, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 31431, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 31458, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 31489, 0x0000150F }, /* GL_SET */ - { 31496, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 31517, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 31541, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 31556, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 31571, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 31599, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 31622, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 31652, 0x00001601 }, /* GL_SHININESS */ - { 31665, 0x00001402 }, /* GL_SHORT */ - { 31674, 0x00009119 }, /* GL_SIGNALED */ - { 31686, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 31707, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 31723, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 31743, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 31762, 0x00008C46 }, /* GL_SLUMINANCE */ - { 31776, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 31791, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 31813, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 31833, 0x00001D01 }, /* GL_SMOOTH */ - { 31843, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 31876, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 31903, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 31936, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 31963, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 31980, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 32001, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 32022, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 32037, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 32056, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 32075, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 32092, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 32113, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 32134, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 32149, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 32168, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 32187, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 32204, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 32225, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 32246, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 32261, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 32280, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 32299, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 32319, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 32337, 0x00001202 }, /* GL_SPECULAR */ - { 32349, 0x00002402 }, /* GL_SPHERE_MAP */ - { 32363, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 32378, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 32396, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 32413, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 32427, 0x00008580 }, /* GL_SRC0_RGB */ - { 32439, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 32453, 0x00008581 }, /* GL_SRC1_RGB */ - { 32465, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 32479, 0x00008582 }, /* GL_SRC2_RGB */ - { 32491, 0x00000302 }, /* GL_SRC_ALPHA */ - { 32504, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 32526, 0x00000300 }, /* GL_SRC_COLOR */ - { 32539, 0x00008C40 }, /* GL_SRGB */ - { 32547, 0x00008C41 }, /* GL_SRGB8 */ - { 32556, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 32572, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 32586, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 32604, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 32623, 0x000088E6 }, /* GL_STATIC_COPY */ - { 32638, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 32657, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 32672, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 32691, 0x000088E5 }, /* GL_STATIC_READ */ - { 32706, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 32725, 0x00001802 }, /* GL_STENCIL */ - { 32736, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 32758, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 32784, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 32805, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 32830, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 32851, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 32876, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 32908, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 32944, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 32976, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 33012, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 33032, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 33059, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 33085, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 33101, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 33123, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 33146, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 33162, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 33178, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 33195, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 33213, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 33232, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 33255, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 33277, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 33295, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 33317, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 33335, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 33357, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 33378, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 33405, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 33432, 0x00000B97 }, /* GL_STENCIL_REF */ - { 33447, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 33463, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 33492, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 33514, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 33535, 0x00000C33 }, /* GL_STEREO */ - { 33545, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 33569, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 33594, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 33618, 0x000088E2 }, /* GL_STREAM_COPY */ - { 33633, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 33652, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 33667, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 33686, 0x000088E1 }, /* GL_STREAM_READ */ - { 33701, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 33720, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 33737, 0x000084E7 }, /* GL_SUBTRACT */ - { 33749, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 33765, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 33783, 0x00009116 }, /* GL_SYNC_FENCE */ - { 33797, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 33811, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 33838, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 33868, 0x00009114 }, /* GL_SYNC_STATUS */ - { 33883, 0x00002001 }, /* GL_T */ - { 33888, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 33903, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 33922, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 33938, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 33953, 0x00002A27 }, /* GL_T2F_V3F */ - { 33964, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 33983, 0x00002A28 }, /* GL_T4F_V4F */ - { 33994, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 34017, 0x00001702 }, /* GL_TEXTURE */ - { 34028, 0x000084C0 }, /* GL_TEXTURE0 */ - { 34040, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 34056, 0x000084C1 }, /* GL_TEXTURE1 */ - { 34068, 0x000084CA }, /* GL_TEXTURE10 */ - { 34081, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 34098, 0x000084CB }, /* GL_TEXTURE11 */ - { 34111, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 34128, 0x000084CC }, /* GL_TEXTURE12 */ - { 34141, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 34158, 0x000084CD }, /* GL_TEXTURE13 */ - { 34171, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 34188, 0x000084CE }, /* GL_TEXTURE14 */ - { 34201, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 34218, 0x000084CF }, /* GL_TEXTURE15 */ - { 34231, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 34248, 0x000084D0 }, /* GL_TEXTURE16 */ - { 34261, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 34278, 0x000084D1 }, /* GL_TEXTURE17 */ - { 34291, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 34308, 0x000084D2 }, /* GL_TEXTURE18 */ - { 34321, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 34338, 0x000084D3 }, /* GL_TEXTURE19 */ - { 34351, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 34368, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 34384, 0x000084C2 }, /* GL_TEXTURE2 */ - { 34396, 0x000084D4 }, /* GL_TEXTURE20 */ - { 34409, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 34426, 0x000084D5 }, /* GL_TEXTURE21 */ - { 34439, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 34456, 0x000084D6 }, /* GL_TEXTURE22 */ - { 34469, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 34486, 0x000084D7 }, /* GL_TEXTURE23 */ - { 34499, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 34516, 0x000084D8 }, /* GL_TEXTURE24 */ - { 34529, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 34546, 0x000084D9 }, /* GL_TEXTURE25 */ - { 34559, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 34576, 0x000084DA }, /* GL_TEXTURE26 */ - { 34589, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 34606, 0x000084DB }, /* GL_TEXTURE27 */ - { 34619, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 34636, 0x000084DC }, /* GL_TEXTURE28 */ - { 34649, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 34666, 0x000084DD }, /* GL_TEXTURE29 */ - { 34679, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 34696, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 34712, 0x000084C3 }, /* GL_TEXTURE3 */ - { 34724, 0x000084DE }, /* GL_TEXTURE30 */ - { 34737, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 34754, 0x000084DF }, /* GL_TEXTURE31 */ - { 34767, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 34784, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 34800, 0x000084C4 }, /* GL_TEXTURE4 */ - { 34812, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 34828, 0x000084C5 }, /* GL_TEXTURE5 */ - { 34840, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 34856, 0x000084C6 }, /* GL_TEXTURE6 */ - { 34868, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 34884, 0x000084C7 }, /* GL_TEXTURE7 */ - { 34896, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 34912, 0x000084C8 }, /* GL_TEXTURE8 */ - { 34924, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 34940, 0x000084C9 }, /* GL_TEXTURE9 */ - { 34952, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 34968, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 34982, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 35006, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 35020, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 35044, 0x0000806F }, /* GL_TEXTURE_3D */ - { 35058, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 35080, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 35106, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 35128, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 35150, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 35182, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 35204, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 35236, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 35258, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 35286, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 35318, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 35351, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 35383, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 35398, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 35419, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 35444, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 35462, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 35486, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 35517, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 35547, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 35577, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 35612, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 35643, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 35681, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 35708, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 35740, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 35774, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 35798, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 35826, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 35850, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 35878, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 35911, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 35935, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 35957, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 35979, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 36005, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 36039, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 36072, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 36109, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 36137, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 36169, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 36192, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 36230, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 36272, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 36303, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 36331, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 36361, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 36389, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 36409, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 36433, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 36464, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 36499, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 36530, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 36565, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 36596, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 36631, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 36662, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 36697, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 36728, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 36763, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 36794, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 36829, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 36858, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 36875, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 36897, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 36923, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 36938, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 36959, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 36979, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 37005, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 37025, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 37042, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 37059, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 37076, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 37093, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 37118, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 37140, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 37166, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 37184, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 37210, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 37236, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 37266, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 37293, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 37318, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 37338, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 37362, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 37389, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 37416, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 37443, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 37469, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 37499, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 37521, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 37539, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 37569, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 37597, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 37625, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 37653, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 37674, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 37693, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 37715, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 37734, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 37754, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 37784, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 37815, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 37840, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 37864, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 37884, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 37908, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 37928, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 37951, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 37975, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 38003, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 38033, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 38058, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 38092, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 38109, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 38127, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 38145, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 38163, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 38182, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 38202, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 38221, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 38250, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 38267, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 38308, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 38341, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 38379, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 38417, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 38456, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 38501, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 38536, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 38581, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 38607, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 38637, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 38669, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 38699, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 38733, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 38749, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 38780, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 38815, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 38843, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 38875, 0x00000004 }, /* GL_TRIANGLES */ - { 38888, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 38904, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 38925, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 38943, 0x00000001 }, /* GL_TRUE */ - { 38951, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 38970, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 38990, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 39013, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 39033, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 39054, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 39076, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 39098, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 39118, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 39139, 0x00009118 }, /* GL_UNSIGNALED */ - { 39153, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 39170, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 39197, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 39220, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 39236, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 39263, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 39284, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 39309, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 39333, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 39364, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 39388, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 39416, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 39439, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 39457, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 39487, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 39513, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 39543, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 39569, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 39593, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 39621, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 39649, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 39676, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 39708, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 39739, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 39753, 0x00002A20 }, /* GL_V2F */ - { 39760, 0x00002A21 }, /* GL_V3F */ - { 39767, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 39786, 0x00001F00 }, /* GL_VENDOR */ - { 39796, 0x00001F02 }, /* GL_VERSION */ - { 39807, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 39823, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 39847, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 39877, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 39908, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 39943, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 39967, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 39988, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 40011, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 40032, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 40059, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 40087, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 40115, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 40143, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 40171, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 40199, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 40227, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 40254, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 40281, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 40308, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 40335, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 40362, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 40389, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 40416, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 40443, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 40470, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 40508, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 40550, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 40581, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 40616, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 40650, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 40688, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 40719, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 40754, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 40782, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 40814, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 40844, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 40878, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 40906, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 40938, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 40958, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 40980, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 41009, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 41030, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 41059, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 41092, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 41124, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 41151, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 41182, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 41212, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 41229, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 41250, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 41277, 0x00000BA2 }, /* GL_VIEWPORT */ - { 41289, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 41305, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 41323, 0x0000911D }, /* GL_WAIT_FAILED */ - { 41338, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 41358, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 41389, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 41424, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 41452, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 41477, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 41504, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 41529, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 41553, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 41572, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 41586, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 41604, 0x00001506 }, /* GL_XOR */ - { 41611, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 41630, 0x00008757 }, /* GL_YCBCR_MESA */ - { 41644, 0x00000000 }, /* GL_ZERO */ - { 41652, 0x00000D16 }, /* GL_ZOOM_X */ - { 41662, 0x00000D17 }, /* GL_ZOOM_Y */ + { 1204, 0x000080E1 }, /* GL_BGRA_EXT */ + { 1216, 0x00001A00 }, /* GL_BITMAP */ + { 1226, 0x00000704 }, /* GL_BITMAP_TOKEN */ + { 1242, 0x00000BE2 }, /* GL_BLEND */ + { 1251, 0x00008005 }, /* GL_BLEND_COLOR */ + { 1266, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ + { 1285, 0x00000BE0 }, /* GL_BLEND_DST */ + { 1298, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ + { 1317, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */ + { 1340, 0x000080C8 }, /* GL_BLEND_DST_RGB */ + { 1357, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */ + { 1378, 0x00008009 }, /* GL_BLEND_EQUATION */ + { 1396, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ + { 1420, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ + { 1448, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */ + { 1476, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ + { 1498, 0x00008009 }, /* GL_BLEND_EQUATION_OES */ + { 1520, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ + { 1542, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ + { 1568, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */ + { 1594, 0x00000BE1 }, /* GL_BLEND_SRC */ + { 1607, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ + { 1626, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */ + { 1649, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ + { 1666, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */ + { 1687, 0x00001905 }, /* GL_BLUE */ + { 1695, 0x00000D1B }, /* GL_BLUE_BIAS */ + { 1708, 0x00000D54 }, /* GL_BLUE_BITS */ + { 1721, 0x00000D1A }, /* GL_BLUE_SCALE */ + { 1735, 0x00008B56 }, /* GL_BOOL */ + { 1743, 0x00008B56 }, /* GL_BOOL_ARB */ + { 1755, 0x00008B57 }, /* GL_BOOL_VEC2 */ + { 1768, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ + { 1785, 0x00008B58 }, /* GL_BOOL_VEC3 */ + { 1798, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ + { 1815, 0x00008B59 }, /* GL_BOOL_VEC4 */ + { 1828, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ + { 1845, 0x000088BB }, /* GL_BUFFER_ACCESS */ + { 1862, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ + { 1883, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */ + { 1904, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + { 1935, 0x000088BC }, /* GL_BUFFER_MAPPED */ + { 1952, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ + { 1973, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */ + { 1994, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ + { 2016, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ + { 2042, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */ + { 2068, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ + { 2091, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + { 2125, 0x00008764 }, /* GL_BUFFER_SIZE */ + { 2140, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ + { 2159, 0x00008765 }, /* GL_BUFFER_USAGE */ + { 2175, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ + { 2195, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ + { 2214, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + { 2240, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ + { 2263, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + { 2291, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ + { 2310, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ + { 2332, 0x00001400 }, /* GL_BYTE */ + { 2340, 0x00002A24 }, /* GL_C3F_V3F */ + { 2351, 0x00002A26 }, /* GL_C4F_N3F_V3F */ + { 2366, 0x00002A22 }, /* GL_C4UB_V2F */ + { 2378, 0x00002A23 }, /* GL_C4UB_V3F */ + { 2390, 0x00000901 }, /* GL_CCW */ + { 2397, 0x00002900 }, /* GL_CLAMP */ + { 2406, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ + { 2425, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ + { 2448, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ + { 2472, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ + { 2489, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ + { 2511, 0x00001500 }, /* GL_CLEAR */ + { 2520, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ + { 2545, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ + { 2574, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ + { 2600, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + { 2629, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ + { 2655, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ + { 2682, 0x00003000 }, /* GL_CLIP_PLANE0 */ + { 2697, 0x00003001 }, /* GL_CLIP_PLANE1 */ + { 2712, 0x00003002 }, /* GL_CLIP_PLANE2 */ + { 2727, 0x00003003 }, /* GL_CLIP_PLANE3 */ + { 2742, 0x00003004 }, /* GL_CLIP_PLANE4 */ + { 2757, 0x00003005 }, /* GL_CLIP_PLANE5 */ + { 2772, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + { 2805, 0x00000A00 }, /* GL_COEFF */ + { 2814, 0x00001800 }, /* GL_COLOR */ + { 2823, 0x00008076 }, /* GL_COLOR_ARRAY */ + { 2838, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + { 2868, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 2902, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ + { 2925, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ + { 2945, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ + { 2967, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ + { 2987, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ + { 3008, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ + { 3033, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ + { 3058, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ + { 3079, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ + { 3101, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ + { 3127, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ + { 3149, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ + { 3175, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ + { 3197, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ + { 3223, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ + { 3245, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ + { 3271, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ + { 3293, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ + { 3319, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ + { 3341, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ + { 3367, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ + { 3392, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ + { 3413, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ + { 3438, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ + { 3459, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ + { 3484, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ + { 3505, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ + { 3530, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ + { 3551, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ + { 3576, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ + { 3597, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ + { 3622, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ + { 3643, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ + { 3668, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ + { 3689, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ + { 3714, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ + { 3735, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ + { 3760, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ + { 3780, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ + { 3801, 0x00001900 }, /* GL_COLOR_INDEX */ + { 3816, 0x00001603 }, /* GL_COLOR_INDEXES */ + { 3833, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ + { 3851, 0x00000B57 }, /* GL_COLOR_MATERIAL */ + { 3869, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ + { 3892, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ + { 3920, 0x000080B1 }, /* GL_COLOR_MATRIX */ + { 3936, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ + { 3956, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ + { 3984, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 4016, 0x00008458 }, /* GL_COLOR_SUM */ + { 4029, 0x00008458 }, /* GL_COLOR_SUM_ARB */ + { 4046, 0x000080D0 }, /* GL_COLOR_TABLE */ + { 4061, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ + { 4087, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ + { 4117, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ + { 4147, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ + { 4167, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ + { 4191, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ + { 4216, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ + { 4245, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ + { 4274, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ + { 4296, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ + { 4322, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ + { 4348, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ + { 4374, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ + { 4404, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ + { 4434, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + { 4464, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ + { 4498, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ + { 4532, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + { 4562, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ + { 4596, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ + { 4630, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ + { 4654, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ + { 4682, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ + { 4710, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ + { 4731, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ + { 4756, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ + { 4777, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ + { 4802, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ + { 4827, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ + { 4846, 0x00008570 }, /* GL_COMBINE */ + { 4857, 0x00008503 }, /* GL_COMBINE4 */ + { 4869, 0x00008572 }, /* GL_COMBINE_ALPHA */ + { 4886, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ + { 4907, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ + { 4928, 0x00008570 }, /* GL_COMBINE_ARB */ + { 4943, 0x00008570 }, /* GL_COMBINE_EXT */ + { 4958, 0x00008571 }, /* GL_COMBINE_RGB */ + { 4973, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ + { 4992, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ + { 5011, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 5047, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 5071, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 5099, 0x00001300 }, /* GL_COMPILE */ + { 5110, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 5133, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 5151, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 5171, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 5195, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 5219, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 5247, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 5271, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 5301, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 5335, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 5363, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 5381, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 5400, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 5423, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 5452, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 5485, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 5518, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 5551, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 5573, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 5601, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 5633, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ + { 5658, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 5689, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ + { 5708, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ + { 5733, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 5763, 0x0000911C }, /* GL_CONDITION_SATISFIED */ + { 5786, 0x00008576 }, /* GL_CONSTANT */ + { 5798, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 5816, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 5838, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 5854, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 5878, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 5900, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 5918, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 5940, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 5956, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 5974, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 5992, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6020, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6051, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6078, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6109, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6136, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6167, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6195, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 6227, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 6249, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 6275, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 6297, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 6323, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 6344, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 6369, 0x00008862 }, /* GL_COORD_REPLACE */ + { 6386, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 6407, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 6427, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 6448, 0x00001503 }, /* GL_COPY */ + { 6456, 0x0000150C }, /* GL_COPY_INVERTED */ + { 6473, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 6493, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 6513, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 6534, 0x00000B44 }, /* GL_CULL_FACE */ + { 6547, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 6565, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 6584, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 6616, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 6651, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 6672, 0x00000001 }, /* GL_CURRENT_BIT */ + { 6687, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 6704, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 6725, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 6751, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 6768, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 6790, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 6818, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 6839, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 6873, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 6906, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 6924, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 6954, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 6984, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7003, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7020, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7041, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7065, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7092, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7116, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7143, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7176, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 7210, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 7243, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 7270, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 7296, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 7321, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 7350, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 7372, 0x00000900 }, /* GL_CW */ + { 7378, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 7399, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 7420, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 7440, 0x00002101 }, /* GL_DECAL */ + { 7449, 0x00001E03 }, /* GL_DECR */ + { 7457, 0x00008508 }, /* GL_DECR_WRAP */ + { 7470, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 7487, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 7504, 0x00001801 }, /* GL_DEPTH */ + { 7513, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 7533, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 7557, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 7581, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 7601, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 7625, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 7649, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 7663, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 7677, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 7697, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 7722, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 7742, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 7757, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 7775, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 7796, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 7815, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 7836, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 7861, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 7886, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 7912, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 7933, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 7958, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 7983, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8009, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8030, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8055, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8080, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8106, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8120, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8135, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8150, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8167, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 8195, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 8216, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 8236, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 8257, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 8285, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 8313, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 8327, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 8349, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 8375, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 8394, 0x00001201 }, /* GL_DIFFUSE */ + { 8405, 0x00000BD0 }, /* GL_DITHER */ + { 8415, 0x00000A02 }, /* GL_DOMAIN */ + { 8425, 0x00001100 }, /* GL_DONT_CARE */ + { 8438, 0x000086AE }, /* GL_DOT3_RGB */ + { 8450, 0x000086AF }, /* GL_DOT3_RGBA */ + { 8463, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 8480, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 8497, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 8513, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 8529, 0x0000140A }, /* GL_DOUBLE */ + { 8539, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 8555, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 8570, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 8586, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 8606, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 8626, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 8642, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 8659, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 8680, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 8701, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 8718, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 8739, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 8760, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 8777, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 8798, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 8819, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 8836, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 8857, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 8878, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 8895, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 8916, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 8937, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 8954, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 8975, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 8996, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9016, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9036, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9052, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9072, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9092, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9108, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9128, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9148, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9164, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9184, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 9204, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 9220, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 9240, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 9260, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 9276, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 9296, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 9316, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 9332, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 9352, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 9372, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 9388, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 9408, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 9428, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 9444, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 9464, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 9484, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 9504, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 9532, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 9564, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 9588, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 9608, 0x00000304 }, /* GL_DST_ALPHA */ + { 9621, 0x00000306 }, /* GL_DST_COLOR */ + { 9634, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 9648, 0x00008779 }, /* GL_DUDV_ATI */ + { 9660, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 9676, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 9696, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 9712, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 9732, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 9748, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 9768, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 9781, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 9800, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 9834, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 9872, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 9899, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 9925, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 9949, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 9981, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10017, 0x00001600 }, /* GL_EMISSION */ + { 10029, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10043, 0x00000202 }, /* GL_EQUAL */ + { 10052, 0x00001509 }, /* GL_EQUIV */ + { 10061, 0x00010000 }, /* GL_EVAL_BIT */ + { 10073, 0x00000800 }, /* GL_EXP */ + { 10080, 0x00000801 }, /* GL_EXP2 */ + { 10088, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10102, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10116, 0x00002502 }, /* GL_EYE_PLANE */ + { 10129, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10154, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10171, 0x00000000 }, /* GL_FALSE */ + { 10180, 0x00001101 }, /* GL_FASTEST */ + { 10191, 0x00001C01 }, /* GL_FEEDBACK */ + { 10203, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 10230, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 10254, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 10278, 0x00001B02 }, /* GL_FILL */ + { 10286, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 10313, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 10344, 0x0000140C }, /* GL_FIXED */ + { 10353, 0x0000140C }, /* GL_FIXED_OES */ + { 10366, 0x00001D00 }, /* GL_FLAT */ + { 10374, 0x00001406 }, /* GL_FLOAT */ + { 10383, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 10397, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 10415, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 10431, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 10447, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 10461, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 10479, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 10495, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 10511, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 10525, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 10543, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 10559, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 10575, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 10589, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 10607, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 10621, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 10639, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 10653, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 10671, 0x00000B60 }, /* GL_FOG */ + { 10678, 0x00000080 }, /* GL_FOG_BIT */ + { 10689, 0x00000B66 }, /* GL_FOG_COLOR */ + { 10702, 0x00008451 }, /* GL_FOG_COORD */ + { 10715, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 10733, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 10757, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 10796, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 10839, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 10871, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 10902, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 10931, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 10956, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 10975, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11009, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11036, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11062, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11086, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11103, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11118, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11142, 0x00000B64 }, /* GL_FOG_END */ + { 11153, 0x00000C54 }, /* GL_FOG_HINT */ + { 11165, 0x00000B61 }, /* GL_FOG_INDEX */ + { 11178, 0x00000B65 }, /* GL_FOG_MODE */ + { 11190, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 11209, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 11234, 0x00000B63 }, /* GL_FOG_START */ + { 11247, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 11265, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 11289, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 11308, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 11331, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 11366, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 11405, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 11420, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 11457, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 11493, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 11534, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 11575, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 11612, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 11649, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 11687, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 11729, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 11771, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 11809, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 11851, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 11893, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 11928, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 11967, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12016, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12065, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 12113, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 12165, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 12217, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 12257, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 12301, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 12341, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 12385, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 12429, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 12452, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 12479, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 12506, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 12530, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 12558, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 12586, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 12609, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 12628, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 12665, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 12706, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 12747, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 12784, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 12825, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 12866, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 12904, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 12946, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 12988, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13039, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13077, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 13115, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 13160, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 13209, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 13258, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 13296, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 13338, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 13376, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 13418, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 13460, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 13479, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 13511, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 13536, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 13563, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 13594, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 13625, 0x00000404 }, /* GL_FRONT */ + { 13634, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 13652, 0x00000B46 }, /* GL_FRONT_FACE */ + { 13666, 0x00000400 }, /* GL_FRONT_LEFT */ + { 13680, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 13695, 0x00008006 }, /* GL_FUNC_ADD */ + { 13707, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 13723, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 13739, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 13764, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 13793, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 13822, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 13839, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 13860, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 13881, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 13900, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 13924, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 13953, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 13977, 0x00000206 }, /* GL_GEQUAL */ + { 13987, 0x00000204 }, /* GL_GREATER */ + { 13998, 0x00001904 }, /* GL_GREEN */ + { 14007, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 14021, 0x00000D53 }, /* GL_GREEN_BITS */ + { 14035, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 14050, 0x0000140B }, /* GL_HALF_FLOAT */ + { 14064, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 14082, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 14096, 0x00008DF5 }, /* GL_HIGH_INT */ + { 14108, 0x00008000 }, /* GL_HINT_BIT */ + { 14120, 0x00008024 }, /* GL_HISTOGRAM */ + { 14133, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 14157, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 14185, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 14208, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 14235, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 14252, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 14272, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 14296, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 14320, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 14348, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 14376, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 14408, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 14430, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 14456, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 14474, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 14496, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 14515, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 14538, 0x0000862A }, /* GL_IDENTITY_NV */ + { 14553, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 14573, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 14609, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 14649, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 14683, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 14721, 0x00001E02 }, /* GL_INCR */ + { 14729, 0x00008507 }, /* GL_INCR_WRAP */ + { 14742, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 14759, 0x00008222 }, /* GL_INDEX */ + { 14768, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 14783, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 14813, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 14847, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 14870, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 14892, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 14912, 0x00000D51 }, /* GL_INDEX_BITS */ + { 14926, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 14947, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 14965, 0x00000C30 }, /* GL_INDEX_MODE */ + { 14979, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 14995, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 15010, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 15029, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 15048, 0x00001404 }, /* GL_INT */ + { 15055, 0x00008049 }, /* GL_INTENSITY */ + { 15068, 0x0000804C }, /* GL_INTENSITY12 */ + { 15083, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 15102, 0x0000804D }, /* GL_INTENSITY16 */ + { 15117, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 15136, 0x0000804A }, /* GL_INTENSITY4 */ + { 15150, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 15168, 0x0000804B }, /* GL_INTENSITY8 */ + { 15182, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 15200, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 15217, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 15244, 0x00008575 }, /* GL_INTERPOLATE */ + { 15259, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 15278, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 15297, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 15319, 0x00008B53 }, /* GL_INT_VEC2 */ + { 15331, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 15347, 0x00008B54 }, /* GL_INT_VEC3 */ + { 15359, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 15375, 0x00008B55 }, /* GL_INT_VEC4 */ + { 15387, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 15403, 0x00000500 }, /* GL_INVALID_ENUM */ + { 15419, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 15452, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 15489, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 15526, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 15547, 0x00000501 }, /* GL_INVALID_VALUE */ + { 15564, 0x0000862B }, /* GL_INVERSE_NV */ + { 15578, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 15602, 0x0000150A }, /* GL_INVERT */ + { 15612, 0x00001E00 }, /* GL_KEEP */ + { 15620, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 15646, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 15676, 0x00000406 }, /* GL_LEFT */ + { 15684, 0x00000203 }, /* GL_LEQUAL */ + { 15694, 0x00000201 }, /* GL_LESS */ + { 15702, 0x00004000 }, /* GL_LIGHT0 */ + { 15712, 0x00004001 }, /* GL_LIGHT1 */ + { 15722, 0x00004002 }, /* GL_LIGHT2 */ + { 15732, 0x00004003 }, /* GL_LIGHT3 */ + { 15742, 0x00004004 }, /* GL_LIGHT4 */ + { 15752, 0x00004005 }, /* GL_LIGHT5 */ + { 15762, 0x00004006 }, /* GL_LIGHT6 */ + { 15772, 0x00004007 }, /* GL_LIGHT7 */ + { 15782, 0x00000B50 }, /* GL_LIGHTING */ + { 15794, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 15810, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 15833, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 15862, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 15895, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 15923, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 15947, 0x00001B01 }, /* GL_LINE */ + { 15955, 0x00002601 }, /* GL_LINEAR */ + { 15965, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 15987, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 16017, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 16048, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 16072, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 16097, 0x00000001 }, /* GL_LINES */ + { 16106, 0x00000004 }, /* GL_LINE_BIT */ + { 16118, 0x00000002 }, /* GL_LINE_LOOP */ + { 16131, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 16151, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 16166, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 16186, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 16202, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 16226, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 16249, 0x00000003 }, /* GL_LINE_STRIP */ + { 16263, 0x00000702 }, /* GL_LINE_TOKEN */ + { 16277, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 16291, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 16317, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 16337, 0x00008B82 }, /* GL_LINK_STATUS */ + { 16352, 0x00000B32 }, /* GL_LIST_BASE */ + { 16365, 0x00020000 }, /* GL_LIST_BIT */ + { 16377, 0x00000B33 }, /* GL_LIST_INDEX */ + { 16391, 0x00000B30 }, /* GL_LIST_MODE */ + { 16404, 0x00000101 }, /* GL_LOAD */ + { 16412, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 16424, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 16441, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 16455, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 16468, 0x00008DF3 }, /* GL_LOW_INT */ + { 16479, 0x00001909 }, /* GL_LUMINANCE */ + { 16492, 0x00008041 }, /* GL_LUMINANCE12 */ + { 16507, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 16530, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 16557, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 16579, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 16605, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 16624, 0x00008042 }, /* GL_LUMINANCE16 */ + { 16639, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 16662, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 16689, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 16708, 0x0000803F }, /* GL_LUMINANCE4 */ + { 16722, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 16743, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 16768, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 16786, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 16807, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 16832, 0x00008040 }, /* GL_LUMINANCE8 */ + { 16846, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 16867, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 16892, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 16910, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 16929, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 16945, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 16965, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 16987, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 17001, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 17016, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 17040, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 17064, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 17088, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 17112, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 17129, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 17146, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 17174, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 17203, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 17232, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 17261, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 17290, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 17319, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 17348, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 17376, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 17404, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 17432, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 17460, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 17488, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 17516, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 17544, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 17572, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 17600, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 17616, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 17636, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 17658, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 17672, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 17687, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 17711, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 17735, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 17759, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 17783, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 17800, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 17817, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 17845, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 17874, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 17903, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 17932, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 17961, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 17990, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 18019, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 18047, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 18075, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 18103, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 18131, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 18159, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 18187, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 18215, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 18243, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 18271, 0x00000D10 }, /* GL_MAP_COLOR */ + { 18284, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 18310, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 18339, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 18367, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 18383, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 18398, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 18424, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 18441, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 18456, 0x00008630 }, /* GL_MATRIX0_NV */ + { 18470, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 18486, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 18502, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 18518, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 18534, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 18550, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 18566, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 18582, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 18598, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 18614, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 18630, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 18645, 0x00008631 }, /* GL_MATRIX1_NV */ + { 18659, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 18675, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 18691, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 18707, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 18723, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 18739, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 18755, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 18771, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 18787, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 18803, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 18819, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 18834, 0x00008632 }, /* GL_MATRIX2_NV */ + { 18848, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 18864, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 18880, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 18895, 0x00008633 }, /* GL_MATRIX3_NV */ + { 18909, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 18924, 0x00008634 }, /* GL_MATRIX4_NV */ + { 18938, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 18953, 0x00008635 }, /* GL_MATRIX5_NV */ + { 18967, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 18982, 0x00008636 }, /* GL_MATRIX6_NV */ + { 18996, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 19011, 0x00008637 }, /* GL_MATRIX7_NV */ + { 19025, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 19040, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 19055, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 19081, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 19122, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 19148, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 19182, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 19216, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 19247, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 19278, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 19311, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 19344, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 19375, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 19406, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 19421, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 19443, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 19465, 0x00008008 }, /* GL_MAX */ + { 19472, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 19495, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 19522, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 19554, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 19580, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 19613, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 19639, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 19673, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 19692, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 19717, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 19746, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 19778, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 19814, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 19850, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 19890, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 19916, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 19946, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 19971, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 20000, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 20029, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 20062, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 20095, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 20115, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 20139, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 20163, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 20187, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 20212, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 20230, 0x00008008 }, /* GL_MAX_EXT */ + { 20241, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 20276, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 20315, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 20347, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 20361, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 20381, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 20419, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 20448, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 20472, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 20500, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 20528, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 20551, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 20588, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 20624, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 20651, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 20680, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 20714, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 20750, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 20777, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 20809, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 20845, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 20874, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 20903, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 20931, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 20969, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 21013, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 21056, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 21090, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 21129, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 21166, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 21204, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 21247, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 21290, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 21320, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 21351, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 21387, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 21423, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 21453, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 21487, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 21520, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 21545, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 21574, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 21603, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 21618, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 21637, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 21664, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 21684, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 21708, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 21730, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 21756, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 21783, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 21814, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 21838, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 21866, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 21900, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 21920, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 21947, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 21968, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 21993, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 22018, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 22053, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 22106, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 22153, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 22203, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 22225, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 22251, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 22274, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 22296, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 22322, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 22356, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 22394, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 22427, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 22464, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 22494, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 22518, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 22542, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 22563, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 22579, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 22593, 0x00008007 }, /* GL_MIN */ + { 22600, 0x0000802E }, /* GL_MINMAX */ + { 22610, 0x0000802E }, /* GL_MINMAX_EXT */ + { 22624, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 22641, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 22662, 0x00008030 }, /* GL_MINMAX_SINK */ + { 22677, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 22696, 0x00008007 }, /* GL_MIN_EXT */ + { 22707, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 22726, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 22749, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 22772, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 22792, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 22812, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 22842, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 22870, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 22898, 0x00001700 }, /* GL_MODELVIEW */ + { 22911, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 22929, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 22948, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 22967, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 22986, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 23005, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 23024, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 23043, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 23062, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 23081, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 23100, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 23119, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 23137, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 23156, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 23175, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 23194, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 23213, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 23232, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 23251, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 23270, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 23289, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 23308, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 23327, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 23345, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 23364, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 23383, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 23401, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 23419, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 23437, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 23455, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 23473, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 23491, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 23509, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 23529, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 23571, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 23598, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 23623, 0x00002100 }, /* GL_MODULATE */ + { 23635, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 23655, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 23682, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 23707, 0x00000103 }, /* GL_MULT */ + { 23715, 0x0000809D }, /* GL_MULTISAMPLE */ + { 23730, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 23750, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 23769, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 23788, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 23812, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 23835, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 23865, 0x00002A25 }, /* GL_N3F_V3F */ + { 23876, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 23896, 0x0000150E }, /* GL_NAND */ + { 23904, 0x00002600 }, /* GL_NEAREST */ + { 23915, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 23946, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 23978, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 24003, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 24029, 0x00000200 }, /* GL_NEVER */ + { 24038, 0x00001102 }, /* GL_NICEST */ + { 24048, 0x00000000 }, /* GL_NONE */ + { 24056, 0x00000000 }, /* GL_NONE_OES */ + { 24068, 0x00001505 }, /* GL_NOOP */ + { 24076, 0x00001508 }, /* GL_NOR */ + { 24083, 0x00000BA1 }, /* GL_NORMALIZE */ + { 24096, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 24112, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 24143, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 24178, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 24202, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 24225, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 24246, 0x00008511 }, /* GL_NORMAL_MAP */ + { 24260, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 24278, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 24295, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 24313, 0x00000205 }, /* GL_NOTEQUAL */ + { 24325, 0x00000000 }, /* GL_NO_ERROR */ + { 24337, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 24371, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 24409, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 24443, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 24472, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 24504, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 24546, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 24576, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 24616, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 24647, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 24676, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 24704, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 24734, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 24751, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 24777, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 24793, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 24828, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 24850, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 24865, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 24884, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 24914, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 24935, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 24963, 0x00000001 }, /* GL_ONE */ + { 24970, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 24998, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 25030, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 25058, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 25090, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 25113, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 25136, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 25159, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 25182, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 25200, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 25222, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 25244, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 25260, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 25280, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 25300, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 25318, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 25340, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 25362, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 25378, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 25398, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 25418, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 25436, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 25458, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 25480, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 25496, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 25516, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 25536, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 25557, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 25576, 0x00001507 }, /* GL_OR */ + { 25582, 0x00000A01 }, /* GL_ORDER */ + { 25591, 0x0000150D }, /* GL_OR_INVERTED */ + { 25606, 0x0000150B }, /* GL_OR_REVERSE */ + { 25620, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 25637, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 25655, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 25676, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 25696, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 25714, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 25733, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 25753, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 25773, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 25791, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 25810, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 25835, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 25859, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 25880, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 25902, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 25924, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 25949, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 25973, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 25994, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 26016, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 26038, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 26060, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 26091, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 26111, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 26136, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 26156, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 26181, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 26201, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 26226, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 26246, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 26271, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 26291, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 26316, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 26336, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 26361, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 26381, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 26406, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 26426, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 26451, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 26471, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 26496, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 26516, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 26541, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 26559, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 26580, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 26609, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 26642, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 26667, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 26690, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 26721, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 26756, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 26783, 0x00001B00 }, /* GL_POINT */ + { 26792, 0x00000000 }, /* GL_POINTS */ + { 26802, 0x00000002 }, /* GL_POINT_BIT */ + { 26815, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 26845, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 26879, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 26913, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 26948, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 26977, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 27010, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 27043, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 27077, 0x00000B11 }, /* GL_POINT_SIZE */ + { 27091, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 27130, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 27154, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 27186, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 27217, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 27246, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 27272, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 27290, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 27312, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 27334, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 27357, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 27375, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 27397, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 27419, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 27442, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 27462, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 27478, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 27499, 0x00008861 }, /* GL_POINT_SPRITE */ + { 27515, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 27535, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 27564, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 27583, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 27603, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 27629, 0x00000701 }, /* GL_POINT_TOKEN */ + { 27644, 0x00000009 }, /* GL_POLYGON */ + { 27655, 0x00000008 }, /* GL_POLYGON_BIT */ + { 27670, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 27686, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 27709, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 27734, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 27757, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 27780, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 27804, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 27828, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 27846, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 27869, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 27888, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 27911, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 27928, 0x00001203 }, /* GL_POSITION */ + { 27940, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 27972, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 28008, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 28041, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 28078, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 28109, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 28144, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 28176, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 28212, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 28245, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 28277, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 28313, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 28346, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 28383, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 28413, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 28447, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 28478, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 28513, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 28544, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 28579, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 28611, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 28647, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 28677, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 28711, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 28742, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 28777, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 28809, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 28840, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 28875, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 28907, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 28943, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 28972, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 29005, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 29035, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 29069, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 29108, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 29141, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 29181, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 29215, 0x00008578 }, /* GL_PREVIOUS */ + { 29227, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 29243, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 29259, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 29276, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 29297, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 29318, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 29346, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 29379, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 29411, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 29434, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 29464, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 29493, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 29516, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 29546, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 29575, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 29603, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 29625, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 29653, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 29681, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 29703, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 29724, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 29764, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 29803, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 29833, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 29868, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 29901, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 29935, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 29974, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 30013, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 30035, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 30061, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 30085, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 30108, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 30130, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 30151, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 30172, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 30199, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 30231, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 30263, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 30298, 0x00001701 }, /* GL_PROJECTION */ + { 30312, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 30333, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 30376, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 30402, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 30422, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 30446, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 30467, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 30486, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 30509, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 30548, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 30586, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 30606, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 30636, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 30660, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 30680, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 30710, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 30734, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 30754, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 30787, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 30813, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 30843, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 30874, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 30904, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 30923, 0x00002003 }, /* GL_Q */ + { 30928, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 30953, 0x00000007 }, /* GL_QUADS */ + { 30962, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 31006, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 31054, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 31071, 0x00000008 }, /* GL_QUAD_STRIP */ + { 31085, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 31115, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 31142, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 31164, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 31190, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 31210, 0x00008866 }, /* GL_QUERY_RESULT */ + { 31226, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 31246, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 31272, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 31302, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 31319, 0x00002002 }, /* GL_R */ + { 31324, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 31336, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 31362, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 31395, 0x00000C02 }, /* GL_READ_BUFFER */ + { 31410, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 31430, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 31458, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 31490, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 31514, 0x000088B8 }, /* GL_READ_ONLY */ + { 31527, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 31544, 0x000088BA }, /* GL_READ_WRITE */ + { 31558, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 31576, 0x00001903 }, /* GL_RED */ + { 31583, 0x00008016 }, /* GL_REDUCE */ + { 31593, 0x00008016 }, /* GL_REDUCE_EXT */ + { 31607, 0x00000D15 }, /* GL_RED_BIAS */ + { 31619, 0x00000D52 }, /* GL_RED_BITS */ + { 31631, 0x00000D14 }, /* GL_RED_SCALE */ + { 31644, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 31662, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 31684, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 31705, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 31727, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 31745, 0x00001C00 }, /* GL_RENDER */ + { 31755, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 31771, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 31798, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 31829, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 31853, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 31881, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 31909, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 31935, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 31965, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 31992, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 32023, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 32043, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 32070, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 32101, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 32124, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 32151, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 32178, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 32210, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 32246, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 32282, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 32302, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 32327, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 32356, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 32380, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 32408, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 32437, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 32470, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 32492, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 32518, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 32544, 0x00001F01 }, /* GL_RENDERER */ + { 32556, 0x00000C40 }, /* GL_RENDER_MODE */ + { 32571, 0x00002901 }, /* GL_REPEAT */ + { 32581, 0x00001E01 }, /* GL_REPLACE */ + { 32592, 0x00008062 }, /* GL_REPLACE_EXT */ + { 32607, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 32630, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 32648, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 32670, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 32688, 0x00000102 }, /* GL_RETURN */ + { 32698, 0x00001907 }, /* GL_RGB */ + { 32705, 0x00008052 }, /* GL_RGB10 */ + { 32714, 0x00008059 }, /* GL_RGB10_A2 */ + { 32726, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 32742, 0x00008052 }, /* GL_RGB10_EXT */ + { 32755, 0x00008053 }, /* GL_RGB12 */ + { 32764, 0x00008053 }, /* GL_RGB12_EXT */ + { 32777, 0x00008054 }, /* GL_RGB16 */ + { 32786, 0x00008054 }, /* GL_RGB16_EXT */ + { 32799, 0x0000804E }, /* GL_RGB2_EXT */ + { 32811, 0x0000804F }, /* GL_RGB4 */ + { 32819, 0x0000804F }, /* GL_RGB4_EXT */ + { 32831, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 32844, 0x00008050 }, /* GL_RGB5 */ + { 32852, 0x00008D62 }, /* GL_RGB565 */ + { 32862, 0x00008D62 }, /* GL_RGB565_OES */ + { 32876, 0x00008057 }, /* GL_RGB5_A1 */ + { 32887, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 32902, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 32917, 0x00008050 }, /* GL_RGB5_EXT */ + { 32929, 0x00008051 }, /* GL_RGB8 */ + { 32937, 0x00008051 }, /* GL_RGB8_EXT */ + { 32949, 0x00008051 }, /* GL_RGB8_OES */ + { 32961, 0x00001908 }, /* GL_RGBA */ + { 32969, 0x0000805A }, /* GL_RGBA12 */ + { 32979, 0x0000805A }, /* GL_RGBA12_EXT */ + { 32993, 0x0000805B }, /* GL_RGBA16 */ + { 33003, 0x0000805B }, /* GL_RGBA16_EXT */ + { 33017, 0x00008055 }, /* GL_RGBA2 */ + { 33026, 0x00008055 }, /* GL_RGBA2_EXT */ + { 33039, 0x00008056 }, /* GL_RGBA4 */ + { 33048, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 33067, 0x00008056 }, /* GL_RGBA4_EXT */ + { 33080, 0x00008056 }, /* GL_RGBA4_OES */ + { 33093, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 33107, 0x00008058 }, /* GL_RGBA8 */ + { 33116, 0x00008058 }, /* GL_RGBA8_EXT */ + { 33129, 0x00008058 }, /* GL_RGBA8_OES */ + { 33142, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 33157, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 33175, 0x00000C31 }, /* GL_RGBA_MODE */ + { 33188, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 33201, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 33215, 0x000083A0 }, /* GL_RGB_S3TC */ + { 33227, 0x00008573 }, /* GL_RGB_SCALE */ + { 33240, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 33257, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 33274, 0x00000407 }, /* GL_RIGHT */ + { 33283, 0x00002000 }, /* GL_S */ + { 33288, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 33302, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 33323, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 33337, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 33358, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 33372, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 33390, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 33406, 0x000080A9 }, /* GL_SAMPLES */ + { 33417, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 33433, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 33448, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 33466, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 33488, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 33516, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 33548, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 33571, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 33598, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 33616, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 33639, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 33661, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 33680, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 33703, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 33729, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 33759, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 33784, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 33813, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 33828, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 33843, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 33859, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 33884, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 33924, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 33968, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 34001, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 34031, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 34063, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 34093, 0x00001C02 }, /* GL_SELECT */ + { 34103, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 34131, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 34156, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 34172, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 34196, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 34223, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 34254, 0x0000150F }, /* GL_SET */ + { 34261, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 34286, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 34305, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 34326, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 34350, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 34365, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 34380, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 34408, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 34431, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 34461, 0x00001601 }, /* GL_SHININESS */ + { 34474, 0x00001402 }, /* GL_SHORT */ + { 34483, 0x00009119 }, /* GL_SIGNALED */ + { 34495, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 34516, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 34532, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 34552, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 34571, 0x00008C46 }, /* GL_SLUMINANCE */ + { 34585, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 34600, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 34622, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 34642, 0x00001D01 }, /* GL_SMOOTH */ + { 34652, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 34685, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 34712, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 34745, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 34772, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 34789, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 34810, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 34831, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 34846, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 34865, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 34884, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 34901, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 34922, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 34943, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 34958, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 34977, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 34996, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 35013, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 35034, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 35055, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 35070, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 35089, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 35108, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 35128, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 35146, 0x00001202 }, /* GL_SPECULAR */ + { 35158, 0x00002402 }, /* GL_SPHERE_MAP */ + { 35172, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 35187, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 35205, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 35222, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 35236, 0x00008580 }, /* GL_SRC0_RGB */ + { 35248, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 35262, 0x00008581 }, /* GL_SRC1_RGB */ + { 35274, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 35288, 0x00008582 }, /* GL_SRC2_RGB */ + { 35300, 0x00000302 }, /* GL_SRC_ALPHA */ + { 35313, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 35335, 0x00000300 }, /* GL_SRC_COLOR */ + { 35348, 0x00008C40 }, /* GL_SRGB */ + { 35356, 0x00008C41 }, /* GL_SRGB8 */ + { 35365, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 35381, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 35395, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 35413, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 35432, 0x000088E6 }, /* GL_STATIC_COPY */ + { 35447, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 35466, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 35481, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 35500, 0x000088E5 }, /* GL_STATIC_READ */ + { 35515, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 35534, 0x00001802 }, /* GL_STENCIL */ + { 35545, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 35567, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 35593, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 35619, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 35640, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 35665, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 35686, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 35711, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 35743, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 35779, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 35811, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 35847, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 35867, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 35894, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 35920, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 35936, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 35958, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 35981, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 35997, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 36013, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 36030, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 36048, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 36067, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 36090, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 36112, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 36134, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 36152, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 36174, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 36196, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 36214, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 36236, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 36258, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 36279, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 36306, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 36333, 0x00000B97 }, /* GL_STENCIL_REF */ + { 36348, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 36364, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 36393, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 36415, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 36436, 0x00000C33 }, /* GL_STEREO */ + { 36446, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 36470, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 36495, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 36519, 0x000088E2 }, /* GL_STREAM_COPY */ + { 36534, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 36553, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 36568, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 36587, 0x000088E1 }, /* GL_STREAM_READ */ + { 36602, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 36621, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 36638, 0x000084E7 }, /* GL_SUBTRACT */ + { 36650, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 36666, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 36684, 0x00009116 }, /* GL_SYNC_FENCE */ + { 36698, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 36712, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 36739, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 36769, 0x00009114 }, /* GL_SYNC_STATUS */ + { 36784, 0x00002001 }, /* GL_T */ + { 36789, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 36804, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 36823, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 36839, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 36854, 0x00002A27 }, /* GL_T2F_V3F */ + { 36865, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 36884, 0x00002A28 }, /* GL_T4F_V4F */ + { 36895, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 36918, 0x00001702 }, /* GL_TEXTURE */ + { 36929, 0x000084C0 }, /* GL_TEXTURE0 */ + { 36941, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 36957, 0x000084C1 }, /* GL_TEXTURE1 */ + { 36969, 0x000084CA }, /* GL_TEXTURE10 */ + { 36982, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 36999, 0x000084CB }, /* GL_TEXTURE11 */ + { 37012, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 37029, 0x000084CC }, /* GL_TEXTURE12 */ + { 37042, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 37059, 0x000084CD }, /* GL_TEXTURE13 */ + { 37072, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 37089, 0x000084CE }, /* GL_TEXTURE14 */ + { 37102, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 37119, 0x000084CF }, /* GL_TEXTURE15 */ + { 37132, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 37149, 0x000084D0 }, /* GL_TEXTURE16 */ + { 37162, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 37179, 0x000084D1 }, /* GL_TEXTURE17 */ + { 37192, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 37209, 0x000084D2 }, /* GL_TEXTURE18 */ + { 37222, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 37239, 0x000084D3 }, /* GL_TEXTURE19 */ + { 37252, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 37269, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 37285, 0x000084C2 }, /* GL_TEXTURE2 */ + { 37297, 0x000084D4 }, /* GL_TEXTURE20 */ + { 37310, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 37327, 0x000084D5 }, /* GL_TEXTURE21 */ + { 37340, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 37357, 0x000084D6 }, /* GL_TEXTURE22 */ + { 37370, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 37387, 0x000084D7 }, /* GL_TEXTURE23 */ + { 37400, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 37417, 0x000084D8 }, /* GL_TEXTURE24 */ + { 37430, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 37447, 0x000084D9 }, /* GL_TEXTURE25 */ + { 37460, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 37477, 0x000084DA }, /* GL_TEXTURE26 */ + { 37490, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 37507, 0x000084DB }, /* GL_TEXTURE27 */ + { 37520, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 37537, 0x000084DC }, /* GL_TEXTURE28 */ + { 37550, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 37567, 0x000084DD }, /* GL_TEXTURE29 */ + { 37580, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 37597, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 37613, 0x000084C3 }, /* GL_TEXTURE3 */ + { 37625, 0x000084DE }, /* GL_TEXTURE30 */ + { 37638, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 37655, 0x000084DF }, /* GL_TEXTURE31 */ + { 37668, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 37685, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 37701, 0x000084C4 }, /* GL_TEXTURE4 */ + { 37713, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 37729, 0x000084C5 }, /* GL_TEXTURE5 */ + { 37741, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 37757, 0x000084C6 }, /* GL_TEXTURE6 */ + { 37769, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 37785, 0x000084C7 }, /* GL_TEXTURE7 */ + { 37797, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 37813, 0x000084C8 }, /* GL_TEXTURE8 */ + { 37825, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 37841, 0x000084C9 }, /* GL_TEXTURE9 */ + { 37853, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 37869, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 37883, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 37907, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 37921, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 37945, 0x0000806F }, /* GL_TEXTURE_3D */ + { 37959, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 37977, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 37999, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 38025, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 38047, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 38069, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 38101, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 38123, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 38155, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 38177, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 38203, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 38231, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 38263, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 38295, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 38328, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 38360, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 38375, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 38396, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 38421, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 38439, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 38463, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 38494, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 38524, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 38554, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 38589, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 38620, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 38658, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 38685, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 38717, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 38751, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 38775, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 38803, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 38827, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 38855, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 38888, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 38912, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 38934, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 38956, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 38982, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 39016, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 39049, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 39086, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 39114, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 39146, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 39169, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 39207, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 39249, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 39280, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 39308, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 39338, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 39366, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 39391, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 39411, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 39435, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 39466, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 39501, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 39536, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 39567, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 39602, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 39637, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 39668, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 39703, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 39738, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 39762, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 39793, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 39828, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 39863, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 39894, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 39929, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 39964, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 39995, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 40030, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 40065, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 40094, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 40111, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 40133, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 40159, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 40174, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 40195, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 40215, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 40241, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 40271, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 40291, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 40315, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 40332, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 40349, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 40366, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 40389, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 40406, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 40431, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 40453, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 40479, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 40497, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 40523, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 40549, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 40579, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 40606, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 40631, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 40651, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 40675, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 40702, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 40729, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 40756, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 40782, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 40812, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 40834, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 40852, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 40892, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 40922, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 40950, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 40978, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 41006, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 41027, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 41046, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 41068, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 41087, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 41107, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 41137, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 41168, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 41193, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 41217, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 41237, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 41261, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 41281, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 41304, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 41328, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 41356, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 41386, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 41411, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 41445, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 41462, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 41480, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 41502, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 41520, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 41538, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 41557, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 41577, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 41596, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 41625, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 41642, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 41683, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 41716, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 41754, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 41792, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 41831, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 41876, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 41911, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 41956, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 41982, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 42012, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 42044, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 42074, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 42108, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 42124, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 42155, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 42190, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 42218, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 42250, 0x00000004 }, /* GL_TRIANGLES */ + { 42263, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 42279, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 42300, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 42318, 0x00000001 }, /* GL_TRUE */ + { 42326, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 42345, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 42365, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 42388, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 42408, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 42429, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 42451, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 42473, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 42493, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 42514, 0x00009118 }, /* GL_UNSIGNALED */ + { 42528, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 42545, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 42572, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 42595, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 42611, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 42638, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 42669, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 42690, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 42715, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 42739, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 42764, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 42795, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 42830, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 42854, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 42882, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 42905, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 42923, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 42953, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 42987, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 43013, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 43043, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 43077, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 43103, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 43127, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 43155, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 43183, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 43210, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 43242, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 43273, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 43287, 0x00002A20 }, /* GL_V2F */ + { 43294, 0x00002A21 }, /* GL_V3F */ + { 43301, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 43320, 0x00001F00 }, /* GL_VENDOR */ + { 43330, 0x00001F02 }, /* GL_VERSION */ + { 43341, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 43357, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 43381, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 43411, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 43442, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 43477, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 43501, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 43522, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 43545, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 43566, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 43593, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 43621, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 43649, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 43677, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 43705, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 43733, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 43761, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 43788, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 43815, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 43842, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 43869, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 43896, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 43923, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 43950, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 43977, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 44004, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 44042, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 44084, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 44115, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 44150, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 44184, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 44222, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 44253, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 44288, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 44316, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 44348, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 44378, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 44412, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 44440, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 44472, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 44492, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 44514, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 44543, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 44564, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 44593, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 44626, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 44658, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 44685, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 44716, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 44746, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 44763, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 44784, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 44811, 0x00000BA2 }, /* GL_VIEWPORT */ + { 44823, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 44839, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 44857, 0x0000911D }, /* GL_WAIT_FAILED */ + { 44872, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 44892, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 44923, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 44958, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 44993, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 45013, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 45041, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 45069, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 45094, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 45119, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 45146, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 45173, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 45198, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 45223, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 45247, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 45266, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 45280, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 45298, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 45316, 0x00001506 }, /* GL_XOR */ + { 45323, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 45342, 0x00008757 }, /* GL_YCBCR_MESA */ + { 45356, 0x00000000 }, /* GL_ZERO */ + { 45364, 0x00000D16 }, /* GL_ZOOM_X */ + { 45374, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1372] = +static const unsigned reduced_enums[1402] = { - 480, /* GL_FALSE */ - 704, /* GL_LINES */ - 706, /* GL_LINE_LOOP */ - 713, /* GL_LINE_STRIP */ - 1789, /* GL_TRIANGLES */ - 1792, /* GL_TRIANGLE_STRIP */ - 1790, /* GL_TRIANGLE_FAN */ - 1293, /* GL_QUADS */ - 1297, /* GL_QUAD_STRIP */ - 1177, /* GL_POLYGON */ - 1189, /* GL_POLYGON_STIPPLE_BIT */ - 1138, /* GL_PIXEL_MODE_BIT */ - 691, /* GL_LIGHTING_BIT */ - 510, /* GL_FOG_BIT */ + 500, /* GL_FALSE */ + 753, /* GL_LINES */ + 755, /* GL_LINE_LOOP */ + 762, /* GL_LINE_STRIP */ + 1913, /* GL_TRIANGLES */ + 1916, /* GL_TRIANGLE_STRIP */ + 1914, /* GL_TRIANGLE_FAN */ + 1376, /* GL_QUADS */ + 1380, /* GL_QUAD_STRIP */ + 1257, /* GL_POLYGON */ + 1269, /* GL_POLYGON_STIPPLE_BIT */ + 1212, /* GL_PIXEL_MODE_BIT */ + 740, /* GL_LIGHTING_BIT */ + 532, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 723, /* GL_LOAD */ - 1359, /* GL_RETURN */ - 1010, /* GL_MULT */ + 772, /* GL_LOAD */ + 1454, /* GL_RETURN */ + 1080, /* GL_MULT */ 23, /* GL_ADD */ - 1026, /* GL_NEVER */ - 681, /* GL_LESS */ - 470, /* GL_EQUAL */ - 680, /* GL_LEQUAL */ - 600, /* GL_GREATER */ - 1041, /* GL_NOTEQUAL */ - 599, /* GL_GEQUAL */ + 1096, /* GL_NEVER */ + 730, /* GL_LESS */ + 490, /* GL_EQUAL */ + 729, /* GL_LEQUAL */ + 642, /* GL_GREATER */ + 1113, /* GL_NOTEQUAL */ + 641, /* GL_GEQUAL */ 47, /* GL_ALWAYS */ - 1501, /* GL_SRC_COLOR */ - 1071, /* GL_ONE_MINUS_SRC_COLOR */ - 1499, /* GL_SRC_ALPHA */ - 1070, /* GL_ONE_MINUS_SRC_ALPHA */ - 449, /* GL_DST_ALPHA */ - 1068, /* GL_ONE_MINUS_DST_ALPHA */ - 450, /* GL_DST_COLOR */ - 1069, /* GL_ONE_MINUS_DST_COLOR */ - 1500, /* GL_SRC_ALPHA_SATURATE */ - 587, /* GL_FRONT_LEFT */ - 588, /* GL_FRONT_RIGHT */ + 1605, /* GL_SRC_COLOR */ + 1145, /* GL_ONE_MINUS_SRC_COLOR */ + 1603, /* GL_SRC_ALPHA */ + 1144, /* GL_ONE_MINUS_SRC_ALPHA */ + 469, /* GL_DST_ALPHA */ + 1142, /* GL_ONE_MINUS_DST_ALPHA */ + 470, /* GL_DST_COLOR */ + 1143, /* GL_ONE_MINUS_DST_COLOR */ + 1604, /* GL_SRC_ALPHA_SATURATE */ + 626, /* GL_FRONT_LEFT */ + 627, /* GL_FRONT_RIGHT */ 69, /* GL_BACK_LEFT */ 70, /* GL_BACK_RIGHT */ - 584, /* GL_FRONT */ + 623, /* GL_FRONT */ 68, /* GL_BACK */ - 679, /* GL_LEFT */ - 1401, /* GL_RIGHT */ - 585, /* GL_FRONT_AND_BACK */ + 728, /* GL_LEFT */ + 1502, /* GL_RIGHT */ + 624, /* GL_FRONT_AND_BACK */ 63, /* GL_AUX0 */ 64, /* GL_AUX1 */ 65, /* GL_AUX2 */ 66, /* GL_AUX3 */ - 668, /* GL_INVALID_ENUM */ - 672, /* GL_INVALID_VALUE */ - 671, /* GL_INVALID_OPERATION */ - 1506, /* GL_STACK_OVERFLOW */ - 1507, /* GL_STACK_UNDERFLOW */ - 1096, /* GL_OUT_OF_MEMORY */ - 669, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 716, /* GL_INVALID_ENUM */ + 721, /* GL_INVALID_VALUE */ + 720, /* GL_INVALID_OPERATION */ + 1610, /* GL_STACK_OVERFLOW */ + 1611, /* GL_STACK_UNDERFLOW */ + 1170, /* GL_OUT_OF_MEMORY */ + 717, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1116, /* GL_PASS_THROUGH_TOKEN */ - 1176, /* GL_POINT_TOKEN */ - 714, /* GL_LINE_TOKEN */ - 1190, /* GL_POLYGON_TOKEN */ - 74, /* GL_BITMAP_TOKEN */ - 448, /* GL_DRAW_PIXEL_TOKEN */ - 302, /* GL_COPY_PIXEL_TOKEN */ - 707, /* GL_LINE_RESET_TOKEN */ - 473, /* GL_EXP */ - 474, /* GL_EXP2 */ - 338, /* GL_CW */ - 126, /* GL_CCW */ - 147, /* GL_COEFF */ - 1093, /* GL_ORDER */ - 385, /* GL_DOMAIN */ - 312, /* GL_CURRENT_COLOR */ - 315, /* GL_CURRENT_INDEX */ - 321, /* GL_CURRENT_NORMAL */ - 334, /* GL_CURRENT_TEXTURE_COORDS */ - 326, /* GL_CURRENT_RASTER_COLOR */ - 328, /* GL_CURRENT_RASTER_INDEX */ - 332, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 329, /* GL_CURRENT_RASTER_POSITION */ - 330, /* GL_CURRENT_RASTER_POSITION_VALID */ - 327, /* GL_CURRENT_RASTER_DISTANCE */ - 1169, /* GL_POINT_SMOOTH */ - 1158, /* GL_POINT_SIZE */ - 1168, /* GL_POINT_SIZE_RANGE */ - 1159, /* GL_POINT_SIZE_GRANULARITY */ - 708, /* GL_LINE_SMOOTH */ - 715, /* GL_LINE_WIDTH */ - 717, /* GL_LINE_WIDTH_RANGE */ - 716, /* GL_LINE_WIDTH_GRANULARITY */ - 710, /* GL_LINE_STIPPLE */ - 711, /* GL_LINE_STIPPLE_PATTERN */ - 712, /* GL_LINE_STIPPLE_REPEAT */ - 722, /* GL_LIST_MODE */ - 888, /* GL_MAX_LIST_NESTING */ - 719, /* GL_LIST_BASE */ - 721, /* GL_LIST_INDEX */ - 1179, /* GL_POLYGON_MODE */ - 1186, /* GL_POLYGON_SMOOTH */ - 1188, /* GL_POLYGON_STIPPLE */ - 459, /* GL_EDGE_FLAG */ - 305, /* GL_CULL_FACE */ - 306, /* GL_CULL_FACE_MODE */ - 586, /* GL_FRONT_FACE */ - 690, /* GL_LIGHTING */ - 695, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 696, /* GL_LIGHT_MODEL_TWO_SIDE */ - 692, /* GL_LIGHT_MODEL_AMBIENT */ - 1448, /* GL_SHADE_MODEL */ - 194, /* GL_COLOR_MATERIAL_FACE */ - 195, /* GL_COLOR_MATERIAL_PARAMETER */ - 193, /* GL_COLOR_MATERIAL */ - 509, /* GL_FOG */ - 531, /* GL_FOG_INDEX */ - 527, /* GL_FOG_DENSITY */ - 535, /* GL_FOG_START */ - 529, /* GL_FOG_END */ - 532, /* GL_FOG_MODE */ - 511, /* GL_FOG_COLOR */ - 371, /* GL_DEPTH_RANGE */ - 379, /* GL_DEPTH_TEST */ - 382, /* GL_DEPTH_WRITEMASK */ - 359, /* GL_DEPTH_CLEAR_VALUE */ - 370, /* GL_DEPTH_FUNC */ + 1190, /* GL_PASS_THROUGH_TOKEN */ + 1256, /* GL_POINT_TOKEN */ + 763, /* GL_LINE_TOKEN */ + 1270, /* GL_POLYGON_TOKEN */ + 75, /* GL_BITMAP_TOKEN */ + 468, /* GL_DRAW_PIXEL_TOKEN */ + 315, /* GL_COPY_PIXEL_TOKEN */ + 756, /* GL_LINE_RESET_TOKEN */ + 493, /* GL_EXP */ + 494, /* GL_EXP2 */ + 352, /* GL_CW */ + 137, /* GL_CCW */ + 158, /* GL_COEFF */ + 1167, /* GL_ORDER */ + 405, /* GL_DOMAIN */ + 325, /* GL_CURRENT_COLOR */ + 328, /* GL_CURRENT_INDEX */ + 334, /* GL_CURRENT_NORMAL */ + 348, /* GL_CURRENT_TEXTURE_COORDS */ + 340, /* GL_CURRENT_RASTER_COLOR */ + 342, /* GL_CURRENT_RASTER_INDEX */ + 346, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 343, /* GL_CURRENT_RASTER_POSITION */ + 344, /* GL_CURRENT_RASTER_POSITION_VALID */ + 341, /* GL_CURRENT_RASTER_DISTANCE */ + 1248, /* GL_POINT_SMOOTH */ + 1232, /* GL_POINT_SIZE */ + 1247, /* GL_POINT_SIZE_RANGE */ + 1238, /* GL_POINT_SIZE_GRANULARITY */ + 757, /* GL_LINE_SMOOTH */ + 764, /* GL_LINE_WIDTH */ + 766, /* GL_LINE_WIDTH_RANGE */ + 765, /* GL_LINE_WIDTH_GRANULARITY */ + 759, /* GL_LINE_STIPPLE */ + 760, /* GL_LINE_STIPPLE_PATTERN */ + 761, /* GL_LINE_STIPPLE_REPEAT */ + 771, /* GL_LIST_MODE */ + 949, /* GL_MAX_LIST_NESTING */ + 768, /* GL_LIST_BASE */ + 770, /* GL_LIST_INDEX */ + 1259, /* GL_POLYGON_MODE */ + 1266, /* GL_POLYGON_SMOOTH */ + 1268, /* GL_POLYGON_STIPPLE */ + 479, /* GL_EDGE_FLAG */ + 318, /* GL_CULL_FACE */ + 319, /* GL_CULL_FACE_MODE */ + 625, /* GL_FRONT_FACE */ + 739, /* GL_LIGHTING */ + 744, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 745, /* GL_LIGHT_MODEL_TWO_SIDE */ + 741, /* GL_LIGHT_MODEL_AMBIENT */ + 1552, /* GL_SHADE_MODEL */ + 206, /* GL_COLOR_MATERIAL_FACE */ + 207, /* GL_COLOR_MATERIAL_PARAMETER */ + 205, /* GL_COLOR_MATERIAL */ + 531, /* GL_FOG */ + 553, /* GL_FOG_INDEX */ + 549, /* GL_FOG_DENSITY */ + 557, /* GL_FOG_START */ + 551, /* GL_FOG_END */ + 554, /* GL_FOG_MODE */ + 533, /* GL_FOG_COLOR */ + 390, /* GL_DEPTH_RANGE */ + 399, /* GL_DEPTH_TEST */ + 402, /* GL_DEPTH_WRITEMASK */ + 375, /* GL_DEPTH_CLEAR_VALUE */ + 389, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1546, /* GL_STENCIL_TEST */ - 1530, /* GL_STENCIL_CLEAR_VALUE */ - 1532, /* GL_STENCIL_FUNC */ - 1548, /* GL_STENCIL_VALUE_MASK */ - 1531, /* GL_STENCIL_FAIL */ - 1543, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1544, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1545, /* GL_STENCIL_REF */ - 1549, /* GL_STENCIL_WRITEMASK */ - 856, /* GL_MATRIX_MODE */ - 1031, /* GL_NORMALIZE */ - 1885, /* GL_VIEWPORT */ - 1005, /* GL_MODELVIEW_STACK_DEPTH */ - 1270, /* GL_PROJECTION_STACK_DEPTH */ - 1756, /* GL_TEXTURE_STACK_DEPTH */ - 1003, /* GL_MODELVIEW_MATRIX */ - 1269, /* GL_PROJECTION_MATRIX */ - 1739, /* GL_TEXTURE_MATRIX */ + 1654, /* GL_STENCIL_TEST */ + 1635, /* GL_STENCIL_CLEAR_VALUE */ + 1637, /* GL_STENCIL_FUNC */ + 1656, /* GL_STENCIL_VALUE_MASK */ + 1636, /* GL_STENCIL_FAIL */ + 1651, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1652, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1653, /* GL_STENCIL_REF */ + 1657, /* GL_STENCIL_WRITEMASK */ + 913, /* GL_MATRIX_MODE */ + 1102, /* GL_NORMALIZE */ + 2014, /* GL_VIEWPORT */ + 1075, /* GL_MODELVIEW_STACK_DEPTH */ + 1353, /* GL_PROJECTION_STACK_DEPTH */ + 1879, /* GL_TEXTURE_STACK_DEPTH */ + 1072, /* GL_MODELVIEW_MATRIX */ + 1351, /* GL_PROJECTION_MATRIX */ + 1861, /* GL_TEXTURE_MATRIX */ 61, /* GL_ATTRIB_STACK_DEPTH */ - 137, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + 148, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 43, /* GL_ALPHA_TEST */ 44, /* GL_ALPHA_TEST_FUNC */ 45, /* GL_ALPHA_TEST_REF */ - 384, /* GL_DITHER */ - 78, /* GL_BLEND_DST */ - 87, /* GL_BLEND_SRC */ - 75, /* GL_BLEND */ - 725, /* GL_LOGIC_OP_MODE */ - 641, /* GL_INDEX_LOGIC_OP */ - 192, /* GL_COLOR_LOGIC_OP */ + 404, /* GL_DITHER */ + 79, /* GL_BLEND_DST */ + 93, /* GL_BLEND_SRC */ + 76, /* GL_BLEND */ + 774, /* GL_LOGIC_OP_MODE */ + 688, /* GL_INDEX_LOGIC_OP */ + 204, /* GL_COLOR_LOGIC_OP */ 67, /* GL_AUX_BUFFERS */ - 395, /* GL_DRAW_BUFFER */ - 1312, /* GL_READ_BUFFER */ - 1428, /* GL_SCISSOR_BOX */ - 1429, /* GL_SCISSOR_TEST */ - 640, /* GL_INDEX_CLEAR_VALUE */ - 645, /* GL_INDEX_WRITEMASK */ - 189, /* GL_COLOR_CLEAR_VALUE */ - 231, /* GL_COLOR_WRITEMASK */ - 642, /* GL_INDEX_MODE */ - 1394, /* GL_RGBA_MODE */ - 394, /* GL_DOUBLEBUFFER */ - 1550, /* GL_STEREO */ - 1351, /* GL_RENDER_MODE */ - 1117, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1170, /* GL_POINT_SMOOTH_HINT */ - 709, /* GL_LINE_SMOOTH_HINT */ - 1187, /* GL_POLYGON_SMOOTH_HINT */ - 530, /* GL_FOG_HINT */ - 1720, /* GL_TEXTURE_GEN_S */ - 1721, /* GL_TEXTURE_GEN_T */ - 1719, /* GL_TEXTURE_GEN_R */ - 1718, /* GL_TEXTURE_GEN_Q */ - 1130, /* GL_PIXEL_MAP_I_TO_I */ - 1136, /* GL_PIXEL_MAP_S_TO_S */ - 1132, /* GL_PIXEL_MAP_I_TO_R */ - 1128, /* GL_PIXEL_MAP_I_TO_G */ - 1126, /* GL_PIXEL_MAP_I_TO_B */ - 1124, /* GL_PIXEL_MAP_I_TO_A */ - 1134, /* GL_PIXEL_MAP_R_TO_R */ - 1122, /* GL_PIXEL_MAP_G_TO_G */ - 1120, /* GL_PIXEL_MAP_B_TO_B */ - 1118, /* GL_PIXEL_MAP_A_TO_A */ - 1131, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1137, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1133, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1129, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1127, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1125, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1135, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1123, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1121, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1119, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 1802, /* GL_UNPACK_SWAP_BYTES */ - 1797, /* GL_UNPACK_LSB_FIRST */ - 1798, /* GL_UNPACK_ROW_LENGTH */ - 1801, /* GL_UNPACK_SKIP_ROWS */ - 1800, /* GL_UNPACK_SKIP_PIXELS */ - 1795, /* GL_UNPACK_ALIGNMENT */ - 1105, /* GL_PACK_SWAP_BYTES */ - 1100, /* GL_PACK_LSB_FIRST */ - 1101, /* GL_PACK_ROW_LENGTH */ - 1104, /* GL_PACK_SKIP_ROWS */ - 1103, /* GL_PACK_SKIP_PIXELS */ - 1097, /* GL_PACK_ALIGNMENT */ - 803, /* GL_MAP_COLOR */ - 808, /* GL_MAP_STENCIL */ - 644, /* GL_INDEX_SHIFT */ - 643, /* GL_INDEX_OFFSET */ - 1326, /* GL_RED_SCALE */ - 1324, /* GL_RED_BIAS */ - 1904, /* GL_ZOOM_X */ - 1905, /* GL_ZOOM_Y */ - 604, /* GL_GREEN_SCALE */ - 602, /* GL_GREEN_BIAS */ - 93, /* GL_BLUE_SCALE */ - 91, /* GL_BLUE_BIAS */ + 415, /* GL_DRAW_BUFFER */ + 1395, /* GL_READ_BUFFER */ + 1530, /* GL_SCISSOR_BOX */ + 1531, /* GL_SCISSOR_TEST */ + 687, /* GL_INDEX_CLEAR_VALUE */ + 692, /* GL_INDEX_WRITEMASK */ + 201, /* GL_COLOR_CLEAR_VALUE */ + 243, /* GL_COLOR_WRITEMASK */ + 689, /* GL_INDEX_MODE */ + 1495, /* GL_RGBA_MODE */ + 414, /* GL_DOUBLEBUFFER */ + 1658, /* GL_STEREO */ + 1446, /* GL_RENDER_MODE */ + 1191, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1249, /* GL_POINT_SMOOTH_HINT */ + 758, /* GL_LINE_SMOOTH_HINT */ + 1267, /* GL_POLYGON_SMOOTH_HINT */ + 552, /* GL_FOG_HINT */ + 1841, /* GL_TEXTURE_GEN_S */ + 1843, /* GL_TEXTURE_GEN_T */ + 1840, /* GL_TEXTURE_GEN_R */ + 1839, /* GL_TEXTURE_GEN_Q */ + 1204, /* GL_PIXEL_MAP_I_TO_I */ + 1210, /* GL_PIXEL_MAP_S_TO_S */ + 1206, /* GL_PIXEL_MAP_I_TO_R */ + 1202, /* GL_PIXEL_MAP_I_TO_G */ + 1200, /* GL_PIXEL_MAP_I_TO_B */ + 1198, /* GL_PIXEL_MAP_I_TO_A */ + 1208, /* GL_PIXEL_MAP_R_TO_R */ + 1196, /* GL_PIXEL_MAP_G_TO_G */ + 1194, /* GL_PIXEL_MAP_B_TO_B */ + 1192, /* GL_PIXEL_MAP_A_TO_A */ + 1205, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1211, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1207, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1203, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1201, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1199, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1209, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1197, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1195, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1193, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 1926, /* GL_UNPACK_SWAP_BYTES */ + 1921, /* GL_UNPACK_LSB_FIRST */ + 1922, /* GL_UNPACK_ROW_LENGTH */ + 1925, /* GL_UNPACK_SKIP_ROWS */ + 1924, /* GL_UNPACK_SKIP_PIXELS */ + 1919, /* GL_UNPACK_ALIGNMENT */ + 1179, /* GL_PACK_SWAP_BYTES */ + 1174, /* GL_PACK_LSB_FIRST */ + 1175, /* GL_PACK_ROW_LENGTH */ + 1178, /* GL_PACK_SKIP_ROWS */ + 1177, /* GL_PACK_SKIP_PIXELS */ + 1171, /* GL_PACK_ALIGNMENT */ + 854, /* GL_MAP_COLOR */ + 859, /* GL_MAP_STENCIL */ + 691, /* GL_INDEX_SHIFT */ + 690, /* GL_INDEX_OFFSET */ + 1409, /* GL_RED_SCALE */ + 1407, /* GL_RED_BIAS */ + 2040, /* GL_ZOOM_X */ + 2041, /* GL_ZOOM_Y */ + 646, /* GL_GREEN_SCALE */ + 644, /* GL_GREEN_BIAS */ + 101, /* GL_BLUE_SCALE */ + 99, /* GL_BLUE_BIAS */ 42, /* GL_ALPHA_SCALE */ 40, /* GL_ALPHA_BIAS */ - 372, /* GL_DEPTH_SCALE */ - 352, /* GL_DEPTH_BIAS */ - 883, /* GL_MAX_EVAL_ORDER */ - 887, /* GL_MAX_LIGHTS */ - 865, /* GL_MAX_CLIP_PLANES */ - 935, /* GL_MAX_TEXTURE_SIZE */ - 893, /* GL_MAX_PIXEL_MAP_TABLE */ - 861, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 890, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 891, /* GL_MAX_NAME_STACK_DEPTH */ - 919, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 936, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 953, /* GL_MAX_VIEWPORT_DIMS */ - 862, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1560, /* GL_SUBPIXEL_BITS */ - 639, /* GL_INDEX_BITS */ - 1325, /* GL_RED_BITS */ - 603, /* GL_GREEN_BITS */ - 92, /* GL_BLUE_BITS */ + 391, /* GL_DEPTH_SCALE */ + 368, /* GL_DEPTH_BIAS */ + 943, /* GL_MAX_EVAL_ORDER */ + 948, /* GL_MAX_LIGHTS */ + 924, /* GL_MAX_CLIP_PLANES */ + 999, /* GL_MAX_TEXTURE_SIZE */ + 955, /* GL_MAX_PIXEL_MAP_TABLE */ + 920, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 951, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 952, /* GL_MAX_NAME_STACK_DEPTH */ + 981, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1000, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1020, /* GL_MAX_VIEWPORT_DIMS */ + 921, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1668, /* GL_SUBPIXEL_BITS */ + 686, /* GL_INDEX_BITS */ + 1408, /* GL_RED_BITS */ + 645, /* GL_GREEN_BITS */ + 100, /* GL_BLUE_BITS */ 41, /* GL_ALPHA_BITS */ - 353, /* GL_DEPTH_BITS */ - 1528, /* GL_STENCIL_BITS */ + 369, /* GL_DEPTH_BITS */ + 1633, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1019, /* GL_NAME_STACK_DEPTH */ + 1089, /* GL_NAME_STACK_DEPTH */ 62, /* GL_AUTO_NORMAL */ - 749, /* GL_MAP1_COLOR_4 */ - 752, /* GL_MAP1_INDEX */ - 753, /* GL_MAP1_NORMAL */ - 754, /* GL_MAP1_TEXTURE_COORD_1 */ - 755, /* GL_MAP1_TEXTURE_COORD_2 */ - 756, /* GL_MAP1_TEXTURE_COORD_3 */ - 757, /* GL_MAP1_TEXTURE_COORD_4 */ - 758, /* GL_MAP1_VERTEX_3 */ - 759, /* GL_MAP1_VERTEX_4 */ - 776, /* GL_MAP2_COLOR_4 */ - 779, /* GL_MAP2_INDEX */ - 780, /* GL_MAP2_NORMAL */ - 781, /* GL_MAP2_TEXTURE_COORD_1 */ - 782, /* GL_MAP2_TEXTURE_COORD_2 */ - 783, /* GL_MAP2_TEXTURE_COORD_3 */ - 784, /* GL_MAP2_TEXTURE_COORD_4 */ - 785, /* GL_MAP2_VERTEX_3 */ - 786, /* GL_MAP2_VERTEX_4 */ - 750, /* GL_MAP1_GRID_DOMAIN */ - 751, /* GL_MAP1_GRID_SEGMENTS */ - 777, /* GL_MAP2_GRID_DOMAIN */ - 778, /* GL_MAP2_GRID_SEGMENTS */ - 1643, /* GL_TEXTURE_1D */ - 1645, /* GL_TEXTURE_2D */ - 483, /* GL_FEEDBACK_BUFFER_POINTER */ - 484, /* GL_FEEDBACK_BUFFER_SIZE */ - 485, /* GL_FEEDBACK_BUFFER_TYPE */ - 1438, /* GL_SELECTION_BUFFER_POINTER */ - 1439, /* GL_SELECTION_BUFFER_SIZE */ - 1762, /* GL_TEXTURE_WIDTH */ - 1725, /* GL_TEXTURE_HEIGHT */ - 1680, /* GL_TEXTURE_COMPONENTS */ - 1664, /* GL_TEXTURE_BORDER_COLOR */ - 1663, /* GL_TEXTURE_BORDER */ - 386, /* GL_DONT_CARE */ - 481, /* GL_FASTEST */ - 1027, /* GL_NICEST */ + 800, /* GL_MAP1_COLOR_4 */ + 803, /* GL_MAP1_INDEX */ + 804, /* GL_MAP1_NORMAL */ + 805, /* GL_MAP1_TEXTURE_COORD_1 */ + 806, /* GL_MAP1_TEXTURE_COORD_2 */ + 807, /* GL_MAP1_TEXTURE_COORD_3 */ + 808, /* GL_MAP1_TEXTURE_COORD_4 */ + 809, /* GL_MAP1_VERTEX_3 */ + 810, /* GL_MAP1_VERTEX_4 */ + 827, /* GL_MAP2_COLOR_4 */ + 830, /* GL_MAP2_INDEX */ + 831, /* GL_MAP2_NORMAL */ + 832, /* GL_MAP2_TEXTURE_COORD_1 */ + 833, /* GL_MAP2_TEXTURE_COORD_2 */ + 834, /* GL_MAP2_TEXTURE_COORD_3 */ + 835, /* GL_MAP2_TEXTURE_COORD_4 */ + 836, /* GL_MAP2_VERTEX_3 */ + 837, /* GL_MAP2_VERTEX_4 */ + 801, /* GL_MAP1_GRID_DOMAIN */ + 802, /* GL_MAP1_GRID_SEGMENTS */ + 828, /* GL_MAP2_GRID_DOMAIN */ + 829, /* GL_MAP2_GRID_SEGMENTS */ + 1751, /* GL_TEXTURE_1D */ + 1753, /* GL_TEXTURE_2D */ + 503, /* GL_FEEDBACK_BUFFER_POINTER */ + 504, /* GL_FEEDBACK_BUFFER_SIZE */ + 505, /* GL_FEEDBACK_BUFFER_TYPE */ + 1540, /* GL_SELECTION_BUFFER_POINTER */ + 1541, /* GL_SELECTION_BUFFER_SIZE */ + 1885, /* GL_TEXTURE_WIDTH */ + 1847, /* GL_TEXTURE_HEIGHT */ + 1791, /* GL_TEXTURE_COMPONENTS */ + 1775, /* GL_TEXTURE_BORDER_COLOR */ + 1774, /* GL_TEXTURE_BORDER */ + 406, /* GL_DONT_CARE */ + 501, /* GL_FASTEST */ + 1097, /* GL_NICEST */ 48, /* GL_AMBIENT */ - 383, /* GL_DIFFUSE */ - 1488, /* GL_SPECULAR */ - 1191, /* GL_POSITION */ - 1491, /* GL_SPOT_DIRECTION */ - 1492, /* GL_SPOT_EXPONENT */ - 1490, /* GL_SPOT_CUTOFF */ - 276, /* GL_CONSTANT_ATTENUATION */ - 699, /* GL_LINEAR_ATTENUATION */ - 1292, /* GL_QUADRATIC_ATTENUATION */ - 245, /* GL_COMPILE */ - 246, /* GL_COMPILE_AND_EXECUTE */ - 121, /* GL_BYTE */ - 1804, /* GL_UNSIGNED_BYTE */ - 1453, /* GL_SHORT */ - 1816, /* GL_UNSIGNED_SHORT */ - 647, /* GL_INT */ - 1807, /* GL_UNSIGNED_INT */ - 490, /* GL_FLOAT */ + 403, /* GL_DIFFUSE */ + 1592, /* GL_SPECULAR */ + 1271, /* GL_POSITION */ + 1595, /* GL_SPOT_DIRECTION */ + 1596, /* GL_SPOT_EXPONENT */ + 1594, /* GL_SPOT_CUTOFF */ + 288, /* GL_CONSTANT_ATTENUATION */ + 748, /* GL_LINEAR_ATTENUATION */ + 1375, /* GL_QUADRATIC_ATTENUATION */ + 257, /* GL_COMPILE */ + 258, /* GL_COMPILE_AND_EXECUTE */ + 132, /* GL_BYTE */ + 1928, /* GL_UNSIGNED_BYTE */ + 1557, /* GL_SHORT */ + 1943, /* GL_UNSIGNED_SHORT */ + 694, /* GL_INT */ + 1931, /* GL_UNSIGNED_INT */ + 512, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 393, /* GL_DOUBLE */ - 605, /* GL_HALF_FLOAT */ - 133, /* GL_CLEAR */ + 413, /* GL_DOUBLE */ + 647, /* GL_HALF_FLOAT */ + 509, /* GL_FIXED */ + 144, /* GL_CLEAR */ 50, /* GL_AND */ 52, /* GL_AND_REVERSE */ - 300, /* GL_COPY */ + 313, /* GL_COPY */ 51, /* GL_AND_INVERTED */ - 1029, /* GL_NOOP */ - 1900, /* GL_XOR */ - 1092, /* GL_OR */ - 1030, /* GL_NOR */ - 471, /* GL_EQUIV */ - 675, /* GL_INVERT */ - 1095, /* GL_OR_REVERSE */ - 301, /* GL_COPY_INVERTED */ - 1094, /* GL_OR_INVERTED */ - 1020, /* GL_NAND */ - 1444, /* GL_SET */ - 468, /* GL_EMISSION */ - 1452, /* GL_SHININESS */ + 1100, /* GL_NOOP */ + 2036, /* GL_XOR */ + 1166, /* GL_OR */ + 1101, /* GL_NOR */ + 491, /* GL_EQUIV */ + 724, /* GL_INVERT */ + 1169, /* GL_OR_REVERSE */ + 314, /* GL_COPY_INVERTED */ + 1168, /* GL_OR_INVERTED */ + 1090, /* GL_NAND */ + 1546, /* GL_SET */ + 488, /* GL_EMISSION */ + 1556, /* GL_SHININESS */ 49, /* GL_AMBIENT_AND_DIFFUSE */ - 191, /* GL_COLOR_INDEXES */ - 970, /* GL_MODELVIEW */ - 1268, /* GL_PROJECTION */ - 1578, /* GL_TEXTURE */ - 148, /* GL_COLOR */ - 347, /* GL_DEPTH */ - 1514, /* GL_STENCIL */ - 190, /* GL_COLOR_INDEX */ - 1533, /* GL_STENCIL_INDEX */ - 360, /* GL_DEPTH_COMPONENT */ - 1321, /* GL_RED */ - 601, /* GL_GREEN */ - 90, /* GL_BLUE */ + 203, /* GL_COLOR_INDEXES */ + 1039, /* GL_MODELVIEW */ + 1350, /* GL_PROJECTION */ + 1686, /* GL_TEXTURE */ + 159, /* GL_COLOR */ + 361, /* GL_DEPTH */ + 1618, /* GL_STENCIL */ + 202, /* GL_COLOR_INDEX */ + 1638, /* GL_STENCIL_INDEX */ + 376, /* GL_DEPTH_COMPONENT */ + 1404, /* GL_RED */ + 643, /* GL_GREEN */ + 98, /* GL_BLUE */ 31, /* GL_ALPHA */ - 1360, /* GL_RGB */ - 1379, /* GL_RGBA */ - 727, /* GL_LUMINANCE */ - 748, /* GL_LUMINANCE_ALPHA */ - 73, /* GL_BITMAP */ - 1147, /* GL_POINT */ - 697, /* GL_LINE */ - 486, /* GL_FILL */ - 1331, /* GL_RENDER */ - 482, /* GL_FEEDBACK */ - 1437, /* GL_SELECT */ - 489, /* GL_FLAT */ - 1463, /* GL_SMOOTH */ - 676, /* GL_KEEP */ - 1353, /* GL_REPLACE */ - 629, /* GL_INCR */ - 343, /* GL_DECR */ - 1831, /* GL_VENDOR */ - 1350, /* GL_RENDERER */ - 1832, /* GL_VERSION */ - 475, /* GL_EXTENSIONS */ - 1402, /* GL_S */ - 1569, /* GL_T */ - 1308, /* GL_R */ - 1291, /* GL_Q */ - 1006, /* GL_MODULATE */ - 342, /* GL_DECAL */ - 1715, /* GL_TEXTURE_ENV_MODE */ - 1714, /* GL_TEXTURE_ENV_COLOR */ - 1713, /* GL_TEXTURE_ENV */ - 476, /* GL_EYE_LINEAR */ - 1053, /* GL_OBJECT_LINEAR */ - 1489, /* GL_SPHERE_MAP */ - 1717, /* GL_TEXTURE_GEN_MODE */ - 1055, /* GL_OBJECT_PLANE */ - 477, /* GL_EYE_PLANE */ - 1021, /* GL_NEAREST */ - 698, /* GL_LINEAR */ - 1025, /* GL_NEAREST_MIPMAP_NEAREST */ - 703, /* GL_LINEAR_MIPMAP_NEAREST */ - 1024, /* GL_NEAREST_MIPMAP_LINEAR */ - 702, /* GL_LINEAR_MIPMAP_LINEAR */ - 1738, /* GL_TEXTURE_MAG_FILTER */ - 1746, /* GL_TEXTURE_MIN_FILTER */ - 1764, /* GL_TEXTURE_WRAP_S */ - 1765, /* GL_TEXTURE_WRAP_T */ - 127, /* GL_CLAMP */ - 1352, /* GL_REPEAT */ - 1185, /* GL_POLYGON_OFFSET_UNITS */ - 1184, /* GL_POLYGON_OFFSET_POINT */ - 1183, /* GL_POLYGON_OFFSET_LINE */ - 1309, /* GL_R3_G3_B2 */ - 1828, /* GL_V2F */ - 1829, /* GL_V3F */ - 124, /* GL_C4UB_V2F */ - 125, /* GL_C4UB_V3F */ - 122, /* GL_C3F_V3F */ - 1018, /* GL_N3F_V3F */ - 123, /* GL_C4F_N3F_V3F */ - 1574, /* GL_T2F_V3F */ - 1576, /* GL_T4F_V4F */ - 1572, /* GL_T2F_C4UB_V3F */ - 1570, /* GL_T2F_C3F_V3F */ - 1573, /* GL_T2F_N3F_V3F */ - 1571, /* GL_T2F_C4F_N3F_V3F */ - 1575, /* GL_T4F_C4F_N3F_V4F */ - 140, /* GL_CLIP_PLANE0 */ - 141, /* GL_CLIP_PLANE1 */ - 142, /* GL_CLIP_PLANE2 */ - 143, /* GL_CLIP_PLANE3 */ - 144, /* GL_CLIP_PLANE4 */ - 145, /* GL_CLIP_PLANE5 */ - 682, /* GL_LIGHT0 */ - 683, /* GL_LIGHT1 */ - 684, /* GL_LIGHT2 */ - 685, /* GL_LIGHT3 */ - 686, /* GL_LIGHT4 */ - 687, /* GL_LIGHT5 */ - 688, /* GL_LIGHT6 */ - 689, /* GL_LIGHT7 */ - 606, /* GL_HINT_BIT */ - 278, /* GL_CONSTANT_COLOR */ - 1066, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 273, /* GL_CONSTANT_ALPHA */ - 1064, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - 76, /* GL_BLEND_COLOR */ - 589, /* GL_FUNC_ADD */ - 954, /* GL_MIN */ - 858, /* GL_MAX */ - 81, /* GL_BLEND_EQUATION */ - 593, /* GL_FUNC_SUBTRACT */ - 591, /* GL_FUNC_REVERSE_SUBTRACT */ - 281, /* GL_CONVOLUTION_1D */ - 282, /* GL_CONVOLUTION_2D */ - 1440, /* GL_SEPARABLE_2D */ - 285, /* GL_CONVOLUTION_BORDER_MODE */ - 289, /* GL_CONVOLUTION_FILTER_SCALE */ - 287, /* GL_CONVOLUTION_FILTER_BIAS */ - 1322, /* GL_REDUCE */ - 291, /* GL_CONVOLUTION_FORMAT */ - 295, /* GL_CONVOLUTION_WIDTH */ - 293, /* GL_CONVOLUTION_HEIGHT */ - 874, /* GL_MAX_CONVOLUTION_WIDTH */ - 872, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1224, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1220, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1215, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1211, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1222, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1218, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1213, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1209, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 607, /* GL_HISTOGRAM */ - 1274, /* GL_PROXY_HISTOGRAM */ - 623, /* GL_HISTOGRAM_WIDTH */ - 613, /* GL_HISTOGRAM_FORMAT */ - 619, /* GL_HISTOGRAM_RED_SIZE */ - 615, /* GL_HISTOGRAM_GREEN_SIZE */ - 610, /* GL_HISTOGRAM_BLUE_SIZE */ - 608, /* GL_HISTOGRAM_ALPHA_SIZE */ - 617, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 621, /* GL_HISTOGRAM_SINK */ - 955, /* GL_MINMAX */ - 957, /* GL_MINMAX_FORMAT */ - 959, /* GL_MINMAX_SINK */ - 1577, /* GL_TABLE_TOO_LARGE_EXT */ - 1806, /* GL_UNSIGNED_BYTE_3_3_2 */ - 1818, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 1820, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 1813, /* GL_UNSIGNED_INT_8_8_8_8 */ - 1808, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1182, /* GL_POLYGON_OFFSET_FILL */ - 1181, /* GL_POLYGON_OFFSET_FACTOR */ - 1180, /* GL_POLYGON_OFFSET_BIAS */ - 1356, /* GL_RESCALE_NORMAL */ + 1455, /* GL_RGB */ + 1478, /* GL_RGBA */ + 778, /* GL_LUMINANCE */ + 799, /* GL_LUMINANCE_ALPHA */ + 74, /* GL_BITMAP */ + 1221, /* GL_POINT */ + 746, /* GL_LINE */ + 506, /* GL_FILL */ + 1415, /* GL_RENDER */ + 502, /* GL_FEEDBACK */ + 1539, /* GL_SELECT */ + 511, /* GL_FLAT */ + 1567, /* GL_SMOOTH */ + 725, /* GL_KEEP */ + 1448, /* GL_REPLACE */ + 676, /* GL_INCR */ + 357, /* GL_DECR */ + 1960, /* GL_VENDOR */ + 1445, /* GL_RENDERER */ + 1961, /* GL_VERSION */ + 495, /* GL_EXTENSIONS */ + 1503, /* GL_S */ + 1677, /* GL_T */ + 1391, /* GL_R */ + 1374, /* GL_Q */ + 1076, /* GL_MODULATE */ + 356, /* GL_DECAL */ + 1834, /* GL_TEXTURE_ENV_MODE */ + 1833, /* GL_TEXTURE_ENV_COLOR */ + 1832, /* GL_TEXTURE_ENV */ + 496, /* GL_EYE_LINEAR */ + 1127, /* GL_OBJECT_LINEAR */ + 1593, /* GL_SPHERE_MAP */ + 1837, /* GL_TEXTURE_GEN_MODE */ + 1129, /* GL_OBJECT_PLANE */ + 497, /* GL_EYE_PLANE */ + 1091, /* GL_NEAREST */ + 747, /* GL_LINEAR */ + 1095, /* GL_NEAREST_MIPMAP_NEAREST */ + 752, /* GL_LINEAR_MIPMAP_NEAREST */ + 1094, /* GL_NEAREST_MIPMAP_LINEAR */ + 751, /* GL_LINEAR_MIPMAP_LINEAR */ + 1860, /* GL_TEXTURE_MAG_FILTER */ + 1869, /* GL_TEXTURE_MIN_FILTER */ + 1888, /* GL_TEXTURE_WRAP_S */ + 1889, /* GL_TEXTURE_WRAP_T */ + 138, /* GL_CLAMP */ + 1447, /* GL_REPEAT */ + 1265, /* GL_POLYGON_OFFSET_UNITS */ + 1264, /* GL_POLYGON_OFFSET_POINT */ + 1263, /* GL_POLYGON_OFFSET_LINE */ + 1392, /* GL_R3_G3_B2 */ + 1957, /* GL_V2F */ + 1958, /* GL_V3F */ + 135, /* GL_C4UB_V2F */ + 136, /* GL_C4UB_V3F */ + 133, /* GL_C3F_V3F */ + 1088, /* GL_N3F_V3F */ + 134, /* GL_C4F_N3F_V3F */ + 1682, /* GL_T2F_V3F */ + 1684, /* GL_T4F_V4F */ + 1680, /* GL_T2F_C4UB_V3F */ + 1678, /* GL_T2F_C3F_V3F */ + 1681, /* GL_T2F_N3F_V3F */ + 1679, /* GL_T2F_C4F_N3F_V3F */ + 1683, /* GL_T4F_C4F_N3F_V4F */ + 151, /* GL_CLIP_PLANE0 */ + 152, /* GL_CLIP_PLANE1 */ + 153, /* GL_CLIP_PLANE2 */ + 154, /* GL_CLIP_PLANE3 */ + 155, /* GL_CLIP_PLANE4 */ + 156, /* GL_CLIP_PLANE5 */ + 731, /* GL_LIGHT0 */ + 732, /* GL_LIGHT1 */ + 733, /* GL_LIGHT2 */ + 734, /* GL_LIGHT3 */ + 735, /* GL_LIGHT4 */ + 736, /* GL_LIGHT5 */ + 737, /* GL_LIGHT6 */ + 738, /* GL_LIGHT7 */ + 651, /* GL_HINT_BIT */ + 290, /* GL_CONSTANT_COLOR */ + 1140, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 285, /* GL_CONSTANT_ALPHA */ + 1138, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 77, /* GL_BLEND_COLOR */ + 628, /* GL_FUNC_ADD */ + 1023, /* GL_MIN */ + 916, /* GL_MAX */ + 84, /* GL_BLEND_EQUATION */ + 634, /* GL_FUNC_SUBTRACT */ + 631, /* GL_FUNC_REVERSE_SUBTRACT */ + 293, /* GL_CONVOLUTION_1D */ + 294, /* GL_CONVOLUTION_2D */ + 1542, /* GL_SEPARABLE_2D */ + 297, /* GL_CONVOLUTION_BORDER_MODE */ + 301, /* GL_CONVOLUTION_FILTER_SCALE */ + 299, /* GL_CONVOLUTION_FILTER_BIAS */ + 1405, /* GL_REDUCE */ + 303, /* GL_CONVOLUTION_FORMAT */ + 307, /* GL_CONVOLUTION_WIDTH */ + 305, /* GL_CONVOLUTION_HEIGHT */ + 933, /* GL_MAX_CONVOLUTION_WIDTH */ + 931, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1304, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1300, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1295, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1291, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1302, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1298, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1293, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1289, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 652, /* GL_HISTOGRAM */ + 1357, /* GL_PROXY_HISTOGRAM */ + 668, /* GL_HISTOGRAM_WIDTH */ + 658, /* GL_HISTOGRAM_FORMAT */ + 664, /* GL_HISTOGRAM_RED_SIZE */ + 660, /* GL_HISTOGRAM_GREEN_SIZE */ + 655, /* GL_HISTOGRAM_BLUE_SIZE */ + 653, /* GL_HISTOGRAM_ALPHA_SIZE */ + 662, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 666, /* GL_HISTOGRAM_SINK */ + 1024, /* GL_MINMAX */ + 1026, /* GL_MINMAX_FORMAT */ + 1028, /* GL_MINMAX_SINK */ + 1685, /* GL_TABLE_TOO_LARGE_EXT */ + 1930, /* GL_UNSIGNED_BYTE_3_3_2 */ + 1946, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 1949, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 1940, /* GL_UNSIGNED_INT_8_8_8_8 */ + 1932, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1262, /* GL_POLYGON_OFFSET_FILL */ + 1261, /* GL_POLYGON_OFFSET_FACTOR */ + 1260, /* GL_POLYGON_OFFSET_BIAS */ + 1451, /* GL_RESCALE_NORMAL */ 36, /* GL_ALPHA4 */ 38, /* GL_ALPHA8 */ 32, /* GL_ALPHA12 */ 34, /* GL_ALPHA16 */ - 738, /* GL_LUMINANCE4 */ - 744, /* GL_LUMINANCE8 */ - 728, /* GL_LUMINANCE12 */ - 734, /* GL_LUMINANCE16 */ - 739, /* GL_LUMINANCE4_ALPHA4 */ - 742, /* GL_LUMINANCE6_ALPHA2 */ - 745, /* GL_LUMINANCE8_ALPHA8 */ - 731, /* GL_LUMINANCE12_ALPHA4 */ - 729, /* GL_LUMINANCE12_ALPHA12 */ - 735, /* GL_LUMINANCE16_ALPHA16 */ - 648, /* GL_INTENSITY */ - 653, /* GL_INTENSITY4 */ - 655, /* GL_INTENSITY8 */ - 649, /* GL_INTENSITY12 */ - 651, /* GL_INTENSITY16 */ - 1369, /* GL_RGB2_EXT */ - 1370, /* GL_RGB4 */ - 1373, /* GL_RGB5 */ - 1377, /* GL_RGB8 */ - 1361, /* GL_RGB10 */ - 1365, /* GL_RGB12 */ - 1367, /* GL_RGB16 */ - 1384, /* GL_RGBA2 */ - 1386, /* GL_RGBA4 */ - 1374, /* GL_RGB5_A1 */ - 1390, /* GL_RGBA8 */ - 1362, /* GL_RGB10_A2 */ - 1380, /* GL_RGBA12 */ - 1382, /* GL_RGBA16 */ - 1753, /* GL_TEXTURE_RED_SIZE */ - 1723, /* GL_TEXTURE_GREEN_SIZE */ - 1661, /* GL_TEXTURE_BLUE_SIZE */ - 1648, /* GL_TEXTURE_ALPHA_SIZE */ - 1736, /* GL_TEXTURE_LUMINANCE_SIZE */ - 1727, /* GL_TEXTURE_INTENSITY_SIZE */ - 1354, /* GL_REPLACE_EXT */ - 1278, /* GL_PROXY_TEXTURE_1D */ - 1281, /* GL_PROXY_TEXTURE_2D */ - 1760, /* GL_TEXTURE_TOO_LARGE_EXT */ - 1748, /* GL_TEXTURE_PRIORITY */ - 1755, /* GL_TEXTURE_RESIDENT */ - 1651, /* GL_TEXTURE_BINDING_1D */ - 1653, /* GL_TEXTURE_BINDING_2D */ - 1655, /* GL_TEXTURE_BINDING_3D */ - 1102, /* GL_PACK_SKIP_IMAGES */ - 1098, /* GL_PACK_IMAGE_HEIGHT */ - 1799, /* GL_UNPACK_SKIP_IMAGES */ - 1796, /* GL_UNPACK_IMAGE_HEIGHT */ - 1647, /* GL_TEXTURE_3D */ - 1284, /* GL_PROXY_TEXTURE_3D */ - 1710, /* GL_TEXTURE_DEPTH */ - 1763, /* GL_TEXTURE_WRAP_R */ - 859, /* GL_MAX_3D_TEXTURE_SIZE */ - 1833, /* GL_VERTEX_ARRAY */ - 1032, /* GL_NORMAL_ARRAY */ - 149, /* GL_COLOR_ARRAY */ - 633, /* GL_INDEX_ARRAY */ - 1688, /* GL_TEXTURE_COORD_ARRAY */ - 460, /* GL_EDGE_FLAG_ARRAY */ - 1839, /* GL_VERTEX_ARRAY_SIZE */ - 1841, /* GL_VERTEX_ARRAY_TYPE */ - 1840, /* GL_VERTEX_ARRAY_STRIDE */ - 1037, /* GL_NORMAL_ARRAY_TYPE */ - 1036, /* GL_NORMAL_ARRAY_STRIDE */ - 153, /* GL_COLOR_ARRAY_SIZE */ - 155, /* GL_COLOR_ARRAY_TYPE */ - 154, /* GL_COLOR_ARRAY_STRIDE */ - 638, /* GL_INDEX_ARRAY_TYPE */ - 637, /* GL_INDEX_ARRAY_STRIDE */ - 1692, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 1694, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 1693, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 464, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 1838, /* GL_VERTEX_ARRAY_POINTER */ - 1035, /* GL_NORMAL_ARRAY_POINTER */ - 152, /* GL_COLOR_ARRAY_POINTER */ - 636, /* GL_INDEX_ARRAY_POINTER */ - 1691, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 463, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1011, /* GL_MULTISAMPLE */ - 1414, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1416, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1421, /* GL_SAMPLE_COVERAGE */ - 1418, /* GL_SAMPLE_BUFFERS */ - 1409, /* GL_SAMPLES */ - 1425, /* GL_SAMPLE_COVERAGE_VALUE */ - 1423, /* GL_SAMPLE_COVERAGE_INVERT */ - 196, /* GL_COLOR_MATRIX */ - 198, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 868, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1207, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1203, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1198, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1194, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1205, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1201, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1196, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1192, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1671, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1285, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1673, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - 80, /* GL_BLEND_DST_RGB */ - 89, /* GL_BLEND_SRC_RGB */ - 79, /* GL_BLEND_DST_ALPHA */ - 88, /* GL_BLEND_SRC_ALPHA */ - 202, /* GL_COLOR_TABLE */ - 1217, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1200, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1273, /* GL_PROXY_COLOR_TABLE */ - 1277, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1276, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - 226, /* GL_COLOR_TABLE_SCALE */ - 206, /* GL_COLOR_TABLE_BIAS */ - 211, /* GL_COLOR_TABLE_FORMAT */ - 228, /* GL_COLOR_TABLE_WIDTH */ - 223, /* GL_COLOR_TABLE_RED_SIZE */ - 214, /* GL_COLOR_TABLE_GREEN_SIZE */ - 208, /* GL_COLOR_TABLE_BLUE_SIZE */ - 203, /* GL_COLOR_TABLE_ALPHA_SIZE */ - 220, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - 217, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + 789, /* GL_LUMINANCE4 */ + 795, /* GL_LUMINANCE8 */ + 779, /* GL_LUMINANCE12 */ + 785, /* GL_LUMINANCE16 */ + 790, /* GL_LUMINANCE4_ALPHA4 */ + 793, /* GL_LUMINANCE6_ALPHA2 */ + 796, /* GL_LUMINANCE8_ALPHA8 */ + 782, /* GL_LUMINANCE12_ALPHA4 */ + 780, /* GL_LUMINANCE12_ALPHA12 */ + 786, /* GL_LUMINANCE16_ALPHA16 */ + 695, /* GL_INTENSITY */ + 700, /* GL_INTENSITY4 */ + 702, /* GL_INTENSITY8 */ + 696, /* GL_INTENSITY12 */ + 698, /* GL_INTENSITY16 */ + 1464, /* GL_RGB2_EXT */ + 1465, /* GL_RGB4 */ + 1468, /* GL_RGB5 */ + 1475, /* GL_RGB8 */ + 1456, /* GL_RGB10 */ + 1460, /* GL_RGB12 */ + 1462, /* GL_RGB16 */ + 1483, /* GL_RGBA2 */ + 1485, /* GL_RGBA4 */ + 1471, /* GL_RGB5_A1 */ + 1490, /* GL_RGBA8 */ + 1457, /* GL_RGB10_A2 */ + 1479, /* GL_RGBA12 */ + 1481, /* GL_RGBA16 */ + 1876, /* GL_TEXTURE_RED_SIZE */ + 1845, /* GL_TEXTURE_GREEN_SIZE */ + 1772, /* GL_TEXTURE_BLUE_SIZE */ + 1757, /* GL_TEXTURE_ALPHA_SIZE */ + 1858, /* GL_TEXTURE_LUMINANCE_SIZE */ + 1849, /* GL_TEXTURE_INTENSITY_SIZE */ + 1449, /* GL_REPLACE_EXT */ + 1361, /* GL_PROXY_TEXTURE_1D */ + 1364, /* GL_PROXY_TEXTURE_2D */ + 1883, /* GL_TEXTURE_TOO_LARGE_EXT */ + 1871, /* GL_TEXTURE_PRIORITY */ + 1878, /* GL_TEXTURE_RESIDENT */ + 1760, /* GL_TEXTURE_BINDING_1D */ + 1762, /* GL_TEXTURE_BINDING_2D */ + 1764, /* GL_TEXTURE_BINDING_3D */ + 1176, /* GL_PACK_SKIP_IMAGES */ + 1172, /* GL_PACK_IMAGE_HEIGHT */ + 1923, /* GL_UNPACK_SKIP_IMAGES */ + 1920, /* GL_UNPACK_IMAGE_HEIGHT */ + 1755, /* GL_TEXTURE_3D */ + 1367, /* GL_PROXY_TEXTURE_3D */ + 1829, /* GL_TEXTURE_DEPTH */ + 1886, /* GL_TEXTURE_WRAP_R */ + 917, /* GL_MAX_3D_TEXTURE_SIZE */ + 1962, /* GL_VERTEX_ARRAY */ + 1103, /* GL_NORMAL_ARRAY */ + 160, /* GL_COLOR_ARRAY */ + 680, /* GL_INDEX_ARRAY */ + 1799, /* GL_TEXTURE_COORD_ARRAY */ + 480, /* GL_EDGE_FLAG_ARRAY */ + 1968, /* GL_VERTEX_ARRAY_SIZE */ + 1970, /* GL_VERTEX_ARRAY_TYPE */ + 1969, /* GL_VERTEX_ARRAY_STRIDE */ + 1108, /* GL_NORMAL_ARRAY_TYPE */ + 1107, /* GL_NORMAL_ARRAY_STRIDE */ + 164, /* GL_COLOR_ARRAY_SIZE */ + 166, /* GL_COLOR_ARRAY_TYPE */ + 165, /* GL_COLOR_ARRAY_STRIDE */ + 685, /* GL_INDEX_ARRAY_TYPE */ + 684, /* GL_INDEX_ARRAY_STRIDE */ + 1803, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 1805, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 1804, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 484, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 1967, /* GL_VERTEX_ARRAY_POINTER */ + 1106, /* GL_NORMAL_ARRAY_POINTER */ + 163, /* GL_COLOR_ARRAY_POINTER */ + 683, /* GL_INDEX_ARRAY_POINTER */ + 1802, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 483, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1081, /* GL_MULTISAMPLE */ + 1516, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1518, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1523, /* GL_SAMPLE_COVERAGE */ + 1520, /* GL_SAMPLE_BUFFERS */ + 1511, /* GL_SAMPLES */ + 1527, /* GL_SAMPLE_COVERAGE_VALUE */ + 1525, /* GL_SAMPLE_COVERAGE_INVERT */ + 208, /* GL_COLOR_MATRIX */ + 210, /* GL_COLOR_MATRIX_STACK_DEPTH */ + 927, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1287, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1283, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1278, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1274, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1285, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1281, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1276, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1272, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 1782, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1368, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 1784, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 82, /* GL_BLEND_DST_RGB */ + 96, /* GL_BLEND_SRC_RGB */ + 80, /* GL_BLEND_DST_ALPHA */ + 94, /* GL_BLEND_SRC_ALPHA */ + 214, /* GL_COLOR_TABLE */ + 1297, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1280, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1356, /* GL_PROXY_COLOR_TABLE */ + 1360, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1359, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 238, /* GL_COLOR_TABLE_SCALE */ + 218, /* GL_COLOR_TABLE_BIAS */ + 223, /* GL_COLOR_TABLE_FORMAT */ + 240, /* GL_COLOR_TABLE_WIDTH */ + 235, /* GL_COLOR_TABLE_RED_SIZE */ + 226, /* GL_COLOR_TABLE_GREEN_SIZE */ + 220, /* GL_COLOR_TABLE_BLUE_SIZE */ + 215, /* GL_COLOR_TABLE_ALPHA_SIZE */ + 232, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + 229, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 71, /* GL_BGR */ 72, /* GL_BGRA */ - 882, /* GL_MAX_ELEMENTS_VERTICES */ - 881, /* GL_MAX_ELEMENTS_INDICES */ - 1726, /* GL_TEXTURE_INDEX_SIZE_EXT */ - 146, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1164, /* GL_POINT_SIZE_MIN */ - 1160, /* GL_POINT_SIZE_MAX */ - 1154, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1150, /* GL_POINT_DISTANCE_ATTENUATION */ - 128, /* GL_CLAMP_TO_BORDER */ - 131, /* GL_CLAMP_TO_EDGE */ - 1747, /* GL_TEXTURE_MIN_LOD */ - 1745, /* GL_TEXTURE_MAX_LOD */ - 1650, /* GL_TEXTURE_BASE_LEVEL */ - 1744, /* GL_TEXTURE_MAX_LEVEL */ - 626, /* GL_IGNORE_BORDER_HP */ - 277, /* GL_CONSTANT_BORDER_HP */ - 1355, /* GL_REPLICATE_BORDER_HP */ - 283, /* GL_CONVOLUTION_BORDER_COLOR */ - 1061, /* GL_OCCLUSION_TEST_HP */ - 1062, /* GL_OCCLUSION_TEST_RESULT_HP */ - 700, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1665, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1667, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1669, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1670, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1668, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1666, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 863, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 864, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1227, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1229, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1226, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1228, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 1734, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 1735, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 1733, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 595, /* GL_GENERATE_MIPMAP */ - 596, /* GL_GENERATE_MIPMAP_HINT */ - 533, /* GL_FOG_OFFSET_SGIX */ - 534, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1679, /* GL_TEXTURE_COMPARE_SGIX */ - 1678, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 1730, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 1722, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 361, /* GL_DEPTH_COMPONENT16 */ - 364, /* GL_DEPTH_COMPONENT24 */ - 367, /* GL_DEPTH_COMPONENT32 */ - 307, /* GL_CULL_VERTEX_EXT */ - 309, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 308, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 1897, /* GL_WRAP_BORDER_SUN */ - 1672, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 693, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1456, /* GL_SINGLE_COLOR */ - 1442, /* GL_SEPARATE_SPECULAR_COLOR */ - 1451, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 544, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 545, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 552, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 547, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 543, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 542, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 546, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 553, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 565, /* GL_FRAMEBUFFER_DEFAULT */ - 581, /* GL_FRAMEBUFFER_UNDEFINED */ - 374, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 632, /* GL_INDEX */ - 1805, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 1821, /* GL_UNSIGNED_SHORT_5_6_5 */ - 1822, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 1819, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 1817, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 1814, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 1812, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 1742, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 1743, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 1741, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 962, /* GL_MIRRORED_REPEAT */ - 1397, /* GL_RGB_S3TC */ - 1372, /* GL_RGB4_S3TC */ - 1395, /* GL_RGBA_S3TC */ - 1389, /* GL_RGBA4_S3TC */ - 1393, /* GL_RGBA_DXT5_S3TC */ - 1387, /* GL_RGBA4_DXT5_S3TC */ - 265, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 260, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 261, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 262, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1023, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1022, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 701, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 520, /* GL_FOG_COORDINATE_SOURCE */ - 512, /* GL_FOG_COORD */ - 536, /* GL_FRAGMENT_DEPTH */ - 313, /* GL_CURRENT_FOG_COORD */ - 519, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 518, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 517, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 514, /* GL_FOG_COORDINATE_ARRAY */ - 200, /* GL_COLOR_SUM */ - 333, /* GL_CURRENT_SECONDARY_COLOR */ - 1434, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1436, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1435, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1433, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1430, /* GL_SECONDARY_COLOR_ARRAY */ - 331, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + 942, /* GL_MAX_ELEMENTS_VERTICES */ + 941, /* GL_MAX_ELEMENTS_INDICES */ + 1848, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 157, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + 1243, /* GL_POINT_SIZE_MIN */ + 1239, /* GL_POINT_SIZE_MAX */ + 1228, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1224, /* GL_POINT_DISTANCE_ATTENUATION */ + 139, /* GL_CLAMP_TO_BORDER */ + 142, /* GL_CLAMP_TO_EDGE */ + 1870, /* GL_TEXTURE_MIN_LOD */ + 1868, /* GL_TEXTURE_MAX_LOD */ + 1759, /* GL_TEXTURE_BASE_LEVEL */ + 1867, /* GL_TEXTURE_MAX_LEVEL */ + 671, /* GL_IGNORE_BORDER_HP */ + 289, /* GL_CONSTANT_BORDER_HP */ + 1450, /* GL_REPLICATE_BORDER_HP */ + 295, /* GL_CONVOLUTION_BORDER_COLOR */ + 1135, /* GL_OCCLUSION_TEST_HP */ + 1136, /* GL_OCCLUSION_TEST_RESULT_HP */ + 749, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1776, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1778, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1780, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 1781, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1779, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1777, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 922, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 923, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1307, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1309, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1306, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1308, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 1856, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 1857, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 1855, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 637, /* GL_GENERATE_MIPMAP */ + 638, /* GL_GENERATE_MIPMAP_HINT */ + 555, /* GL_FOG_OFFSET_SGIX */ + 556, /* GL_FOG_OFFSET_VALUE_SGIX */ + 1790, /* GL_TEXTURE_COMPARE_SGIX */ + 1789, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 1852, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 1844, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 377, /* GL_DEPTH_COMPONENT16 */ + 381, /* GL_DEPTH_COMPONENT24 */ + 385, /* GL_DEPTH_COMPONENT32 */ + 320, /* GL_CULL_VERTEX_EXT */ + 322, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 321, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2032, /* GL_WRAP_BORDER_SUN */ + 1783, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 742, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1560, /* GL_SINGLE_COLOR */ + 1544, /* GL_SEPARATE_SPECULAR_COLOR */ + 1555, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 567, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 568, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 577, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 570, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 566, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 565, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 569, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 578, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 595, /* GL_FRAMEBUFFER_DEFAULT */ + 619, /* GL_FRAMEBUFFER_UNDEFINED */ + 393, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 679, /* GL_INDEX */ + 1929, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 1950, /* GL_UNSIGNED_SHORT_5_6_5 */ + 1951, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 1947, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 1944, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 1941, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 1938, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 1865, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 1866, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 1864, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1031, /* GL_MIRRORED_REPEAT */ + 1498, /* GL_RGB_S3TC */ + 1467, /* GL_RGB4_S3TC */ + 1496, /* GL_RGBA_S3TC */ + 1489, /* GL_RGBA4_S3TC */ + 1494, /* GL_RGBA_DXT5_S3TC */ + 1486, /* GL_RGBA4_DXT5_S3TC */ + 277, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + 272, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + 273, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + 274, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + 1093, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1092, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 750, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 542, /* GL_FOG_COORDINATE_SOURCE */ + 534, /* GL_FOG_COORD */ + 558, /* GL_FRAGMENT_DEPTH */ + 326, /* GL_CURRENT_FOG_COORD */ + 541, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 540, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 539, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 536, /* GL_FOG_COORDINATE_ARRAY */ + 212, /* GL_COLOR_SUM */ + 347, /* GL_CURRENT_SECONDARY_COLOR */ + 1536, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1538, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1537, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1535, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1532, /* GL_SECONDARY_COLOR_ARRAY */ + 345, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 28, /* GL_ALIASED_POINT_SIZE_RANGE */ 27, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1579, /* GL_TEXTURE0 */ - 1581, /* GL_TEXTURE1 */ - 1603, /* GL_TEXTURE2 */ - 1625, /* GL_TEXTURE3 */ - 1631, /* GL_TEXTURE4 */ - 1633, /* GL_TEXTURE5 */ - 1635, /* GL_TEXTURE6 */ - 1637, /* GL_TEXTURE7 */ - 1639, /* GL_TEXTURE8 */ - 1641, /* GL_TEXTURE9 */ - 1582, /* GL_TEXTURE10 */ - 1584, /* GL_TEXTURE11 */ - 1586, /* GL_TEXTURE12 */ - 1588, /* GL_TEXTURE13 */ - 1590, /* GL_TEXTURE14 */ - 1592, /* GL_TEXTURE15 */ - 1594, /* GL_TEXTURE16 */ - 1596, /* GL_TEXTURE17 */ - 1598, /* GL_TEXTURE18 */ - 1600, /* GL_TEXTURE19 */ - 1604, /* GL_TEXTURE20 */ - 1606, /* GL_TEXTURE21 */ - 1608, /* GL_TEXTURE22 */ - 1610, /* GL_TEXTURE23 */ - 1612, /* GL_TEXTURE24 */ - 1614, /* GL_TEXTURE25 */ - 1616, /* GL_TEXTURE26 */ - 1618, /* GL_TEXTURE27 */ - 1620, /* GL_TEXTURE28 */ - 1622, /* GL_TEXTURE29 */ - 1626, /* GL_TEXTURE30 */ - 1628, /* GL_TEXTURE31 */ + 1687, /* GL_TEXTURE0 */ + 1689, /* GL_TEXTURE1 */ + 1711, /* GL_TEXTURE2 */ + 1733, /* GL_TEXTURE3 */ + 1739, /* GL_TEXTURE4 */ + 1741, /* GL_TEXTURE5 */ + 1743, /* GL_TEXTURE6 */ + 1745, /* GL_TEXTURE7 */ + 1747, /* GL_TEXTURE8 */ + 1749, /* GL_TEXTURE9 */ + 1690, /* GL_TEXTURE10 */ + 1692, /* GL_TEXTURE11 */ + 1694, /* GL_TEXTURE12 */ + 1696, /* GL_TEXTURE13 */ + 1698, /* GL_TEXTURE14 */ + 1700, /* GL_TEXTURE15 */ + 1702, /* GL_TEXTURE16 */ + 1704, /* GL_TEXTURE17 */ + 1706, /* GL_TEXTURE18 */ + 1708, /* GL_TEXTURE19 */ + 1712, /* GL_TEXTURE20 */ + 1714, /* GL_TEXTURE21 */ + 1716, /* GL_TEXTURE22 */ + 1718, /* GL_TEXTURE23 */ + 1720, /* GL_TEXTURE24 */ + 1722, /* GL_TEXTURE25 */ + 1724, /* GL_TEXTURE26 */ + 1726, /* GL_TEXTURE27 */ + 1728, /* GL_TEXTURE28 */ + 1730, /* GL_TEXTURE29 */ + 1734, /* GL_TEXTURE30 */ + 1736, /* GL_TEXTURE31 */ 18, /* GL_ACTIVE_TEXTURE */ - 134, /* GL_CLIENT_ACTIVE_TEXTURE */ - 937, /* GL_MAX_TEXTURE_UNITS */ - 1782, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 1785, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 1787, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 1779, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1561, /* GL_SUBTRACT */ - 922, /* GL_MAX_RENDERBUFFER_SIZE */ - 248, /* GL_COMPRESSED_ALPHA */ - 252, /* GL_COMPRESSED_LUMINANCE */ - 253, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 250, /* GL_COMPRESSED_INTENSITY */ - 256, /* GL_COMPRESSED_RGB */ - 257, /* GL_COMPRESSED_RGBA */ - 1686, /* GL_TEXTURE_COMPRESSION_HINT */ - 1751, /* GL_TEXTURE_RECTANGLE_ARB */ - 1658, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - 1288, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - 920, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - 373, /* GL_DEPTH_STENCIL */ - 1809, /* GL_UNSIGNED_INT_24_8 */ - 933, /* GL_MAX_TEXTURE_LOD_BIAS */ - 1740, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 934, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 1716, /* GL_TEXTURE_FILTER_CONTROL */ - 1731, /* GL_TEXTURE_LOD_BIAS */ - 233, /* GL_COMBINE4 */ - 927, /* GL_MAX_SHININESS_NV */ - 928, /* GL_MAX_SPOT_EXPONENT_NV */ - 630, /* GL_INCR_WRAP */ - 344, /* GL_DECR_WRAP */ - 982, /* GL_MODELVIEW1_ARB */ - 1038, /* GL_NORMAL_MAP */ - 1327, /* GL_REFLECTION_MAP */ - 1695, /* GL_TEXTURE_CUBE_MAP */ - 1656, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 1703, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 1697, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 1705, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 1699, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 1707, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 1701, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1286, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 876, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1017, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 528, /* GL_FOG_DISTANCE_MODE_NV */ - 479, /* GL_EYE_RADIAL_NV */ - 478, /* GL_EYE_PLANE_ABSOLUTE_NV */ - 232, /* GL_COMBINE */ - 239, /* GL_COMBINE_RGB */ - 234, /* GL_COMBINE_ALPHA */ - 1398, /* GL_RGB_SCALE */ + 145, /* GL_CLIENT_ACTIVE_TEXTURE */ + 1001, /* GL_MAX_TEXTURE_UNITS */ + 1906, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 1909, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 1911, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 1903, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1669, /* GL_SUBTRACT */ + 984, /* GL_MAX_RENDERBUFFER_SIZE */ + 260, /* GL_COMPRESSED_ALPHA */ + 264, /* GL_COMPRESSED_LUMINANCE */ + 265, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + 262, /* GL_COMPRESSED_INTENSITY */ + 268, /* GL_COMPRESSED_RGB */ + 269, /* GL_COMPRESSED_RGBA */ + 1797, /* GL_TEXTURE_COMPRESSION_HINT */ + 1874, /* GL_TEXTURE_RECTANGLE_ARB */ + 1769, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + 1371, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + 982, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + 392, /* GL_DEPTH_STENCIL */ + 1934, /* GL_UNSIGNED_INT_24_8 */ + 996, /* GL_MAX_TEXTURE_LOD_BIAS */ + 1863, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 998, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 1835, /* GL_TEXTURE_FILTER_CONTROL */ + 1853, /* GL_TEXTURE_LOD_BIAS */ + 245, /* GL_COMBINE4 */ + 990, /* GL_MAX_SHININESS_NV */ + 991, /* GL_MAX_SPOT_EXPONENT_NV */ + 677, /* GL_INCR_WRAP */ + 358, /* GL_DECR_WRAP */ + 1051, /* GL_MODELVIEW1_ARB */ + 1109, /* GL_NORMAL_MAP */ + 1410, /* GL_REFLECTION_MAP */ + 1807, /* GL_TEXTURE_CUBE_MAP */ + 1766, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 1819, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 1809, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 1822, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 1812, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 1825, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 1815, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1369, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 935, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1087, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 550, /* GL_FOG_DISTANCE_MODE_NV */ + 499, /* GL_EYE_RADIAL_NV */ + 498, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 244, /* GL_COMBINE */ + 251, /* GL_COMBINE_RGB */ + 246, /* GL_COMBINE_ALPHA */ + 1499, /* GL_RGB_SCALE */ 24, /* GL_ADD_SIGNED */ - 659, /* GL_INTERPOLATE */ - 272, /* GL_CONSTANT */ - 1233, /* GL_PRIMARY_COLOR */ - 1230, /* GL_PREVIOUS */ - 1471, /* GL_SOURCE0_RGB */ - 1477, /* GL_SOURCE1_RGB */ - 1483, /* GL_SOURCE2_RGB */ - 1487, /* GL_SOURCE3_RGB_NV */ - 1468, /* GL_SOURCE0_ALPHA */ - 1474, /* GL_SOURCE1_ALPHA */ - 1480, /* GL_SOURCE2_ALPHA */ - 1486, /* GL_SOURCE3_ALPHA_NV */ - 1075, /* GL_OPERAND0_RGB */ - 1081, /* GL_OPERAND1_RGB */ - 1087, /* GL_OPERAND2_RGB */ - 1091, /* GL_OPERAND3_RGB_NV */ - 1072, /* GL_OPERAND0_ALPHA */ - 1078, /* GL_OPERAND1_ALPHA */ - 1084, /* GL_OPERAND2_ALPHA */ - 1090, /* GL_OPERAND3_ALPHA_NV */ - 109, /* GL_BUFFER_OBJECT_APPLE */ - 1834, /* GL_VERTEX_ARRAY_BINDING */ - 1749, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 1750, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 1901, /* GL_YCBCR_422_APPLE */ - 1823, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 1825, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 1759, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1552, /* GL_STORAGE_PRIVATE_APPLE */ - 1551, /* GL_STORAGE_CACHED_APPLE */ - 1553, /* GL_STORAGE_SHARED_APPLE */ - 1458, /* GL_SLICE_ACCUM_SUN */ - 1296, /* GL_QUAD_MESH_SUN */ - 1791, /* GL_TRIANGLE_MESH_SUN */ - 1873, /* GL_VERTEX_PROGRAM_ARB */ - 1884, /* GL_VERTEX_STATE_PROGRAM_NV */ - 1860, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 1866, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 1868, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 1870, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 335, /* GL_CURRENT_VERTEX_ATTRIB */ - 1247, /* GL_PROGRAM_LENGTH_ARB */ - 1261, /* GL_PROGRAM_STRING_ARB */ - 1004, /* GL_MODELVIEW_PROJECTION_NV */ - 625, /* GL_IDENTITY_NV */ - 673, /* GL_INVERSE_NV */ - 1784, /* GL_TRANSPOSE_NV */ - 674, /* GL_INVERSE_TRANSPOSE_NV */ - 906, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 905, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 812, /* GL_MATRIX0_NV */ - 824, /* GL_MATRIX1_NV */ - 836, /* GL_MATRIX2_NV */ - 840, /* GL_MATRIX3_NV */ - 842, /* GL_MATRIX4_NV */ - 844, /* GL_MATRIX5_NV */ - 846, /* GL_MATRIX6_NV */ - 848, /* GL_MATRIX7_NV */ - 319, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 316, /* GL_CURRENT_MATRIX_ARB */ - 1876, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - 1879, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1259, /* GL_PROGRAM_PARAMETER_NV */ - 1864, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1263, /* GL_PROGRAM_TARGET_NV */ - 1260, /* GL_PROGRAM_RESIDENT_NV */ - 1768, /* GL_TRACK_MATRIX_NV */ - 1769, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 1874, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1241, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 357, /* GL_DEPTH_CLAMP */ - 1842, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 1849, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 1850, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 1851, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 1852, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 1853, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 1854, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 1855, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 1856, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 1857, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 1843, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 1844, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 1845, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 1846, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 1847, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 1848, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 760, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 767, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 768, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 769, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 770, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 771, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 772, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 773, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 774, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 775, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 761, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 762, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 763, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 764, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 765, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 766, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 787, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 794, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 795, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 796, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 797, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 798, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 799, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1240, /* GL_PROGRAM_BINDING_ARB */ - 801, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 802, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 788, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 789, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 790, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 791, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 792, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 793, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 1684, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 1681, /* GL_TEXTURE_COMPRESSED */ - 1043, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 270, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 952, /* GL_MAX_VERTEX_UNITS_ARB */ + 706, /* GL_INTERPOLATE */ + 284, /* GL_CONSTANT */ + 1313, /* GL_PRIMARY_COLOR */ + 1310, /* GL_PREVIOUS */ + 1575, /* GL_SOURCE0_RGB */ + 1581, /* GL_SOURCE1_RGB */ + 1587, /* GL_SOURCE2_RGB */ + 1591, /* GL_SOURCE3_RGB_NV */ + 1572, /* GL_SOURCE0_ALPHA */ + 1578, /* GL_SOURCE1_ALPHA */ + 1584, /* GL_SOURCE2_ALPHA */ + 1590, /* GL_SOURCE3_ALPHA_NV */ + 1149, /* GL_OPERAND0_RGB */ + 1155, /* GL_OPERAND1_RGB */ + 1161, /* GL_OPERAND2_RGB */ + 1165, /* GL_OPERAND3_RGB_NV */ + 1146, /* GL_OPERAND0_ALPHA */ + 1152, /* GL_OPERAND1_ALPHA */ + 1158, /* GL_OPERAND2_ALPHA */ + 1164, /* GL_OPERAND3_ALPHA_NV */ + 120, /* GL_BUFFER_OBJECT_APPLE */ + 1963, /* GL_VERTEX_ARRAY_BINDING */ + 1872, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 1873, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2037, /* GL_YCBCR_422_APPLE */ + 1952, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 1954, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 1882, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1660, /* GL_STORAGE_PRIVATE_APPLE */ + 1659, /* GL_STORAGE_CACHED_APPLE */ + 1661, /* GL_STORAGE_SHARED_APPLE */ + 1562, /* GL_SLICE_ACCUM_SUN */ + 1379, /* GL_QUAD_MESH_SUN */ + 1915, /* GL_TRIANGLE_MESH_SUN */ + 2002, /* GL_VERTEX_PROGRAM_ARB */ + 2013, /* GL_VERTEX_STATE_PROGRAM_NV */ + 1989, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 1995, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 1997, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 1999, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 349, /* GL_CURRENT_VERTEX_ATTRIB */ + 1329, /* GL_PROGRAM_LENGTH_ARB */ + 1343, /* GL_PROGRAM_STRING_ARB */ + 1074, /* GL_MODELVIEW_PROJECTION_NV */ + 670, /* GL_IDENTITY_NV */ + 722, /* GL_INVERSE_NV */ + 1908, /* GL_TRANSPOSE_NV */ + 723, /* GL_INVERSE_TRANSPOSE_NV */ + 968, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 967, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 863, /* GL_MATRIX0_NV */ + 875, /* GL_MATRIX1_NV */ + 887, /* GL_MATRIX2_NV */ + 891, /* GL_MATRIX3_NV */ + 893, /* GL_MATRIX4_NV */ + 895, /* GL_MATRIX5_NV */ + 897, /* GL_MATRIX6_NV */ + 899, /* GL_MATRIX7_NV */ + 332, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 329, /* GL_CURRENT_MATRIX_ARB */ + 2005, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + 2008, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1341, /* GL_PROGRAM_PARAMETER_NV */ + 1993, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1345, /* GL_PROGRAM_TARGET_NV */ + 1342, /* GL_PROGRAM_RESIDENT_NV */ + 1892, /* GL_TRACK_MATRIX_NV */ + 1893, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2003, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1323, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 373, /* GL_DEPTH_CLAMP */ + 1971, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 1978, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 1979, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 1980, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 1981, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 1982, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 1983, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 1984, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 1985, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 1986, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 1972, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 1973, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 1974, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 1975, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 1976, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 1977, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 811, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 818, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 819, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 820, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 821, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 822, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 823, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 824, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 825, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 826, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 812, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 813, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 814, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 815, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 816, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 817, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 838, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 845, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 846, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 847, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 848, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 849, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 850, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1322, /* GL_PROGRAM_BINDING_ARB */ + 852, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 853, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 839, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 840, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 841, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 842, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 843, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 844, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 1795, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 1792, /* GL_TEXTURE_COMPRESSED */ + 1115, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 282, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 1018, /* GL_MAX_VERTEX_UNITS_ARB */ 22, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 1896, /* GL_WEIGHT_SUM_UNITY_ARB */ - 1872, /* GL_VERTEX_BLEND_ARB */ - 337, /* GL_CURRENT_WEIGHT_ARB */ - 1895, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 1894, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 1893, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 1892, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 1889, /* GL_WEIGHT_ARRAY_ARB */ - 387, /* GL_DOT3_RGB */ - 388, /* GL_DOT3_RGBA */ - 264, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 259, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1012, /* GL_MULTISAMPLE_3DFX */ - 1419, /* GL_SAMPLE_BUFFERS_3DFX */ - 1410, /* GL_SAMPLES_3DFX */ - 993, /* GL_MODELVIEW2_ARB */ - 996, /* GL_MODELVIEW3_ARB */ - 997, /* GL_MODELVIEW4_ARB */ - 998, /* GL_MODELVIEW5_ARB */ - 999, /* GL_MODELVIEW6_ARB */ - 1000, /* GL_MODELVIEW7_ARB */ - 1001, /* GL_MODELVIEW8_ARB */ - 1002, /* GL_MODELVIEW9_ARB */ - 972, /* GL_MODELVIEW10_ARB */ - 973, /* GL_MODELVIEW11_ARB */ - 974, /* GL_MODELVIEW12_ARB */ - 975, /* GL_MODELVIEW13_ARB */ - 976, /* GL_MODELVIEW14_ARB */ - 977, /* GL_MODELVIEW15_ARB */ - 978, /* GL_MODELVIEW16_ARB */ - 979, /* GL_MODELVIEW17_ARB */ - 980, /* GL_MODELVIEW18_ARB */ - 981, /* GL_MODELVIEW19_ARB */ - 983, /* GL_MODELVIEW20_ARB */ - 984, /* GL_MODELVIEW21_ARB */ - 985, /* GL_MODELVIEW22_ARB */ - 986, /* GL_MODELVIEW23_ARB */ - 987, /* GL_MODELVIEW24_ARB */ - 988, /* GL_MODELVIEW25_ARB */ - 989, /* GL_MODELVIEW26_ARB */ - 990, /* GL_MODELVIEW27_ARB */ - 991, /* GL_MODELVIEW28_ARB */ - 992, /* GL_MODELVIEW29_ARB */ - 994, /* GL_MODELVIEW30_ARB */ - 995, /* GL_MODELVIEW31_ARB */ - 392, /* GL_DOT3_RGB_EXT */ - 390, /* GL_DOT3_RGBA_EXT */ - 966, /* GL_MIRROR_CLAMP_EXT */ - 969, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1007, /* GL_MODULATE_ADD_ATI */ - 1008, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1009, /* GL_MODULATE_SUBTRACT_ATI */ - 1902, /* GL_YCBCR_MESA */ - 1099, /* GL_PACK_INVERT_MESA */ - 340, /* GL_DEBUG_OBJECT_MESA */ - 341, /* GL_DEBUG_PRINT_MESA */ - 339, /* GL_DEBUG_ASSERT_MESA */ - 111, /* GL_BUFFER_SIZE */ - 113, /* GL_BUFFER_USAGE */ - 117, /* GL_BUMP_ROT_MATRIX_ATI */ - 118, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - 116, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - 120, /* GL_BUMP_TEX_UNITS_ATI */ - 452, /* GL_DUDV_ATI */ - 451, /* GL_DU8DV8_ATI */ - 115, /* GL_BUMP_ENVMAP_ATI */ - 119, /* GL_BUMP_TARGET_ATI */ - 1519, /* GL_STENCIL_BACK_FUNC */ - 1517, /* GL_STENCIL_BACK_FAIL */ - 1521, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1523, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 537, /* GL_FRAGMENT_PROGRAM_ARB */ - 1238, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1266, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1265, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1250, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1256, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1255, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 895, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 918, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 917, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 908, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 914, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 913, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 878, /* GL_MAX_DRAW_BUFFERS */ - 396, /* GL_DRAW_BUFFER0 */ - 399, /* GL_DRAW_BUFFER1 */ - 420, /* GL_DRAW_BUFFER2 */ - 423, /* GL_DRAW_BUFFER3 */ - 426, /* GL_DRAW_BUFFER4 */ - 429, /* GL_DRAW_BUFFER5 */ - 432, /* GL_DRAW_BUFFER6 */ - 435, /* GL_DRAW_BUFFER7 */ - 438, /* GL_DRAW_BUFFER8 */ - 441, /* GL_DRAW_BUFFER9 */ - 400, /* GL_DRAW_BUFFER10 */ - 403, /* GL_DRAW_BUFFER11 */ - 406, /* GL_DRAW_BUFFER12 */ - 409, /* GL_DRAW_BUFFER13 */ - 412, /* GL_DRAW_BUFFER14 */ - 415, /* GL_DRAW_BUFFER15 */ - 82, /* GL_BLEND_EQUATION_ALPHA */ - 857, /* GL_MATRIX_PALETTE_ARB */ - 889, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 892, /* GL_MAX_PALETTE_MATRICES_ARB */ - 322, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 851, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 317, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 853, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 855, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 854, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 852, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 1711, /* GL_TEXTURE_DEPTH_SIZE */ - 380, /* GL_DEPTH_TEXTURE_MODE */ - 1676, /* GL_TEXTURE_COMPARE_MODE */ - 1674, /* GL_TEXTURE_COMPARE_FUNC */ - 243, /* GL_COMPARE_R_TO_TEXTURE */ - 1171, /* GL_POINT_SPRITE */ - 297, /* GL_COORD_REPLACE */ - 1175, /* GL_POINT_SPRITE_R_MODE_NV */ - 1300, /* GL_QUERY_COUNTER_BITS */ - 324, /* GL_CURRENT_QUERY */ - 1303, /* GL_QUERY_RESULT */ - 1305, /* GL_QUERY_RESULT_AVAILABLE */ - 946, /* GL_MAX_VERTEX_ATTRIBS */ - 1862, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 378, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 377, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 929, /* GL_MAX_TEXTURE_COORDS */ - 931, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1243, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1245, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1244, /* GL_PROGRAM_FORMAT_ARB */ - 1761, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 355, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 354, /* GL_DEPTH_BOUNDS_EXT */ + 2031, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2001, /* GL_VERTEX_BLEND_ARB */ + 351, /* GL_CURRENT_WEIGHT_ARB */ + 2029, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2027, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2025, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2023, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2018, /* GL_WEIGHT_ARRAY_ARB */ + 407, /* GL_DOT3_RGB */ + 408, /* GL_DOT3_RGBA */ + 276, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 271, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 1082, /* GL_MULTISAMPLE_3DFX */ + 1521, /* GL_SAMPLE_BUFFERS_3DFX */ + 1512, /* GL_SAMPLES_3DFX */ + 1062, /* GL_MODELVIEW2_ARB */ + 1065, /* GL_MODELVIEW3_ARB */ + 1066, /* GL_MODELVIEW4_ARB */ + 1067, /* GL_MODELVIEW5_ARB */ + 1068, /* GL_MODELVIEW6_ARB */ + 1069, /* GL_MODELVIEW7_ARB */ + 1070, /* GL_MODELVIEW8_ARB */ + 1071, /* GL_MODELVIEW9_ARB */ + 1041, /* GL_MODELVIEW10_ARB */ + 1042, /* GL_MODELVIEW11_ARB */ + 1043, /* GL_MODELVIEW12_ARB */ + 1044, /* GL_MODELVIEW13_ARB */ + 1045, /* GL_MODELVIEW14_ARB */ + 1046, /* GL_MODELVIEW15_ARB */ + 1047, /* GL_MODELVIEW16_ARB */ + 1048, /* GL_MODELVIEW17_ARB */ + 1049, /* GL_MODELVIEW18_ARB */ + 1050, /* GL_MODELVIEW19_ARB */ + 1052, /* GL_MODELVIEW20_ARB */ + 1053, /* GL_MODELVIEW21_ARB */ + 1054, /* GL_MODELVIEW22_ARB */ + 1055, /* GL_MODELVIEW23_ARB */ + 1056, /* GL_MODELVIEW24_ARB */ + 1057, /* GL_MODELVIEW25_ARB */ + 1058, /* GL_MODELVIEW26_ARB */ + 1059, /* GL_MODELVIEW27_ARB */ + 1060, /* GL_MODELVIEW28_ARB */ + 1061, /* GL_MODELVIEW29_ARB */ + 1063, /* GL_MODELVIEW30_ARB */ + 1064, /* GL_MODELVIEW31_ARB */ + 412, /* GL_DOT3_RGB_EXT */ + 410, /* GL_DOT3_RGBA_EXT */ + 1035, /* GL_MIRROR_CLAMP_EXT */ + 1038, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1077, /* GL_MODULATE_ADD_ATI */ + 1078, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1079, /* GL_MODULATE_SUBTRACT_ATI */ + 2038, /* GL_YCBCR_MESA */ + 1173, /* GL_PACK_INVERT_MESA */ + 354, /* GL_DEBUG_OBJECT_MESA */ + 355, /* GL_DEBUG_PRINT_MESA */ + 353, /* GL_DEBUG_ASSERT_MESA */ + 122, /* GL_BUFFER_SIZE */ + 124, /* GL_BUFFER_USAGE */ + 128, /* GL_BUMP_ROT_MATRIX_ATI */ + 129, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + 127, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + 131, /* GL_BUMP_TEX_UNITS_ATI */ + 472, /* GL_DUDV_ATI */ + 471, /* GL_DU8DV8_ATI */ + 126, /* GL_BUMP_ENVMAP_ATI */ + 130, /* GL_BUMP_TARGET_ATI */ + 1117, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1320, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1624, /* GL_STENCIL_BACK_FUNC */ + 1622, /* GL_STENCIL_BACK_FAIL */ + 1626, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1628, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 559, /* GL_FRAGMENT_PROGRAM_ARB */ + 1318, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1348, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1347, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1332, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1338, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1337, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 957, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 980, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 979, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 970, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 976, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 975, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 938, /* GL_MAX_DRAW_BUFFERS */ + 416, /* GL_DRAW_BUFFER0 */ + 419, /* GL_DRAW_BUFFER1 */ + 440, /* GL_DRAW_BUFFER2 */ + 443, /* GL_DRAW_BUFFER3 */ + 446, /* GL_DRAW_BUFFER4 */ + 449, /* GL_DRAW_BUFFER5 */ + 452, /* GL_DRAW_BUFFER6 */ + 455, /* GL_DRAW_BUFFER7 */ + 458, /* GL_DRAW_BUFFER8 */ + 461, /* GL_DRAW_BUFFER9 */ + 420, /* GL_DRAW_BUFFER10 */ + 423, /* GL_DRAW_BUFFER11 */ + 426, /* GL_DRAW_BUFFER12 */ + 429, /* GL_DRAW_BUFFER13 */ + 432, /* GL_DRAW_BUFFER14 */ + 435, /* GL_DRAW_BUFFER15 */ + 85, /* GL_BLEND_EQUATION_ALPHA */ + 914, /* GL_MATRIX_PALETTE_ARB */ + 950, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 953, /* GL_MAX_PALETTE_MATRICES_ARB */ + 335, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 902, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 330, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 907, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 911, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 909, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 905, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 1830, /* GL_TEXTURE_DEPTH_SIZE */ + 400, /* GL_DEPTH_TEXTURE_MODE */ + 1787, /* GL_TEXTURE_COMPARE_MODE */ + 1785, /* GL_TEXTURE_COMPARE_FUNC */ + 255, /* GL_COMPARE_R_TO_TEXTURE */ + 1250, /* GL_POINT_SPRITE */ + 309, /* GL_COORD_REPLACE */ + 1255, /* GL_POINT_SPRITE_R_MODE_NV */ + 1383, /* GL_QUERY_COUNTER_BITS */ + 338, /* GL_CURRENT_QUERY */ + 1386, /* GL_QUERY_RESULT */ + 1388, /* GL_QUERY_RESULT_AVAILABLE */ + 1011, /* GL_MAX_VERTEX_ATTRIBS */ + 1991, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 398, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 397, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 992, /* GL_MAX_TEXTURE_COORDS */ + 994, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1325, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1327, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1326, /* GL_PROGRAM_FORMAT_ARB */ + 1884, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 371, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 370, /* GL_DEPTH_BOUNDS_EXT */ 53, /* GL_ARRAY_BUFFER */ - 465, /* GL_ELEMENT_ARRAY_BUFFER */ + 485, /* GL_ELEMENT_ARRAY_BUFFER */ 54, /* GL_ARRAY_BUFFER_BINDING */ - 466, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 1836, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1033, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - 150, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 634, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 1689, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 461, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1431, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 515, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 1890, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 1858, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1246, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 901, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1252, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 910, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1264, /* GL_PROGRAM_TEMPORARIES_ARB */ - 916, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1254, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 912, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1258, /* GL_PROGRAM_PARAMETERS_ARB */ - 915, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1253, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 911, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1239, /* GL_PROGRAM_ATTRIBS_ARB */ - 896, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1251, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 909, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1237, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 894, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1249, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 907, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 902, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 898, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1267, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 1781, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1317, /* GL_READ_ONLY */ - 1898, /* GL_WRITE_ONLY */ - 1319, /* GL_READ_WRITE */ - 102, /* GL_BUFFER_ACCESS */ - 105, /* GL_BUFFER_MAPPED */ - 107, /* GL_BUFFER_MAP_POINTER */ - 1767, /* GL_TIME_ELAPSED_EXT */ - 811, /* GL_MATRIX0_ARB */ - 823, /* GL_MATRIX1_ARB */ - 835, /* GL_MATRIX2_ARB */ - 839, /* GL_MATRIX3_ARB */ - 841, /* GL_MATRIX4_ARB */ - 843, /* GL_MATRIX5_ARB */ - 845, /* GL_MATRIX6_ARB */ - 847, /* GL_MATRIX7_ARB */ - 849, /* GL_MATRIX8_ARB */ - 850, /* GL_MATRIX9_ARB */ - 813, /* GL_MATRIX10_ARB */ - 814, /* GL_MATRIX11_ARB */ - 815, /* GL_MATRIX12_ARB */ - 816, /* GL_MATRIX13_ARB */ - 817, /* GL_MATRIX14_ARB */ - 818, /* GL_MATRIX15_ARB */ - 819, /* GL_MATRIX16_ARB */ - 820, /* GL_MATRIX17_ARB */ - 821, /* GL_MATRIX18_ARB */ - 822, /* GL_MATRIX19_ARB */ - 825, /* GL_MATRIX20_ARB */ - 826, /* GL_MATRIX21_ARB */ - 827, /* GL_MATRIX22_ARB */ - 828, /* GL_MATRIX23_ARB */ - 829, /* GL_MATRIX24_ARB */ - 830, /* GL_MATRIX25_ARB */ - 831, /* GL_MATRIX26_ARB */ - 832, /* GL_MATRIX27_ARB */ - 833, /* GL_MATRIX28_ARB */ - 834, /* GL_MATRIX29_ARB */ - 837, /* GL_MATRIX30_ARB */ - 838, /* GL_MATRIX31_ARB */ - 1556, /* GL_STREAM_DRAW */ - 1558, /* GL_STREAM_READ */ - 1554, /* GL_STREAM_COPY */ - 1510, /* GL_STATIC_DRAW */ - 1512, /* GL_STATIC_READ */ - 1508, /* GL_STATIC_COPY */ - 455, /* GL_DYNAMIC_DRAW */ - 457, /* GL_DYNAMIC_READ */ - 453, /* GL_DYNAMIC_COPY */ - 1139, /* GL_PIXEL_PACK_BUFFER */ - 1143, /* GL_PIXEL_UNPACK_BUFFER */ - 1140, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1144, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - 348, /* GL_DEPTH24_STENCIL8 */ - 1757, /* GL_TEXTURE_STENCIL_SIZE */ - 1709, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 897, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 900, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 904, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 903, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 860, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - 1547, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 486, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 1965, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1104, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 161, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + 681, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 1800, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 481, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1533, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 537, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2019, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 1987, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1328, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 963, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1334, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 972, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1346, /* GL_PROGRAM_TEMPORARIES_ARB */ + 978, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1336, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 974, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1340, /* GL_PROGRAM_PARAMETERS_ARB */ + 977, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1335, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 973, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1319, /* GL_PROGRAM_ATTRIBS_ARB */ + 958, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1333, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 971, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1317, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 956, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1331, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 969, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 964, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 960, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1349, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 1905, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1400, /* GL_READ_ONLY */ + 2033, /* GL_WRITE_ONLY */ + 1402, /* GL_READ_WRITE */ + 110, /* GL_BUFFER_ACCESS */ + 114, /* GL_BUFFER_MAPPED */ + 117, /* GL_BUFFER_MAP_POINTER */ + 1891, /* GL_TIME_ELAPSED_EXT */ + 862, /* GL_MATRIX0_ARB */ + 874, /* GL_MATRIX1_ARB */ + 886, /* GL_MATRIX2_ARB */ + 890, /* GL_MATRIX3_ARB */ + 892, /* GL_MATRIX4_ARB */ + 894, /* GL_MATRIX5_ARB */ + 896, /* GL_MATRIX6_ARB */ + 898, /* GL_MATRIX7_ARB */ + 900, /* GL_MATRIX8_ARB */ + 901, /* GL_MATRIX9_ARB */ + 864, /* GL_MATRIX10_ARB */ + 865, /* GL_MATRIX11_ARB */ + 866, /* GL_MATRIX12_ARB */ + 867, /* GL_MATRIX13_ARB */ + 868, /* GL_MATRIX14_ARB */ + 869, /* GL_MATRIX15_ARB */ + 870, /* GL_MATRIX16_ARB */ + 871, /* GL_MATRIX17_ARB */ + 872, /* GL_MATRIX18_ARB */ + 873, /* GL_MATRIX19_ARB */ + 876, /* GL_MATRIX20_ARB */ + 877, /* GL_MATRIX21_ARB */ + 878, /* GL_MATRIX22_ARB */ + 879, /* GL_MATRIX23_ARB */ + 880, /* GL_MATRIX24_ARB */ + 881, /* GL_MATRIX25_ARB */ + 882, /* GL_MATRIX26_ARB */ + 883, /* GL_MATRIX27_ARB */ + 884, /* GL_MATRIX28_ARB */ + 885, /* GL_MATRIX29_ARB */ + 888, /* GL_MATRIX30_ARB */ + 889, /* GL_MATRIX31_ARB */ + 1664, /* GL_STREAM_DRAW */ + 1666, /* GL_STREAM_READ */ + 1662, /* GL_STREAM_COPY */ + 1614, /* GL_STATIC_DRAW */ + 1616, /* GL_STATIC_READ */ + 1612, /* GL_STATIC_COPY */ + 475, /* GL_DYNAMIC_DRAW */ + 477, /* GL_DYNAMIC_READ */ + 473, /* GL_DYNAMIC_COPY */ + 1213, /* GL_PIXEL_PACK_BUFFER */ + 1217, /* GL_PIXEL_UNPACK_BUFFER */ + 1214, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1218, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 362, /* GL_DEPTH24_STENCIL8 */ + 1880, /* GL_TEXTURE_STENCIL_SIZE */ + 1828, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 959, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 962, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 966, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 965, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 919, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + 1655, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 17, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 967, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1412, /* GL_SAMPLES_PASSED */ - 110, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - 104, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1330, /* GL_RELEASED_APPLE */ - 1887, /* GL_VOLATILE_APPLE */ - 1358, /* GL_RETAINED_APPLE */ - 1794, /* GL_UNDEFINED_APPLE */ - 1290, /* GL_PURGEABLE_APPLE */ - 538, /* GL_FRAGMENT_SHADER */ - 1882, /* GL_VERTEX_SHADER */ - 1257, /* GL_PROGRAM_OBJECT_ARB */ - 1445, /* GL_SHADER_OBJECT_ARB */ - 885, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 950, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 944, /* GL_MAX_VARYING_FLOATS */ - 948, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 870, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1059, /* GL_OBJECT_TYPE_ARB */ - 1447, /* GL_SHADER_TYPE */ - 503, /* GL_FLOAT_VEC2 */ - 505, /* GL_FLOAT_VEC3 */ - 507, /* GL_FLOAT_VEC4 */ - 662, /* GL_INT_VEC2 */ - 664, /* GL_INT_VEC3 */ - 666, /* GL_INT_VEC4 */ - 94, /* GL_BOOL */ - 96, /* GL_BOOL_VEC2 */ - 98, /* GL_BOOL_VEC3 */ - 100, /* GL_BOOL_VEC4 */ - 491, /* GL_FLOAT_MAT2 */ - 495, /* GL_FLOAT_MAT3 */ - 499, /* GL_FLOAT_MAT4 */ - 1403, /* GL_SAMPLER_1D */ - 1405, /* GL_SAMPLER_2D */ - 1407, /* GL_SAMPLER_3D */ - 1408, /* GL_SAMPLER_CUBE */ - 1404, /* GL_SAMPLER_1D_SHADOW */ - 1406, /* GL_SAMPLER_2D_SHADOW */ - 493, /* GL_FLOAT_MAT2x3 */ - 494, /* GL_FLOAT_MAT2x4 */ - 497, /* GL_FLOAT_MAT3x2 */ - 498, /* GL_FLOAT_MAT3x4 */ - 501, /* GL_FLOAT_MAT4x2 */ - 502, /* GL_FLOAT_MAT4x3 */ - 346, /* GL_DELETE_STATUS */ - 247, /* GL_COMPILE_STATUS */ - 718, /* GL_LINK_STATUS */ - 1830, /* GL_VALIDATE_STATUS */ - 646, /* GL_INFO_LOG_LENGTH */ + 1036, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1514, /* GL_SAMPLES_PASSED */ + 1237, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1236, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1235, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1073, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1352, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1862, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 121, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + 113, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + 1414, /* GL_RELEASED_APPLE */ + 2016, /* GL_VOLATILE_APPLE */ + 1453, /* GL_RETAINED_APPLE */ + 1918, /* GL_UNDEFINED_APPLE */ + 1373, /* GL_PURGEABLE_APPLE */ + 560, /* GL_FRAGMENT_SHADER */ + 2011, /* GL_VERTEX_SHADER */ + 1339, /* GL_PROGRAM_OBJECT_ARB */ + 1549, /* GL_SHADER_OBJECT_ARB */ + 945, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1015, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1008, /* GL_MAX_VARYING_FLOATS */ + 1013, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 929, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1133, /* GL_OBJECT_TYPE_ARB */ + 1551, /* GL_SHADER_TYPE */ + 525, /* GL_FLOAT_VEC2 */ + 527, /* GL_FLOAT_VEC3 */ + 529, /* GL_FLOAT_VEC4 */ + 710, /* GL_INT_VEC2 */ + 712, /* GL_INT_VEC3 */ + 714, /* GL_INT_VEC4 */ + 102, /* GL_BOOL */ + 104, /* GL_BOOL_VEC2 */ + 106, /* GL_BOOL_VEC3 */ + 108, /* GL_BOOL_VEC4 */ + 513, /* GL_FLOAT_MAT2 */ + 517, /* GL_FLOAT_MAT3 */ + 521, /* GL_FLOAT_MAT4 */ + 1504, /* GL_SAMPLER_1D */ + 1506, /* GL_SAMPLER_2D */ + 1508, /* GL_SAMPLER_3D */ + 1510, /* GL_SAMPLER_CUBE */ + 1505, /* GL_SAMPLER_1D_SHADOW */ + 1507, /* GL_SAMPLER_2D_SHADOW */ + 515, /* GL_FLOAT_MAT2x3 */ + 516, /* GL_FLOAT_MAT2x4 */ + 519, /* GL_FLOAT_MAT3x2 */ + 520, /* GL_FLOAT_MAT3x4 */ + 523, /* GL_FLOAT_MAT4x2 */ + 524, /* GL_FLOAT_MAT4x3 */ + 360, /* GL_DELETE_STATUS */ + 259, /* GL_COMPILE_STATUS */ + 767, /* GL_LINK_STATUS */ + 1959, /* GL_VALIDATE_STATUS */ + 693, /* GL_INFO_LOG_LENGTH */ 56, /* GL_ATTACHED_SHADERS */ 20, /* GL_ACTIVE_UNIFORMS */ 21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1446, /* GL_SHADER_SOURCE_LENGTH */ + 1550, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 540, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1449, /* GL_SHADING_LANGUAGE_VERSION */ - 323, /* GL_CURRENT_PROGRAM */ - 1108, /* GL_PALETTE4_RGB8_OES */ - 1110, /* GL_PALETTE4_RGBA8_OES */ - 1106, /* GL_PALETTE4_R5_G6_B5_OES */ - 1109, /* GL_PALETTE4_RGBA4_OES */ - 1107, /* GL_PALETTE4_RGB5_A1_OES */ - 1113, /* GL_PALETTE8_RGB8_OES */ - 1115, /* GL_PALETTE8_RGBA8_OES */ - 1111, /* GL_PALETTE8_R5_G6_B5_OES */ - 1114, /* GL_PALETTE8_RGBA4_OES */ - 1112, /* GL_PALETTE8_RGB5_A1_OES */ - 628, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - 627, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - 1815, /* GL_UNSIGNED_NORMALIZED */ - 1644, /* GL_TEXTURE_1D_ARRAY_EXT */ - 1279, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - 1646, /* GL_TEXTURE_2D_ARRAY_EXT */ - 1282, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - 1652, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - 1654, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - 1502, /* GL_SRGB */ - 1503, /* GL_SRGB8 */ - 1505, /* GL_SRGB_ALPHA */ - 1504, /* GL_SRGB8_ALPHA8 */ - 1462, /* GL_SLUMINANCE_ALPHA */ - 1461, /* GL_SLUMINANCE8_ALPHA8 */ - 1459, /* GL_SLUMINANCE */ - 1460, /* GL_SLUMINANCE8 */ - 268, /* GL_COMPRESSED_SRGB */ - 269, /* GL_COMPRESSED_SRGB_ALPHA */ - 266, /* GL_COMPRESSED_SLUMINANCE */ - 267, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 1778, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - 1773, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - 943, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - 1777, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - 1775, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - 1774, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - 1236, /* GL_PRIMITIVES_GENERATED_EXT */ - 1776, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - 1310, /* GL_RASTERIZER_DISCARD_EXT */ - 941, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - 942, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - 658, /* GL_INTERLEAVED_ATTRIBS_EXT */ - 1441, /* GL_SEPARATE_ATTRIBS_EXT */ - 1772, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - 1771, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - 1173, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 726, /* GL_LOWER_LEFT */ - 1827, /* GL_UPPER_LEFT */ - 1525, /* GL_STENCIL_BACK_REF */ - 1526, /* GL_STENCIL_BACK_VALUE_MASK */ - 1527, /* GL_STENCIL_BACK_WRITEMASK */ - 445, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1334, /* GL_RENDERBUFFER_BINDING */ - 1313, /* GL_READ_FRAMEBUFFER */ - 444, /* GL_DRAW_FRAMEBUFFER */ - 1314, /* GL_READ_FRAMEBUFFER_BINDING */ - 1345, /* GL_RENDERBUFFER_SAMPLES */ - 550, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 548, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 559, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 555, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 557, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 563, /* GL_FRAMEBUFFER_COMPLETE */ - 567, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 574, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 572, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 569, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 573, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 570, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 578, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 582, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 580, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 866, /* GL_MAX_COLOR_ATTACHMENTS */ - 156, /* GL_COLOR_ATTACHMENT0 */ - 158, /* GL_COLOR_ATTACHMENT1 */ - 172, /* GL_COLOR_ATTACHMENT2 */ - 174, /* GL_COLOR_ATTACHMENT3 */ - 176, /* GL_COLOR_ATTACHMENT4 */ - 178, /* GL_COLOR_ATTACHMENT5 */ - 180, /* GL_COLOR_ATTACHMENT6 */ - 182, /* GL_COLOR_ATTACHMENT7 */ - 184, /* GL_COLOR_ATTACHMENT8 */ - 186, /* GL_COLOR_ATTACHMENT9 */ - 159, /* GL_COLOR_ATTACHMENT10 */ - 161, /* GL_COLOR_ATTACHMENT11 */ - 163, /* GL_COLOR_ATTACHMENT12 */ - 165, /* GL_COLOR_ATTACHMENT13 */ - 167, /* GL_COLOR_ATTACHMENT14 */ - 169, /* GL_COLOR_ATTACHMENT15 */ - 350, /* GL_DEPTH_ATTACHMENT */ - 1515, /* GL_STENCIL_ATTACHMENT */ - 541, /* GL_FRAMEBUFFER */ - 1332, /* GL_RENDERBUFFER */ - 1348, /* GL_RENDERBUFFER_WIDTH */ - 1340, /* GL_RENDERBUFFER_HEIGHT */ - 1342, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1542, /* GL_STENCIL_INDEX_EXT */ - 1534, /* GL_STENCIL_INDEX1 */ - 1538, /* GL_STENCIL_INDEX4 */ - 1540, /* GL_STENCIL_INDEX8 */ - 1535, /* GL_STENCIL_INDEX16 */ - 1344, /* GL_RENDERBUFFER_RED_SIZE */ - 1339, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1336, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1333, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1337, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1347, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 576, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 924, /* GL_MAX_SAMPLES */ - 1307, /* GL_QUERY_WAIT_NV */ - 1302, /* GL_QUERY_NO_WAIT_NV */ - 1299, /* GL_QUERY_BY_REGION_WAIT_NV */ - 1298, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - 1294, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 487, /* GL_FIRST_VERTEX_CONVENTION */ - 677, /* GL_LAST_VERTEX_CONVENTION */ - 1271, /* GL_PROVOKING_VERTEX */ - 303, /* GL_COPY_READ_BUFFER */ - 304, /* GL_COPY_WRITE_BUFFER */ - 1396, /* GL_RGBA_SNORM */ - 1392, /* GL_RGBA8_SNORM */ - 1455, /* GL_SIGNED_NORMALIZED */ - 926, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1058, /* GL_OBJECT_TYPE */ - 1563, /* GL_SYNC_CONDITION */ - 1568, /* GL_SYNC_STATUS */ - 1565, /* GL_SYNC_FLAGS */ - 1564, /* GL_SYNC_FENCE */ - 1567, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 1803, /* GL_UNSIGNALED */ - 1454, /* GL_SIGNALED */ + 562, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1553, /* GL_SHADING_LANGUAGE_VERSION */ + 337, /* GL_CURRENT_PROGRAM */ + 1182, /* GL_PALETTE4_RGB8_OES */ + 1184, /* GL_PALETTE4_RGBA8_OES */ + 1180, /* GL_PALETTE4_R5_G6_B5_OES */ + 1183, /* GL_PALETTE4_RGBA4_OES */ + 1181, /* GL_PALETTE4_RGB5_A1_OES */ + 1187, /* GL_PALETTE8_RGB8_OES */ + 1189, /* GL_PALETTE8_RGBA8_OES */ + 1185, /* GL_PALETTE8_R5_G6_B5_OES */ + 1188, /* GL_PALETTE8_RGBA4_OES */ + 1186, /* GL_PALETTE8_RGB5_A1_OES */ + 675, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + 673, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + 1234, /* GL_POINT_SIZE_ARRAY_OES */ + 1806, /* GL_TEXTURE_CROP_RECT_OES */ + 903, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1233, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 1942, /* GL_UNSIGNED_NORMALIZED */ + 1752, /* GL_TEXTURE_1D_ARRAY_EXT */ + 1362, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + 1754, /* GL_TEXTURE_2D_ARRAY_EXT */ + 1365, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + 1761, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + 1763, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + 1606, /* GL_SRGB */ + 1607, /* GL_SRGB8 */ + 1609, /* GL_SRGB_ALPHA */ + 1608, /* GL_SRGB8_ALPHA8 */ + 1566, /* GL_SLUMINANCE_ALPHA */ + 1565, /* GL_SLUMINANCE8_ALPHA8 */ + 1563, /* GL_SLUMINANCE */ + 1564, /* GL_SLUMINANCE8 */ + 280, /* GL_COMPRESSED_SRGB */ + 281, /* GL_COMPRESSED_SRGB_ALPHA */ + 278, /* GL_COMPRESSED_SLUMINANCE */ + 279, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + 1902, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + 1897, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + 1007, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + 1901, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + 1899, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + 1898, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + 1316, /* GL_PRIMITIVES_GENERATED_EXT */ + 1900, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + 1393, /* GL_RASTERIZER_DISCARD_EXT */ + 1005, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + 1006, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + 705, /* GL_INTERLEAVED_ATTRIBS_EXT */ + 1543, /* GL_SEPARATE_ATTRIBS_EXT */ + 1896, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + 1895, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + 1252, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 775, /* GL_LOWER_LEFT */ + 1956, /* GL_UPPER_LEFT */ + 1630, /* GL_STENCIL_BACK_REF */ + 1631, /* GL_STENCIL_BACK_VALUE_MASK */ + 1632, /* GL_STENCIL_BACK_WRITEMASK */ + 465, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1419, /* GL_RENDERBUFFER_BINDING */ + 1396, /* GL_READ_FRAMEBUFFER */ + 464, /* GL_DRAW_FRAMEBUFFER */ + 1397, /* GL_READ_FRAMEBUFFER_BINDING */ + 1438, /* GL_RENDERBUFFER_SAMPLES */ + 574, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 571, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 586, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 581, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 584, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 592, /* GL_FRAMEBUFFER_COMPLETE */ + 597, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 609, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 606, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 601, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 607, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 603, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 614, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 620, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 618, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 925, /* GL_MAX_COLOR_ATTACHMENTS */ + 167, /* GL_COLOR_ATTACHMENT0 */ + 170, /* GL_COLOR_ATTACHMENT1 */ + 184, /* GL_COLOR_ATTACHMENT2 */ + 186, /* GL_COLOR_ATTACHMENT3 */ + 188, /* GL_COLOR_ATTACHMENT4 */ + 190, /* GL_COLOR_ATTACHMENT5 */ + 192, /* GL_COLOR_ATTACHMENT6 */ + 194, /* GL_COLOR_ATTACHMENT7 */ + 196, /* GL_COLOR_ATTACHMENT8 */ + 198, /* GL_COLOR_ATTACHMENT9 */ + 171, /* GL_COLOR_ATTACHMENT10 */ + 173, /* GL_COLOR_ATTACHMENT11 */ + 175, /* GL_COLOR_ATTACHMENT12 */ + 177, /* GL_COLOR_ATTACHMENT13 */ + 179, /* GL_COLOR_ATTACHMENT14 */ + 181, /* GL_COLOR_ATTACHMENT15 */ + 365, /* GL_DEPTH_ATTACHMENT */ + 1619, /* GL_STENCIL_ATTACHMENT */ + 564, /* GL_FRAMEBUFFER */ + 1416, /* GL_RENDERBUFFER */ + 1442, /* GL_RENDERBUFFER_WIDTH */ + 1429, /* GL_RENDERBUFFER_HEIGHT */ + 1432, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1650, /* GL_STENCIL_INDEX_EXT */ + 1639, /* GL_STENCIL_INDEX1 */ + 1644, /* GL_STENCIL_INDEX4 */ + 1647, /* GL_STENCIL_INDEX8 */ + 1640, /* GL_STENCIL_INDEX16 */ + 1436, /* GL_RENDERBUFFER_RED_SIZE */ + 1427, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1422, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1417, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1424, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1440, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 612, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 987, /* GL_MAX_SAMPLES */ + 1842, /* GL_TEXTURE_GEN_STR_OES */ + 648, /* GL_HALF_FLOAT_OES */ + 1470, /* GL_RGB565_OES */ + 776, /* GL_LOW_FLOAT */ + 1021, /* GL_MEDIUM_FLOAT */ + 649, /* GL_HIGH_FLOAT */ + 777, /* GL_LOW_INT */ + 1022, /* GL_MEDIUM_INT */ + 650, /* GL_HIGH_INT */ + 1933, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 709, /* GL_INT_10_10_10_2_OES */ + 1547, /* GL_SHADER_BINARY_FORMATS */ + 1118, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1548, /* GL_SHADER_COMPILER */ + 1017, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1010, /* GL_MAX_VARYING_VECTORS */ + 947, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1390, /* GL_QUERY_WAIT_NV */ + 1385, /* GL_QUERY_NO_WAIT_NV */ + 1382, /* GL_QUERY_BY_REGION_WAIT_NV */ + 1381, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + 1377, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 507, /* GL_FIRST_VERTEX_CONVENTION */ + 726, /* GL_LAST_VERTEX_CONVENTION */ + 1354, /* GL_PROVOKING_VERTEX */ + 316, /* GL_COPY_READ_BUFFER */ + 317, /* GL_COPY_WRITE_BUFFER */ + 1497, /* GL_RGBA_SNORM */ + 1493, /* GL_RGBA8_SNORM */ + 1559, /* GL_SIGNED_NORMALIZED */ + 989, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1132, /* GL_OBJECT_TYPE */ + 1671, /* GL_SYNC_CONDITION */ + 1676, /* GL_SYNC_STATUS */ + 1673, /* GL_SYNC_FLAGS */ + 1672, /* GL_SYNC_FENCE */ + 1675, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 1927, /* GL_UNSIGNALED */ + 1558, /* GL_SIGNALED */ 46, /* GL_ALREADY_SIGNALED */ - 1766, /* GL_TIMEOUT_EXPIRED */ - 271, /* GL_CONDITION_SATISFIED */ - 1888, /* GL_WAIT_FAILED */ - 472, /* GL_EVAL_BIT */ - 1311, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 720, /* GL_LIST_BIT */ - 1660, /* GL_TEXTURE_BIT */ - 1427, /* GL_SCISSOR_BIT */ + 1890, /* GL_TIMEOUT_EXPIRED */ + 283, /* GL_CONDITION_SATISFIED */ + 2017, /* GL_WAIT_FAILED */ + 492, /* GL_EVAL_BIT */ + 1394, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 769, /* GL_LIST_BIT */ + 1771, /* GL_TEXTURE_BIT */ + 1529, /* GL_SCISSOR_BIT */ 29, /* GL_ALL_ATTRIB_BITS */ - 1014, /* GL_MULTISAMPLE_BIT */ + 1084, /* GL_MULTISAMPLE_BIT */ 30, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; @@ -5279,7 +5581,7 @@ const char *_mesa_lookup_enum_by_nr( int nr ) } else { /* this is not re-entrant safe, no big deal here */ - sprintf(token_tmp, "0x%x", nr); + _mesa_snprintf(token_tmp, sizeof(token_tmp), "0x%x", nr); return token_tmp; } } diff --git a/src/mesa/es/main/es_generator.py b/src/mesa/main/es_generator.py index f736792deca..8f08a3a6f92 100644 --- a/src/mesa/es/main/es_generator.py +++ b/src/mesa/main/es_generator.py @@ -103,11 +103,13 @@ VersionSpecificValues = { 'description' : 'GLES1.1 functions', 'header' : 'GLES/gl.h', 'extheader' : 'GLES/glext.h', + 'shortname' : 'es1' }, 'GLES2.0': { 'description' : 'GLES2.0 functions', 'header' : 'GLES2/gl2.h', 'extheader' : 'GLES2/gl2ext.h', + 'shortname' : 'es2' } } @@ -164,6 +166,7 @@ if not VersionSpecificValues.has_key(version): # Grab the version-specific items we need to use versionHeader = VersionSpecificValues[version]['header'] versionExtHeader = VersionSpecificValues[version]['extheader'] +shortname = VersionSpecificValues[version]['shortname'] # If we get to here, we're good to go. The "version" parameter # directs GetDispatchedFunctions to only allow functions from @@ -206,11 +209,39 @@ extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); #include "main/compiler.h" #include "main/api_exec.h" +#include "main/remap.h" -#include "main/dispatch.h" +#ifdef IN_DRI_DRIVER +#define _GLAPI_USE_REMAP_TABLE +#endif + +#include "es/glapi/glapi-%s/glapi/glapitable.h" +#include "es/glapi/glapi-%s/glapi/glapioffsets.h" +#include "es/glapi/glapi-%s/glapi/glapidispatch.h" + +#if FEATURE_remap_table + +#define need_MESA_remap_table + +#include "es/glapi/glapi-%s/main/remap_helper.h" + +void +_mesa_init_remap_table_%s(void) +{ + _mesa_do_init_remap_table(_mesa_function_pool, + driDispatchRemapTable_size, + MESA_remap_table_functions); +} + +void +_mesa_map_static_functions_%s(void) +{ +} + +#endif typedef void (*_glapi_proc)(void); /* generic function pointer */ -""" +""" % (shortname, shortname, shortname, shortname, shortname, shortname); # Finally we get to the all-important functions print """/************************************************************* @@ -262,6 +293,7 @@ for funcName in keys: passthroughFuncName = "" passthroughDeclarationString = "" passthroughCallString = "" + prefixOverride = None variables = [] conversionCodeOutgoing = [] conversionCodeIncoming = [] @@ -280,6 +312,9 @@ for funcName in keys: funcPrefix = "_es_" aliasprefix = apiutil.AliasPrefix(funcName) alias = apiutil.ConversionFunction(funcName) + prefixOverride = apiutil.FunctionPrefix(funcName) + if prefixOverride != "_mesa_": + aliasprefix = apiutil.FunctionPrefix(funcName) if not alias: # There may still be a Mesa alias for the function if apiutil.Alias(funcName): @@ -667,9 +702,17 @@ for funcName in keys: # end for each function -print "void" -print "_mesa_init_exec_table(struct _glapi_table *exec)" -print "{" +print """ +struct _glapi_table * +_mesa_create_exec_table_%s(void) +{ + struct _glapi_table *exec; + exec = _mesa_alloc_dispatch_table(sizeof *exec); + if (exec == NULL) + return NULL; + +""" % shortname + for func in keys: prefix = "_es_" if func not in allSpecials else "_check_" for spec in apiutil.Categories(func): @@ -682,4 +725,6 @@ for func in keys: suffix = ext[0].split("_")[0] entry += suffix print " SET_%s(exec, %s%s);" % (entry, prefix, entry) +print "" +print " return exec;" print "}" diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 208069c1db5..4c8d4ccfa22 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -495,7 +495,6 @@ _mesa_enable_2_1_extensions(GLcontext *ctx) } - /** * Either enable or disable the named extension. * \return GL_TRUE for success, GL_FALSE if invalid extension name @@ -681,8 +680,8 @@ _mesa_init_extensions( GLcontext *ctx ) * Construct the GL_EXTENSIONS string. Called the first time that * glGetString(GL_EXTENSIONS) is called. */ -GLubyte * -_mesa_make_extension_string( GLcontext *ctx ) +static GLubyte * +compute_extensions( GLcontext *ctx ) { const char *extraExt = get_extension_override(ctx); GLuint extStrLen = 0; @@ -727,6 +726,206 @@ _mesa_make_extension_string( GLcontext *ctx ) return (GLubyte *) s; } +static size_t +append_extension(GLubyte **str, const char *ext) +{ + GLubyte *s = *str; + size_t len = strlen(ext); + + if (s) { + memcpy(s, ext, len); + s[len++] = ' '; + s[len] = '\0'; + + *str += len; + } + else { + len++; + } + + return len; +} + + +static size_t +make_extension_string_es1(const GLcontext *ctx, GLubyte *str) +{ + size_t len = 0; + + /* Core additions */ + len += append_extension(&str, "GL_OES_byte_coordinates"); + len += append_extension(&str, "GL_OES_fixed_point"); + len += append_extension(&str, "GL_OES_single_precision"); + len += append_extension(&str, "GL_OES_matrix_get"); + + /* 1.1 required extensions */ + len += append_extension(&str, "GL_OES_read_format"); + len += append_extension(&str, "GL_OES_compressed_paletted_texture"); + len += append_extension(&str, "GL_OES_point_size_array"); + len += append_extension(&str, "GL_OES_point_sprite"); + + /* 1.1 deprecated extensions */ + len += append_extension(&str, "GL_OES_query_matrix"); + +#if FEATURE_OES_draw_texture + if (ctx->Extensions.OES_draw_texture) + len += append_extension(&str, "GL_OES_draw_texture"); +#endif + + if (ctx->Extensions.EXT_blend_equation_separate) + len += append_extension(&str, "GL_OES_blend_equation_separate"); + if (ctx->Extensions.EXT_blend_func_separate) + len += append_extension(&str, "GL_OES_blend_func_separate"); + if (ctx->Extensions.EXT_blend_subtract) + len += append_extension(&str, "GL_OES_blend_subtract"); + + if (ctx->Extensions.EXT_stencil_wrap) + len += append_extension(&str, "GL_OES_stencil_wrap"); + + if (ctx->Extensions.ARB_texture_cube_map) + len += append_extension(&str, "GL_OES_texture_cube_map"); + if (ctx->Extensions.ARB_texture_env_crossbar) + len += append_extension(&str, "GL_OES_texture_env_crossbar"); + if (ctx->Extensions.ARB_texture_mirrored_repeat) + len += append_extension(&str, "GL_OES_texture_mirrored_repeat"); + + if (ctx->Extensions.ARB_framebuffer_object) { + len += append_extension(&str, "GL_OES_framebuffer_object"); + len += append_extension(&str, "GL_OES_depth24"); + len += append_extension(&str, "GL_OES_depth32"); + len += append_extension(&str, "GL_OES_fbo_render_mipmap"); + len += append_extension(&str, "GL_OES_rgb8_rgba8"); + len += append_extension(&str, "GL_OES_stencil1"); + len += append_extension(&str, "GL_OES_stencil4"); + len += append_extension(&str, "GL_OES_stencil8"); + } + + if (ctx->Extensions.EXT_vertex_array) + len += append_extension(&str, "GL_OES_element_index_uint"); + if (ctx->Extensions.ARB_vertex_buffer_object) + len += append_extension(&str, "GL_OES_mapbuffer"); + if (ctx->Extensions.EXT_texture_filter_anisotropic) + len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); + + /* some applications check this for NPOT support */ + if (ctx->Extensions.ARB_texture_non_power_of_two) + len += append_extension(&str, "GL_ARB_texture_non_power_of_two"); + + if (ctx->Extensions.EXT_texture_compression_s3tc) + len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); + if (ctx->Extensions.EXT_texture_lod_bias) + len += append_extension(&str, "GL_EXT_texture_lod_bias"); + if (ctx->Extensions.EXT_blend_minmax) + len += append_extension(&str, "GL_EXT_blend_minmax"); + if (ctx->Extensions.EXT_multi_draw_arrays) + len += append_extension(&str, "GL_EXT_multi_draw_arrays"); + +#if FEATURE_OES_EGL_image + if (ctx->Extensions.OES_EGL_image) + len += append_extension(&str, "GL_OES_EGL_image"); +#endif + + return len; +} + + +static GLubyte * +compute_extensions_es1(const GLcontext *ctx) +{ + GLubyte *s; + unsigned int len; + + len = make_extension_string_es1(ctx, NULL); + s = malloc(len + 1); + if (!s) + return NULL; + make_extension_string_es1(ctx, s); + + return s; +} + +static size_t +make_extension_string_es2(const GLcontext *ctx, GLubyte *str) +{ + size_t len = 0; + + len += append_extension(&str, "GL_OES_compressed_paletted_texture"); + + if (ctx->Extensions.ARB_framebuffer_object) { + len += append_extension(&str, "GL_OES_depth24"); + len += append_extension(&str, "GL_OES_depth32"); + len += append_extension(&str, "GL_OES_fbo_render_mipmap"); + len += append_extension(&str, "GL_OES_rgb8_rgba8"); + len += append_extension(&str, "GL_OES_stencil1"); + len += append_extension(&str, "GL_OES_stencil4"); + } + + if (ctx->Extensions.EXT_vertex_array) + len += append_extension(&str, "GL_OES_element_index_uint"); + if (ctx->Extensions.ARB_vertex_buffer_object) + len += append_extension(&str, "GL_OES_mapbuffer"); + + if (ctx->Extensions.EXT_texture3D) + len += append_extension(&str, "GL_OES_texture_3D"); + if (ctx->Extensions.ARB_texture_non_power_of_two) + len += append_extension(&str, "GL_OES_texture_npot"); + if (ctx->Extensions.EXT_texture_filter_anisotropic) + len += append_extension(&str, "GL_EXT_texture_filter_anisotropic"); + + len += append_extension(&str, "GL_EXT_texture_type_2_10_10_10_REV"); + if (ctx->Extensions.ARB_depth_texture) + len += append_extension(&str, "GL_OES_depth_texture"); + if (ctx->Extensions.EXT_packed_depth_stencil) + len += append_extension(&str, "GL_OES_packed_depth_stencil"); + if (ctx->Extensions.ARB_fragment_shader) + len += append_extension(&str, "GL_OES_standard_derivatives"); + + if (ctx->Extensions.EXT_texture_compression_s3tc) + len += append_extension(&str, "GL_EXT_texture_compression_dxt1"); + if (ctx->Extensions.EXT_blend_minmax) + len += append_extension(&str, "GL_EXT_blend_minmax"); + if (ctx->Extensions.EXT_multi_draw_arrays) + len += append_extension(&str, "GL_EXT_multi_draw_arrays"); + +#if FEATURE_OES_EGL_image + if (ctx->Extensions.OES_EGL_image) + len += append_extension(&str, "GL_OES_EGL_image"); +#endif + + return len; +} + +static GLubyte * +compute_extensions_es2(GLcontext *ctx) +{ + GLubyte *s; + unsigned int len; + + len = make_extension_string_es2(ctx, NULL); + s = malloc(len + 1); + if (!s) + return NULL; + make_extension_string_es2(ctx, s); + + return s; +} + + +GLubyte * +_mesa_make_extension_string(GLcontext *ctx) +{ + switch (ctx->API) { + case API_OPENGL: + return compute_extensions(ctx); + case API_OPENGLES2: + return compute_extensions_es2(ctx); + case API_OPENGLES: + return compute_extensions_es1(ctx); + default: + assert(0); + return NULL; + } +} /** * Return number of enabled extensions. diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 8d442466187..201a0232464 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -1110,7 +1110,22 @@ _mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples, renderbuffer_storage(target, internalFormat, width, height, samples); } +void GLAPIENTRY +_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height) +{ + switch (internalFormat) { + case GL_RGB565: + /* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + /* choose a closest format */ + internalFormat = GL_RGB5; + break; + default: + break; + } + renderbuffer_storage(target, internalFormat, width, height, 0); +} void GLAPIENTRY _mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params) diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index 28f75dfca79..40a18f83412 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -89,6 +89,10 @@ _mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples, GLsizei width, GLsizei height); extern void GLAPIENTRY +_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY _mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); extern void GLAPIENTRY diff --git a/src/mesa/main/get.h b/src/mesa/main/get.h index cc426fc0f61..47e549e396b 100644 --- a/src/mesa/main/get.h +++ b/src/mesa/main/get.h @@ -71,4 +71,27 @@ _mesa_GetStringi(GLenum name, GLuint index); extern GLenum GLAPIENTRY _mesa_GetError( void ); + +extern void GLAPIENTRY +_es1_GetBooleanv( GLenum pname, GLboolean *params ); + +extern void GLAPIENTRY +_es1_GetFloatv( GLenum pname, GLfloat *params ); + +extern void GLAPIENTRY +_es1_GetIntegerv( GLenum pname, GLint *params ); + +extern void GLAPIENTRY +_es1_GetFixedv( GLenum pname, GLfixed *params ); + + +extern void GLAPIENTRY +_es2_GetBooleanv( GLenum pname, GLboolean *params ); + +extern void GLAPIENTRY +_es2_GetFloatv( GLenum pname, GLfloat *params ); + +extern void GLAPIENTRY +_es2_GetIntegerv( GLenum pname, GLint *params ); + #endif diff --git a/src/mesa/es/main/get_gen.py b/src/mesa/main/get_gen_es.py index b820157be0c..5fadfee8411 100644 --- a/src/mesa/es/main/get_gen.py +++ b/src/mesa/main/get_gen_es.py @@ -565,7 +565,7 @@ def ConversionFunc(fromType, toType): return fromStr + "_TO_" + toStr -def EmitGetFunction(stateVars, returnType): +def EmitGetFunction(stateVars, returnType, API): """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv.""" assert (returnType == GLboolean or returnType == GLint or @@ -575,13 +575,13 @@ def EmitGetFunction(stateVars, returnType): strType = TypeStrings[returnType] # Capitalize first letter of return type if returnType == GLint: - function = "_mesa_GetIntegerv" + function = "_es%d_GetIntegerv" % API elif returnType == GLboolean: - function = "_mesa_GetBooleanv" + function = "_es%d_GetBooleanv" % API elif returnType == GLfloat: - function = "_mesa_GetFloatv" + function = "_es%d_GetFloatv" % API elif returnType == GLfixed: - function = "_mesa_GetFixedv" + function = "_es%d_GetFixedv" % API else: abort() @@ -773,20 +773,17 @@ static GLenum compressed_formats[] = { #define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0])) -void GLAPIENTRY -_mesa_GetFixedv( GLenum pname, GLfixed *params ); - """ return def EmitAll(stateVars, API): EmitHeader() - EmitGetFunction(stateVars, GLboolean) - EmitGetFunction(stateVars, GLfloat) - EmitGetFunction(stateVars, GLint) + EmitGetFunction(stateVars, GLboolean, API) + EmitGetFunction(stateVars, GLfloat, API) + EmitGetFunction(stateVars, GLint, API) if API == 1: - EmitGetFunction(stateVars, GLfixed) + EmitGetFunction(stateVars, GLfixed, API) def main(args): diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c index 51dd5f77957..e3a60fa6eb5 100644 --- a/src/mesa/main/getstring.c +++ b/src/mesa/main/getstring.c @@ -30,6 +30,30 @@ #include "enums.h" #include "extensions.h" +static const GLubyte * +shading_laguage_version(GLcontext *ctx) +{ + switch (ctx->API) { +#if FEATURE_ARB_shading_language_100 + case API_OPENGL: + if (ctx->Extensions.ARB_shading_language_120) + return (const GLubyte *) "1.20"; + else if (ctx->Extensions.ARB_shading_language_100) + return (const GLubyte *) "1.10"; + goto error; +#endif + + case API_OPENGLES2: + return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16"; + + case API_OPENGLES: + default: + error: + _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); + return (const GLubyte *) 0; + } +} + /** * Query string-valued state. The return value should _not_ be freed by @@ -74,13 +98,9 @@ _mesa_GetString( GLenum name ) if (!ctx->Extensions.String) ctx->Extensions.String = _mesa_make_extension_string(ctx); return (const GLubyte *) ctx->Extensions.String; -#if FEATURE_ARB_shading_language_100 - case GL_SHADING_LANGUAGE_VERSION_ARB: - if (ctx->Extensions.ARB_shading_language_120) - return (const GLubyte *) "1.20"; - else if (ctx->Extensions.ARB_shading_language_100) - return (const GLubyte *) "1.10"; - goto error; +#if FEATURE_ARB_shading_language_100 || FEATURE_ES2 + case GL_SHADING_LANGUAGE_VERSION: + return shading_laguage_version(ctx); #endif #if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program || \ FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program @@ -93,9 +113,6 @@ _mesa_GetString( GLenum name ) } /* FALL-THROUGH */ #endif -#if FEATURE_ARB_shading_language_100 - error: -#endif default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" ); return (const GLubyte *) 0; diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h index 77544c88c66..5b8e2f2d811 100644 --- a/src/mesa/main/glheader.h +++ b/src/mesa/main/glheader.h @@ -85,6 +85,27 @@ typedef void *GLeglImageOES; #define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 #endif +/* GLES 2.0 tokens */ +#ifndef GL_RGB565 +#define GL_RGB565 0x8D62 +#endif + +#ifndef GL_TEXTURE_GEN_STR_OES +#define GL_TEXTURE_GEN_STR_OES 0x8D60 +#endif + +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif /** * Special, internal token diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 349d5f51e66..9640b79ea7f 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1076,6 +1076,7 @@ typedef enum #define T_BIT 2 #define R_BIT 4 #define Q_BIT 8 +#define STR_BITS (S_BIT | T_BIT | R_BIT) /*@}*/ @@ -2869,6 +2870,14 @@ struct gl_dlist_state } Current; }; +/** + * Enum for the OpenGL APIs we know about and may support. + */ +typedef enum { + API_OPENGL, + API_OPENGLES, + API_OPENGLES2, +} gl_api; /** * Mesa rendering context. @@ -2887,6 +2896,7 @@ struct __GLcontextRec /** \name API function pointer tables */ /*@{*/ + gl_api API; struct _glapi_table *Save; /**< Display list save functions */ struct _glapi_table *Exec; /**< Execute functions */ struct _glapi_table *CurrentDispatch; /**< == Save or Exec !! */ diff --git a/src/mesa/es/main/es_query_matrix.c b/src/mesa/main/querymatrix.c index 82b6fe7ab9f..82b6fe7ab9f 100644 --- a/src/mesa/es/main/es_query_matrix.c +++ b/src/mesa/main/querymatrix.c diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c index bfceb43c974..2341f8488d1 100644 --- a/src/mesa/main/remap.c +++ b/src/mesa/main/remap.c @@ -36,25 +36,18 @@ * a dynamic entry, or the corresponding static entry, in glapi. */ -#include "remap.h" -#include "imports.h" - -#include "main/dispatch.h" - +#include "mfeatures.h" #if FEATURE_remap_table - -#define need_MESA_remap_table -#include "main/remap_helper.h" +#include "remap.h" +#include "imports.h" +#include "glapi/glapi.h" #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0])) #define MAX_ENTRY_POINTS 16 - -/* this is global for quick access */ -int driDispatchRemapTable[driDispatchRemapTable_size]; - +static const char *_mesa_function_pool; /** * Return the spec string associated with the given function index. @@ -67,10 +60,7 @@ int driDispatchRemapTable[driDispatchRemapTable_size]; const char * _mesa_get_function_spec(GLint func_index) { - if (func_index < ARRAY_SIZE(_mesa_function_pool)) - return _mesa_function_pool + func_index; - else - return NULL; + return _mesa_function_pool + func_index; } @@ -162,32 +152,14 @@ _mesa_map_function_array(const struct gl_function_remap *func_array) /** - * Map the functions which are already static. - * - * When a extension function are incorporated into the ABI, the - * extension suffix is usually stripped. Mapping such functions - * makes sure the alternative names are available. - * - * Note that functions mapped by _mesa_init_remap_table() are - * excluded. - */ -void -_mesa_map_static_functions(void) -{ - /* Remap static functions which have alternative names and are in the ABI. - * This is to be on the safe side. glapi should have defined those names. - */ - _mesa_map_function_array(MESA_alt_functions); -} - - -/** * Initialize the remap table. This is called in one_time_init(). * The remap table needs to be initialized before calling the * CALL/GET/SET macros defined in main/dispatch.h. */ void -_mesa_init_remap_table(void) +_mesa_do_init_remap_table(const char *pool, + int size, + const struct gl_function_pool_remap *remap) { static GLboolean initialized = GL_FALSE; GLint i; @@ -195,15 +167,16 @@ _mesa_init_remap_table(void) if (initialized) return; initialized = GL_TRUE; + _mesa_function_pool = pool; /* initialize the remap table */ - for (i = 0; i < ARRAY_SIZE(driDispatchRemapTable); i++) { + for (i = 0; i < size; i++) { GLint offset; const char *spec; /* sanity check */ - ASSERT(i == MESA_remap_table_functions[i].remap_index); - spec = _mesa_function_pool + MESA_remap_table_functions[i].pool_index; + ASSERT(i == remap[i].remap_index); + spec = _mesa_function_pool + remap[i].pool_index; offset = _mesa_map_function_spec(spec); /* store the dispatch offset in the remap table */ diff --git a/src/mesa/main/remap.h b/src/mesa/main/remap.h index d080188d89f..7afdee36f5b 100644 --- a/src/mesa/main/remap.h +++ b/src/mesa/main/remap.h @@ -28,9 +28,17 @@ #define REMAP_H -#include "main/mtypes.h" +#include "main/mfeatures.h" -struct gl_function_remap; +struct gl_function_pool_remap { + int pool_index; + int remap_index; +}; + +struct gl_function_remap { + int func_index; + int dispatch_offset; /* for sanity check */ +}; #if FEATURE_remap_table @@ -39,9 +47,9 @@ extern int driDispatchRemapTable[]; extern const char * -_mesa_get_function_spec(GLint func_index); +_mesa_get_function_spec(int func_index); -extern GLint +extern int _mesa_map_function_spec(const char *spec); extern void @@ -51,17 +59,34 @@ extern void _mesa_map_static_functions(void); extern void +_mesa_map_static_functions_es1(void); + +extern void +_mesa_map_static_functions_es2(void); + +extern void +_mesa_do_init_remap_table(const char *pool, + int size, + const struct gl_function_pool_remap *remap); + +extern void _mesa_init_remap_table(void); +extern void +_mesa_init_remap_table_es1(void); + +extern void +_mesa_init_remap_table_es2(void); + #else /* FEATURE_remap_table */ static INLINE const char * -_mesa_get_function_spec(GLint func_index) +_mesa_get_function_spec(int func_index) { return NULL; } -static INLINE GLint +static INLINE int _mesa_map_function_spec(const char *spec) { return -1; @@ -77,11 +102,39 @@ _mesa_map_static_functions(void) { } + +static INLINE void +_mesa_map_static_functions_es1(void) +{ +} + +static INLINE void +_mesa_map_static_functions_es2(void) +{ +} + +static INLINE void +_mesa_do_init_remap_table(const char *pool, + int size, + const struct gl_function_pool_remap *remap) +{ +} + static INLINE void _mesa_init_remap_table(void) { } +static INLINE void +_mesa_init_remap_table_es1(void) +{ +} + +static INLINE void +_mesa_init_remap_table_es2(void) +{ +} + #endif /* FEATURE_remap_table */ diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 52edf67b545..2df11a454df 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -26,11 +26,7 @@ */ #include "main/dispatch.h" - -struct gl_function_remap { - GLint func_index; - GLint dispatch_offset; /* for sanity check */ -}; +#include "main/remap.h" /* this is internal to remap.c */ #ifdef need_MESA_remap_table @@ -4427,10 +4423,7 @@ static const char _mesa_function_pool[] = ; /* these functions need to be remapped */ -static const struct { - GLint pool_index; - GLint remap_index; -} MESA_remap_table_functions[] = { +static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 1461, AttachShader_remap_index }, { 8848, CreateProgram_remap_index }, { 20883, CreateShader_remap_index }, diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c index f382680b443..863f878fea8 100644 --- a/src/mesa/main/shaders.c +++ b/src/mesa/main/shaders.c @@ -485,7 +485,7 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count, checksum = _mesa_str_checksum(source); - sprintf(filename, "newshader_%d", checksum); + _mesa_snprintf(filename, sizeof(filename), "newshader_%d", checksum); newSource = _mesa_read_shader(filename); if (newSource) { @@ -739,3 +739,31 @@ _mesa_ValidateProgramARB(GLhandleARB program) ctx->Driver.ValidateProgram(ctx, program); } +#ifdef FEATURE_ES2 + +void GLAPIENTRY +_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, + GLint* range, GLint* precision) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); +} + + +void GLAPIENTRY +_mesa_ReleaseShaderCompiler(void) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); +} + + +void GLAPIENTRY +_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, + const void* binary, GLint length) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); +} + +#endif diff --git a/src/mesa/main/shaders.h b/src/mesa/main/shaders.h index 17339ccf623..6ab6d6bfeaf 100644 --- a/src/mesa/main/shaders.h +++ b/src/mesa/main/shaders.h @@ -232,5 +232,16 @@ extern void GLAPIENTRY _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +/* GLES 2.0 */ +extern void GLAPIENTRY +_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, + GLint* range, GLint* precision); + +extern void GLAPIENTRY +_mesa_ReleaseShaderCompiler(void); + +extern void GLAPIENTRY +_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, + const void* binary, GLint length); #endif /* SHADERS_H */ diff --git a/src/mesa/main/texgen.c b/src/mesa/main/texgen.c index e70ea30290f..108ea4cd42c 100644 --- a/src/mesa/main/texgen.c +++ b/src/mesa/main/texgen.c @@ -192,6 +192,38 @@ _mesa_TexGend(GLenum coord, GLenum pname, GLdouble param ) _mesa_TexGenfv( coord, pname, p ); } +#if FEATURE_ES1 + +void GLAPIENTRY +_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params) +{ + ASSERT(coord == GL_TEXTURE_GEN_STR_OES); + _mesa_GetTexGenfv(GL_S, pname, params); +} + + +void GLAPIENTRY +_es_TexGenf(GLenum coord, GLenum pname, GLfloat param) +{ + ASSERT(coord == GL_TEXTURE_GEN_STR_OES); + /* set S, T, and R at the same time */ + _mesa_TexGenf(GL_S, pname, param); + _mesa_TexGenf(GL_T, pname, param); + _mesa_TexGenf(GL_R, pname, param); +} + + +void GLAPIENTRY +_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params) +{ + ASSERT(coord == GL_TEXTURE_GEN_STR_OES); + /* set S, T, and R at the same time */ + _mesa_TexGenfv(GL_S, pname, params); + _mesa_TexGenfv(GL_T, pname, params); + _mesa_TexGenfv(GL_R, pname, params); +} + +#endif static void GLAPIENTRY _mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params ) diff --git a/src/mesa/main/texgen.h b/src/mesa/main/texgen.h index eb4626033a6..397d89e630f 100644 --- a/src/mesa/main/texgen.h +++ b/src/mesa/main/texgen.h @@ -52,6 +52,17 @@ _mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); extern void _mesa_init_texgen_dispatch(struct _glapi_table *disp); + +extern void GLAPIENTRY +_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + +extern void GLAPIENTRY +_es_TexGenf(GLenum coord, GLenum pname, GLfloat param); + +extern void GLAPIENTRY +_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + + #else /* FEATURE_texgen */ #define _MESA_INIT_TEXGEN_FUNCTIONS(driver, impl) do { } while (0) diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index e0c5cf9c375..0b55097bd69 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -46,6 +46,7 @@ #include "texfetch.h" #include "teximage.h" #include "texstate.h" +#include "texpal.h" #include "mtypes.h" @@ -1279,8 +1280,8 @@ texture_error_check( GLcontext *ctx, GLenum target, if (type != GL_UNSIGNED_SHORT_8_8_MESA && type != GL_UNSIGNED_SHORT_8_8_REV_MESA) { char message[100]; - sprintf(message, - "glTexImage%d(format/type YCBCR mismatch", dimensions); + _mesa_snprintf(message, sizeof(message), + "glTexImage%d(format/type YCBCR mismatch", dimensions); _mesa_error(ctx, GL_INVALID_ENUM, message); return GL_TRUE; /* error */ } @@ -1295,9 +1296,9 @@ texture_error_check( GLcontext *ctx, GLenum target, if (border != 0) { if (!isProxy) { char message[100]; - sprintf(message, - "glTexImage%d(format=GL_YCBCR_MESA and border=%d)", - dimensions, border); + _mesa_snprintf(message, sizeof(message), + "glTexImage%d(format=GL_YCBCR_MESA and border=%d)", + dimensions, border); _mesa_error(ctx, GL_INVALID_VALUE, message); } return GL_TRUE; @@ -3380,7 +3381,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level, } } - void GLAPIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, @@ -3396,6 +3396,24 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, _mesa_lookup_enum_by_nr(internalFormat), width, height, border, imageSize, data); +#if FEATURE_ES + switch (internalFormat) { + case GL_PALETTE4_RGB8_OES: + case GL_PALETTE4_RGBA8_OES: + case GL_PALETTE4_R5_G6_B5_OES: + case GL_PALETTE4_RGBA4_OES: + case GL_PALETTE4_RGB5_A1_OES: + case GL_PALETTE8_RGB8_OES: + case GL_PALETTE8_RGBA8_OES: + case GL_PALETTE8_R5_G6_B5_OES: + case GL_PALETTE8_RGBA4_OES: + case GL_PALETTE8_RGB5_A1_OES: + _mesa_cpal_compressed_teximage2d(target, level, internalFormat, + width, height, imageSize, data); + return; + } +#endif + if (target == GL_TEXTURE_2D || (ctx->Extensions.ARB_texture_cube_map && target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 2753b55c36a..de37e340393 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -416,7 +416,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, */ if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) { char s[100]; - sprintf(s, "base level = %d is invalid", baseLevel); + _mesa_snprintf(s, sizeof(s), "base level = %d is invalid", baseLevel); incomplete(t, s); t->_Complete = GL_FALSE; return; @@ -425,7 +425,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx, /* Always need the base level image */ if (!t->Image[0][baseLevel]) { char s[100]; - sprintf(s, "Image[baseLevel=%d] == NULL", baseLevel); + _mesa_snprintf(s, sizeof(s), "Image[baseLevel=%d] == NULL", baseLevel); incomplete(t, s); t->_Complete = GL_FALSE; return; diff --git a/src/mesa/es/main/es_cpaltex.c b/src/mesa/main/texpal.c index 0c497774ff8..a25e7aa4ff8 100644 --- a/src/mesa/es/main/es_cpaltex.c +++ b/src/mesa/main/texpal.c @@ -15,21 +15,16 @@ */ -#include "GLES/gl.h" -#include "GLES/glext.h" +#include "glheader.h" +#include "compiler.h" /* for ASSERT */ +#include "context.h" +#include "mtypes.h" +#include "imports.h" +#include "pixelstore.h" +#include "teximage.h" +#include "texpal.h" -#include "main/compiler.h" /* for ASSERT */ - - -void GL_APIENTRY _es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); - -void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params); -void GL_APIENTRY _mesa_PixelStorei(GLenum pname, GLint param); -void GL_APIENTRY _mesa_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels); -void GL_APIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); - -void *_mesa_get_current_context(void); -void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... ); +#if FEATURE_ES static const struct cpal_format_info { @@ -141,15 +136,17 @@ cpal_get_info(GLint level, GLenum internalFormat, * Convert a call to glCompressedTexImage2D() where internalFormat is a * compressed palette format into a regular GLubyte/RGBA glTexImage2D() call. */ -static void -cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat, - GLsizei width, GLsizei height, GLsizei imageSize, - const void *palette) +void +_mesa_cpal_compressed_teximage2d(GLenum target, GLint level, + GLenum internalFormat, + GLsizei width, GLsizei height, + GLsizei imageSize, const void *palette) { const struct cpal_format_info *info; GLint lvl, num_levels; const GLubyte *indices; GLint saved_align, align; + GET_CURRENT_CONTEXT(ctx); info = cpal_get_info(level, internalFormat, width, height, imageSize); if (!info) @@ -162,7 +159,7 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat, /* first image follows the palette */ indices = (const GLubyte *) palette + info->palette_size * info->size; - _mesa_GetIntegerv(GL_UNPACK_ALIGNMENT, &saved_align); + saved_align = ctx->Unpack.Alignment; align = saved_align; for (lvl = 0; lvl < num_levels; lvl++) { @@ -204,28 +201,4 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat, _mesa_PixelStorei(GL_UNPACK_ALIGNMENT, saved_align); } - -void GL_APIENTRY -_es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, - GLsizei width, GLsizei height, GLint border, - GLsizei imageSize, const GLvoid *data) -{ - switch (internalFormat) { - case GL_PALETTE4_RGB8_OES: - case GL_PALETTE4_RGBA8_OES: - case GL_PALETTE4_R5_G6_B5_OES: - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE4_RGB5_A1_OES: - case GL_PALETTE8_RGB8_OES: - case GL_PALETTE8_RGBA8_OES: - case GL_PALETTE8_R5_G6_B5_OES: - case GL_PALETTE8_RGBA4_OES: - case GL_PALETTE8_RGB5_A1_OES: - cpal_compressed_teximage2d(target, level, internalFormat, - width, height, imageSize, data); - break; - default: - _mesa_CompressedTexImage2DARB(target, level, internalFormat, - width, height, border, imageSize, data); - } -} +#endif diff --git a/src/mesa/main/texpal.h b/src/mesa/main/texpal.h new file mode 100644 index 00000000000..eeff5a9e24c --- /dev/null +++ b/src/mesa/main/texpal.h @@ -0,0 +1,38 @@ +/* + * Mesa 3-D graphics library + * Version: 7.8 + * + * Copyright (C) 1999-2010 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef TEXPAL_H +#define TEXPAL_H + + +#include "main/glheader.h" +extern void +_mesa_cpal_compressed_teximage2d(GLenum target, GLint level, + GLenum internalFormat, + GLsizei width, GLsizei height, + GLsizei imageSize, const void *palette); + + +#endif /* TEXPAL_H */ diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index a39b6806501..dea3019d0bc 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -32,8 +32,11 @@ * Return major and minor version numbers. */ static void -compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor) +compute_version(GLcontext *ctx) { + GLuint major, minor; + static const int max = 100; + const GLboolean ver_1_3 = (ctx->Extensions.ARB_multisample && ctx->Extensions.ARB_multitexture && ctx->Extensions.ARB_texture_border_clamp && @@ -85,31 +88,111 @@ compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor) ctx->Extensions.EXT_pixel_buffer_object && ctx->Extensions.EXT_texture_sRGB); if (ver_2_1) { - *major = 2; - *minor = 1; + major = 2; + minor = 1; } else if (ver_2_0) { - *major = 2; - *minor = 0; + major = 2; + minor = 0; } else if (ver_1_5) { - *major = 1; - *minor = 5; + major = 1; + minor = 5; } else if (ver_1_4) { - *major = 1; - *minor = 4; + major = 1; + minor = 4; } else if (ver_1_3) { - *major = 1; - *minor = 3; + major = 1; + minor = 3; } else { - *major = 1; - *minor = 2; + major = 1; + minor = 2; + } + + ctx->VersionMajor = major; + ctx->VersionMinor = minor; + ctx->VersionString = (char *) malloc(max); + if (ctx->VersionString) { + _mesa_snprintf(ctx->VersionString, max, + "%u.%u Mesa " MESA_VERSION_STRING, + ctx->VersionMajor, ctx->VersionMinor); } } +static void +compute_version_es1(GLcontext *ctx) +{ + static const int max = 100; + + /* OpenGL ES 1.0 is derived from OpenGL 1.3 */ + const GLboolean ver_1_0 = (ctx->Extensions.ARB_multisample && + ctx->Extensions.ARB_multitexture && + ctx->Extensions.ARB_texture_compression && + ctx->Extensions.EXT_texture_env_add && + ctx->Extensions.ARB_texture_env_combine && + ctx->Extensions.ARB_texture_env_dot3); + /* OpenGL ES 1.1 is derived from OpenGL 1.5 */ + const GLboolean ver_1_1 = (ver_1_0 && + ctx->Extensions.EXT_point_parameters && + ctx->Extensions.SGIS_generate_mipmap && + ctx->Extensions.ARB_vertex_buffer_object); + + if (ver_1_1) { + ctx->VersionMajor = 1; + ctx->VersionMinor = 1; + } else if (ver_1_0) { + ctx->VersionMajor = 1; + ctx->VersionMinor = 0; + } else { + _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support."); + } + + ctx->VersionString = (char *) malloc(max); + if (ctx->VersionString) { + _mesa_snprintf(ctx->VersionString, max, + "OpenGL ES-CM 1.%d Mesa " MESA_VERSION_STRING, + ctx->VersionMinor); + } +} + +static void +compute_version_es2(GLcontext *ctx) +{ + static const int max = 100; + + /* OpenGL ES 2.0 is derived from OpenGL 2.0 */ + const GLboolean ver_2_0 = (ctx->Extensions.ARB_multisample && + ctx->Extensions.ARB_multitexture && + ctx->Extensions.ARB_texture_compression && + ctx->Extensions.ARB_texture_cube_map && + ctx->Extensions.ARB_texture_mirrored_repeat && + ctx->Extensions.EXT_blend_color && + ctx->Extensions.EXT_blend_func_separate && + ctx->Extensions.EXT_blend_minmax && + ctx->Extensions.EXT_blend_subtract && + ctx->Extensions.EXT_stencil_wrap && + ctx->Extensions.ARB_vertex_buffer_object && + ctx->Extensions.ARB_shader_objects && + ctx->Extensions.ARB_vertex_shader && + ctx->Extensions.ARB_fragment_shader && + ctx->Extensions.ARB_texture_non_power_of_two && + ctx->Extensions.EXT_blend_equation_separate); + if (ver_2_0) { + ctx->VersionMajor = 2; + ctx->VersionMinor = 0; + } else { + _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support."); + } + + ctx->VersionString = (char *) malloc(max); + if (ctx->VersionString) { + _mesa_snprintf(ctx->VersionString, max, + "OpenGL ES 2.0 Mesa " MESA_VERSION_STRING); + } +} /** * Set the context's VersionMajor, VersionMinor, VersionString fields. @@ -118,13 +201,16 @@ compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor) void _mesa_compute_version(GLcontext *ctx) { - static const int max = 100; - - compute_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor); - - ctx->VersionString = (char *) malloc(max); - if (ctx->VersionString) { - _mesa_snprintf(ctx->VersionString, max, "%u.%u Mesa " MESA_VERSION_STRING, - ctx->VersionMajor, ctx->VersionMinor); + switch (ctx->API) { + case API_OPENGL: + compute_version(ctx); + break; + case API_OPENGLES: + compute_version_es1(ctx); + break; + case API_OPENGLES2: + compute_version_es2(ctx); + break; } + } diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index fa79632c18b..4b876a460c2 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -1560,7 +1560,7 @@ _slang_gen_function_call(slang_assemble_ctx *A, slang_function *fun, char name[200]; prevFuncEndLabel = A->curFuncEndLabel; - sprintf(name, "__endOfFunc_%s_", (char *) fun->header.a_name); + _mesa_snprintf(name, sizeof(name), "__endOfFunc_%s_", (char *) fun->header.a_name); A->curFuncEndLabel = _slang_label_new(name); assert(A->curFuncEndLabel); @@ -4187,11 +4187,10 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper) slang_atom name = oper->var ? oper->var->a_name : oper->a_id; slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE); slang_ir_node *n; - if (!var) { + if (!var || !var->declared) { slang_info_log_error(A->log, "undefined variable '%s'", (char *) name); return NULL; } - assert(var->declared); n = new_var(A, var); return n; } diff --git a/src/mesa/shader/slang/slang_compile_variable.h b/src/mesa/shader/slang/slang_compile_variable.h index b4585599f24..5c9d248b354 100644 --- a/src/mesa/shader/slang/slang_compile_variable.h +++ b/src/mesa/shader/slang/slang_compile_variable.h @@ -41,7 +41,7 @@ typedef struct slang_variable_ GLuint size; /**< Variable's size in bytes */ GLboolean is_global; GLboolean isTemp; /**< a named temporary (__resultTmp) */ - GLboolean declared; /**< for debug */ + GLboolean declared; /**< has the var been declared? */ struct slang_ir_storage_ *store; /**< Storage for this var */ } slang_variable; diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c index 7c0ea0c1148..974c4a31315 100644 --- a/src/mesa/shader/slang/slang_emit.c +++ b/src/mesa/shader/slang/slang_emit.c @@ -652,30 +652,30 @@ storage_annotation(const slang_ir_node *n, const struct gl_program *prog) if (st->Index >= 0) { const GLfloat *val = prog->Parameters->ParameterValues[st->Index]; if (st->Swizzle == SWIZZLE_NOOP) - sprintf(s, "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]); + _mesa_snprintf(s, sizeof(s), "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]); else { - sprintf(s, "%g", val[GET_SWZ(st->Swizzle, 0)]); + _mesa_snprintf(s, sizeof(s), "%g", val[GET_SWZ(st->Swizzle, 0)]); } } break; case PROGRAM_TEMPORARY: if (n->Var) - sprintf(s, "%s", (char *) n->Var->a_name); + _mesa_snprintf(s, sizeof(s), "%s", (char *) n->Var->a_name); else - sprintf(s, "t[%d]", st->Index); + _mesa_snprintf(s, sizeof(s), "t[%d]", st->Index); break; case PROGRAM_STATE_VAR: case PROGRAM_UNIFORM: - sprintf(s, "%s", prog->Parameters->Parameters[st->Index].Name); + _mesa_snprintf(s, sizeof(s), "%s", prog->Parameters->Parameters[st->Index].Name); break; case PROGRAM_VARYING: - sprintf(s, "%s", prog->Varying->Parameters[st->Index].Name); + _mesa_snprintf(s, sizeof(s), "%s", prog->Varying->Parameters[st->Index].Name); break; case PROGRAM_INPUT: - sprintf(s, "input[%d]", st->Index); + _mesa_snprintf(s, sizeof(s), "input[%d]", st->Index); break; case PROGRAM_OUTPUT: - sprintf(s, "output[%d]", st->Index); + _mesa_snprintf(s, sizeof(s), "output[%d]", st->Index); break; default: s[0] = 0; @@ -752,9 +752,8 @@ instruction_annotation(gl_inst_opcode opcode, char *dstAnnot, } s = (char *) malloc(len); - sprintf(s, "%s = %s %s %s %s", dstAnnot, - srcAnnot0, operator, srcAnnot1, srcAnnot2); - assert(strlen(s) < len); + _mesa_snprintf(s, len, "%s = %s %s %s %s", dstAnnot, + srcAnnot0, operator, srcAnnot1, srcAnnot2); free(dstAnnot); free(srcAnnot0); @@ -2274,11 +2273,11 @@ emit_var_decl(slang_emit_info *emitInfo, slang_ir_node *n) if (emitInfo->EmitComments) { /* emit NOP with comment describing the variable's storage location */ char s[1000]; - sprintf(s, "TEMP[%d]%s = variable %s (size %d)", - n->Store->Index, - _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE), - (n->Var ? (char *) n->Var->a_name : "anonymous"), - n->Store->Size); + _mesa_snprintf(s, sizeof(s), "TEMP[%d]%s = variable %s (size %d)", + n->Store->Index, + _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE), + (n->Var ? (char *) n->Var->a_name : "anonymous"), + n->Store->Size); emit_comment(emitInfo, s); } return NULL; diff --git a/src/mesa/shader/slang/slang_ir.c b/src/mesa/shader/slang/slang_ir.c index 62603503dd9..c223004b22b 100644 --- a/src/mesa/shader/slang/slang_ir.c +++ b/src/mesa/shader/slang/slang_ir.c @@ -340,13 +340,13 @@ storage_string(const slang_ir_storage *st) assert(Elements(files) == PROGRAM_FILE_MAX); #if 0 if (st->Size == 1) - sprintf(s, "%s[%d]", files[st->File], st->Index); + _mesa_snprintf(s, "%s[%d]", files[st->File], st->Index); else - sprintf(s, "%s[%d..%d]", files[st->File], st->Index, - st->Index + st->Size - 1); + _mesa_snprintf(s, "%s[%d..%d]", files[st->File], st->Index, + st->Index + st->Size - 1); #endif assert(st->File < (GLint) (sizeof(files) / sizeof(files[0]))); - sprintf(s, "%s[%d]", files[st->File], st->Index); + _mesa_snprintf(s, sizeof(s), "%s[%d]", files[st->File], st->Index); return s; } diff --git a/src/mesa/shader/slang/slang_label.c b/src/mesa/shader/slang/slang_label.c index 225612a9369..8e3a8ebc1aa 100644 --- a/src/mesa/shader/slang/slang_label.c +++ b/src/mesa/shader/slang/slang_label.c @@ -37,7 +37,7 @@ _slang_label_new_unique(const char *name) free(l); return NULL; } - sprintf(l->Name, "%s_%d", name, id); + _mesa_snprintf(l->Name, strlen(name) + 10, "%s_%d", name, id); id++; l->Location = -1; } diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 47bc9339716..b16778f8ad4 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -370,8 +370,9 @@ link_uniform_vars(GLcontext *ctx, GLuint newSampNum = *numSamplers; if (newSampNum >= ctx->Const.MaxTextureImageUnits) { char s[100]; - sprintf(s, "Too many texture samplers (%u, max is %u)", - newSampNum, ctx->Const.MaxTextureImageUnits); + _mesa_snprintf(s, sizeof(s), + "Too many texture samplers (%u, max is %u)", + newSampNum, ctx->Const.MaxTextureImageUnits); link_error(shProg, s); return GL_FALSE; } diff --git a/src/mesa/shader/slang/slang_print.c b/src/mesa/shader/slang/slang_print.c index 3c75523c42f..6b34f395fdf 100644 --- a/src/mesa/shader/slang/slang_print.c +++ b/src/mesa/shader/slang/slang_print.c @@ -813,7 +813,7 @@ static const char * slang_fq_type_string(const slang_fully_specified_type *t) { static char str[1000]; - sprintf(str, "%s %s", slang_type_qual_string(t->qualifier), + _mesa_snprintf(str, sizeof(str), "%s %s", slang_type_qual_string(t->qualifier), slang_type_string(t->specifier.type)); return str; } @@ -832,9 +832,9 @@ static char * slang_var_string(const slang_variable *v) { static char str[1000]; - sprintf(str, "%s : %s", - (char *) v->a_name, - slang_fq_type_string(&v->type)); + _mesa_snprintf(str, sizeof(str), "%s : %s", + (char *) v->a_name, + slang_fq_type_string(&v->type)); return str; } #endif diff --git a/src/mesa/shader/slang/slang_utility.c b/src/mesa/shader/slang/slang_utility.c index e77404f6928..c1d57409a43 100644 --- a/src/mesa/shader/slang/slang_utility.c +++ b/src/mesa/shader/slang/slang_utility.c @@ -120,7 +120,7 @@ slang_string_pushi (slang_string *self, GLint i) { char buffer[12]; - sprintf (buffer, "%d", i); + _mesa_snprintf (buffer, sizeof(buffer), "%d", i); slang_string_pushs (self, buffer, strlen (buffer)); } diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index d9ebb51a6d2..be859e43256 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -1,5 +1,13 @@ ### Lists of source files, included by Makefiles +ES1_SOURCES = \ + main/api_exec_es1.c \ + main/get_es1.c + +ES2_SOURCES = \ + main/api_exec_es2.c \ + main/get_es2.c + MAIN_SOURCES = \ main/api_arrayelt.c \ main/api_exec.c \ @@ -25,6 +33,7 @@ MAIN_SOURCES = \ main/dlist.c \ main/dlopen.c \ main/drawpix.c \ + main/drawtex.c \ main/enable.c \ main/enums.c \ main/eval.c \ @@ -54,6 +63,7 @@ MAIN_SOURCES = \ main/points.c \ main/polygon.c \ main/queryobj.c \ + main/querymatrix.c \ main/rastpos.c \ main/rbadaptors.c \ main/readpix.c \ @@ -76,6 +86,7 @@ MAIN_SOURCES = \ main/texgetimage.c \ main/teximage.c \ main/texobj.c \ + main/texpal.c \ main/texparam.c \ main/texrender.c \ main/texstate.c \ @@ -84,7 +95,8 @@ MAIN_SOURCES = \ main/varray.c \ main/version.c \ main/viewport.c \ - main/vtxfmt.c + main/vtxfmt.c \ + $(ES_SOURCES) GLAPI_SOURCES = \ glapi/glapi.c \ @@ -199,6 +211,7 @@ STATETRACKER_SOURCES = \ state_tracker/st_cb_condrender.c \ state_tracker/st_cb_flush.c \ state_tracker/st_cb_drawpixels.c \ + state_tracker/st_cb_drawtex.c \ state_tracker/st_cb_eglimage.c \ state_tracker/st_cb_fbo.c \ state_tracker/st_cb_feedback.c \ diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index a8262a5e1aa..92fe72d4df6 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -194,9 +194,12 @@ update_samplers(struct st_context *st) sampler->normalized_coords = 1; sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias; - sampler->min_lod = MAX2(0.0f, texobj->MinLod); - sampler->max_lod = MIN2(texobj->MaxLevel - texobj->BaseLevel, - texobj->MaxLod); + + sampler->min_lod = texobj->BaseLevel + texobj->MinLod; + if (sampler->min_lod < texobj->BaseLevel) + sampler->min_lod = texobj->BaseLevel; + + sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel, texobj->MaxLod); if (sampler->max_lod < sampler->min_lod) { /* The GL spec doesn't seem to specify what to do in this case. * Swap the values. diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index f4294ac1e6f..d403b7db1e5 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -62,7 +62,7 @@ update_textures(struct st_context *st) if (samplersUsed & (1 << su)) { struct gl_texture_object *texObj; struct st_texture_object *stObj; - GLboolean flush, retval; + GLboolean retval; GLuint texUnit; if (fprog->Base.SamplersUsed & (1 << su)) @@ -77,7 +77,7 @@ update_textures(struct st_context *st) } stObj = st_texture_object(texObj); - retval = st_finalize_texture(st->ctx, st->pipe, texObj, &flush); + retval = st_finalize_texture(st->ctx, st->pipe, texObj); if (!retval) { /* out of mem */ continue; @@ -88,15 +88,6 @@ update_textures(struct st_context *st) sampler_view = st_get_texture_sampler_view(stObj, pipe); } - /* - if (pt) { - printf("%s su=%u non-null\n", __FUNCTION__, su); - } - else { - printf("%s su=%u null\n", __FUNCTION__, su); - } - */ - pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view); } @@ -138,19 +129,16 @@ finalize_textures(struct st_context *st) const GLuint texUnit = fprog->Base.SamplerUnits[su]; struct gl_texture_object *texObj = st->ctx->Texture.Unit[texUnit]._Current; - struct st_texture_object *stObj = st_texture_object(texObj); if (texObj) { - GLboolean flush, retval; + GLboolean retval; - retval = st_finalize_texture(st->ctx, st->pipe, texObj, &flush); + retval = st_finalize_texture(st->ctx, st->pipe, texObj); if (!retval) { /* out of mem */ st->missing_textures = GL_TRUE; continue; } - - stObj->teximage_realloc = TRUE; } } } diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.c b/src/mesa/state_tracker/st_cb_drawtex.c index 6d387d5ccf1..6d387d5ccf1 100644 --- a/src/mesa/es/state_tracker/st_cb_drawtex.c +++ b/src/mesa/state_tracker/st_cb_drawtex.c diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.h b/src/mesa/state_tracker/st_cb_drawtex.h index 7b0da702798..7b0da702798 100644 --- a/src/mesa/es/state_tracker/st_cb_drawtex.h +++ b/src/mesa/state_tracker/st_cb_drawtex.h diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index e5c956d561d..c02121fbd1a 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -321,15 +321,13 @@ st_render_texture(GLcontext *ctx, struct pipe_resource *pt = st_get_texobj_resource(att->Texture); struct st_texture_object *stObj; const struct gl_texture_image *texImage; - GLint pt_level; /* When would this fail? Perhaps assert? */ if (!pt) return; - /* The first gallium texture level = Mesa BaseLevel */ - pt_level = MAX2(0, (GLint) att->TextureLevel - att->Texture->BaseLevel); - texImage = att->Texture->Image[att->CubeMapFace][pt_level]; + /* get pointer to texture image we're rendeing to */ + texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; /* create new renderbuffer which wraps the texture image */ rb = st_new_renderbuffer(ctx, 0); @@ -350,7 +348,7 @@ st_render_texture(GLcontext *ctx, /* point renderbuffer at texobject */ strb->rtt = stObj; - strb->rtt_level = pt_level; + strb->rtt_level = att->TextureLevel; strb->rtt_face = att->CubeMapFace; strb->rtt_slice = att->Zoffset; diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 3457214ca4c..ed8eb2929a6 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -27,9 +27,6 @@ #include "main/mfeatures.h" #include "main/bufferobj.h" -#if FEATURE_convolve -#include "main/convolve.h" -#endif #include "main/enums.h" #include "main/fbobject.h" #include "main/formats.h" @@ -231,93 +228,114 @@ default_bindings(struct st_context *st, enum pipe_format format) } +/** Return number of image dimensions (1, 2 or 3) for a texture target. */ +static GLuint +get_texture_dims(GLenum target) +{ + switch (target) { + case GL_TEXTURE_1D: + case GL_TEXTURE_1D_ARRAY_EXT: + return 1; + case GL_TEXTURE_2D: + case GL_TEXTURE_CUBE_MAP_ARB: + case GL_TEXTURE_RECTANGLE_NV: + case GL_TEXTURE_2D_ARRAY_EXT: + return 2; + case GL_TEXTURE_3D: + return 3; + default: + assert(0 && "invalid texture target in get_texture_dims()"); + return 1; + } +} + + /** - * Allocate a pipe_resource object for the given st_texture_object using - * the given st_texture_image to guess the mipmap size/levels. - * - * [comments...] - * Otherwise, store it in memory if (Border != 0) or (any dimension == - * 1). - * - * Otherwise, if max_level >= level >= min_level, create texture with - * space for images from min_level down to max_level. + * Try to allocate a pipe_resource object for the given st_texture_object. * - * Otherwise, create texture with space for images from (level 0)..(1x1). - * Consider pruning this texture at a validation if the saving is worth it. + * We use the given st_texture_image as a clue to determine the size of the + * mipmap image at level=0. */ static void guess_and_alloc_texture(struct st_context *st, struct st_texture_object *stObj, const struct st_texture_image *stImage) { - GLuint firstLevel; - GLuint lastLevel; - GLuint width = stImage->base.Width2; /* size w/out border */ - GLuint height = stImage->base.Height2; - GLuint depth = stImage->base.Depth2; - GLuint i, bindings; + const GLuint dims = get_texture_dims(stObj->base.Target); + GLuint level, lastLevel, width, height, depth; + GLuint bindings; enum pipe_format fmt; DBG("%s\n", __FUNCTION__); assert(!stObj->pt); - if (stObj->pt && - (GLint) stImage->level > stObj->base.BaseLevel && - (stImage->base.Width == 1 || - (stObj->base.Target != GL_TEXTURE_1D && - stImage->base.Height == 1) || - (stObj->base.Target == GL_TEXTURE_3D && - stImage->base.Depth == 1))) - return; - - /* If this image disrespects BaseLevel, allocate from level zero. - * Usually BaseLevel == 0, so it's unlikely to happen. - */ - if ((GLint) stImage->level < stObj->base.BaseLevel) - firstLevel = 0; - else - firstLevel = stObj->base.BaseLevel; + level = stImage->level; + width = stImage->base.Width2; /* size w/out border */ + height = stImage->base.Height2; + depth = stImage->base.Depth2; + assert(width > 0); + assert(height > 0); + assert(depth > 0); - /* Figure out image dimensions at start level. + /* Depending on the image's size, we can't always make a guess here. */ - for (i = stImage->level; i > firstLevel; i--) { + if (level > 0) { + if ( (dims >= 1 && width == 1) || + (dims >= 2 && height == 1) || + (dims >= 3 && depth == 1) ) { + /* we can't determine the image size at level=0 */ + stObj->width0 = stObj->height0 = stObj->depth0 = 0; + return; + } + } + + /* grow the image size until we hit level = 0 */ + while (level > 0) { if (width != 1) width <<= 1; if (height != 1) height <<= 1; if (depth != 1) depth <<= 1; - } + level--; + } - if (width == 0 || height == 0 || depth == 0) { - /* no texture needed */ - return; - } + assert(level == 0); + + /* At this point, (width x height x depth) is the expected size of + * the level=0 mipmap image. + */ - /* Guess a reasonable value for lastLevel. This is probably going - * to be wrong fairly often and might mean that we have to look at - * resizable buffers, or require that buffers implement lazy - * pagetable arrangements. + /* Guess a reasonable value for lastLevel. With OpenGL we have no + * idea how many mipmap levels will be in a texture until we start + * to render with it. Make an educated guess here but be prepared + * to re-allocating a texture buffer with space for more (or fewer) + * mipmap levels later. */ if ((stObj->base.MinFilter == GL_NEAREST || stObj->base.MinFilter == GL_LINEAR || stImage->base._BaseFormat == GL_DEPTH_COMPONENT || stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) && !stObj->base.GenerateMipmap && - stImage->level == firstLevel) { + stImage->level == 0) { /* only alloc space for a single mipmap level */ - lastLevel = firstLevel; + lastLevel = 0; } else { /* alloc space for a full mipmap */ GLuint l2width = util_logbase2(width); GLuint l2height = util_logbase2(height); GLuint l2depth = util_logbase2(depth); - lastLevel = firstLevel + MAX2(MAX2(l2width, l2height), l2depth); + lastLevel = MAX2(MAX2(l2width, l2height), l2depth); } + /* Save the level=0 dimensions */ + stObj->width0 = width; + stObj->height0 = height; + stObj->depth0 = depth; + fmt = st_mesa_format_to_pipe_format(stImage->base.TexFormat); bindings = default_bindings(st, fmt); @@ -507,8 +525,6 @@ st_TexImage(GLcontext * ctx, struct pipe_screen *screen = st->pipe->screen; struct st_texture_object *stObj = st_texture_object(texObj); struct st_texture_image *stImage = st_texture_image(texImage); - GLint postConvWidth, postConvHeight; - GLint texelBytes, sizeInBytes; GLuint dstRowStride = 0; struct gl_pixelstore_attrib unpackNB; enum pipe_transfer_usage transfer_usage = 0; @@ -516,6 +532,12 @@ st_TexImage(GLcontext * ctx, DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__, _mesa_lookup_enum_by_nr(target), level, width, height, depth, border); + /* The Mesa/Gallium state tracker does not implement the imaging extensions + * such as convolution. + */ + assert(!ctx->Extensions.ARB_imaging); + assert(!ctx->Extensions.EXT_convolution); + /* switch to "normal" */ if (stObj->surface_based) { _mesa_clear_texture_object(ctx, texObj); @@ -532,39 +554,17 @@ st_TexImage(GLcontext * ctx, texImage->Border = 0; border = 0; } - - postConvWidth = width; - postConvHeight = height; + else { + assert(texImage->Width == width); + assert(texImage->Height == height); + assert(texImage->Depth == depth); + } stImage->face = _mesa_tex_target_to_face(target); stImage->level = level; -#if FEATURE_convolve - if (ctx->_ImageTransferState & IMAGE_CONVOLUTION_BIT) { - _mesa_adjust_image_for_convolution(ctx, dims, &postConvWidth, - &postConvHeight); - } -#endif - _mesa_set_fetch_functions(texImage, dims); - if (_mesa_is_format_compressed(texImage->TexFormat)) { - /* must be a compressed format */ - texelBytes = 0; - } - else { - texelBytes = _mesa_get_format_bytes(texImage->TexFormat); - - /* Minimum pitch of 32 bytes */ - if (postConvWidth * texelBytes < 32) { - postConvWidth = 32 / texelBytes; - texImage->RowStride = postConvWidth; - } - - /* we'll set RowStride elsewhere when the texture is a "mapped" state */ - /*assert(texImage->RowStride == postConvWidth);*/ - } - /* Release the reference to a potentially orphaned buffer. * Release any old malloced memory. */ @@ -581,15 +581,13 @@ st_TexImage(GLcontext * ctx, * mipmap. If so, free the old mipmap. */ if (stObj->pt) { - if (stObj->teximage_realloc || - level > (GLint) stObj->pt->last_level || + if (level > (GLint) stObj->pt->last_level || !st_texture_match_image(stObj->pt, &stImage->base, stImage->face, stImage->level)) { DBG("release it\n"); pipe_resource_reference(&stObj->pt, NULL); assert(!stObj->pt); pipe_sampler_view_reference(&stObj->sampler_view, NULL); - stObj->teximage_realloc = FALSE; } } @@ -615,9 +613,13 @@ st_TexImage(GLcontext * ctx, assert(!stImage->pt); + /* Check if this texture image can live inside the texture object's buffer. + * If so, store the image there. Otherwise the image will temporarily live + * in its own buffer. + */ if (stObj->pt && st_texture_match_image(stObj->pt, &stImage->base, - stImage->face, stImage->level)) { + stImage->face, stImage->level)) { pipe_resource_reference(&stImage->pt, stObj->pt); assert(stImage->pt); @@ -626,9 +628,11 @@ st_TexImage(GLcontext * ctx, if (!stImage->pt) DBG("XXX: Image did not fit into texture - storing in local memory!\n"); - /* st_CopyTexImage calls this function with pixels == NULL, with - * the expectation that the texture will be set up but nothing - * more will be done. This is where those calls return: + /* Pixel data may come from regular user memory or a PBO. For the later, + * do bounds checking and map the PBO to read pixels data from it. + * + * XXX we should try to use a GPU-accelerated path to copy the image data + * from the PBO to the texture. */ if (compressed_src) { pixels = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, pixels, @@ -641,10 +645,6 @@ st_TexImage(GLcontext * ctx, pixels, unpack, "glTexImage"); } - /* Note: we can't check for pixels==NULL until after we've allocated - * memory for the texture. - */ - /* See if we can do texture compression with a blit/render. */ if (!compressed_src && @@ -663,7 +663,12 @@ st_TexImage(GLcontext * ctx, } } + /* + * Prepare to store the texture data. Either map the gallium texture buffer + * memory or malloc space for it. + */ if (stImage->pt) { + /* Store the image in the gallium texture memory buffer */ if (format == GL_DEPTH_COMPONENT && util_format_is_depth_and_stencil(stImage->pt->format)) transfer_usage = PIPE_TRANSFER_READ_WRITE; @@ -671,28 +676,17 @@ st_TexImage(GLcontext * ctx, transfer_usage = PIPE_TRANSFER_WRITE; texImage->Data = st_texture_image_map(st, stImage, 0, - transfer_usage, 0, 0, - stImage->base.Width, - stImage->base.Height); + transfer_usage, 0, 0, width, height); if(stImage->transfer) dstRowStride = stImage->transfer->stride; } else { /* Allocate regular memory and store the image there temporarily. */ - if (_mesa_is_format_compressed(texImage->TexFormat)) { - sizeInBytes = _mesa_format_image_size(texImage->TexFormat, - texImage->Width, - texImage->Height, - texImage->Depth); - dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width); - assert(dims != 3); - } - else { - dstRowStride = postConvWidth * texelBytes; - sizeInBytes = depth * dstRowStride * postConvHeight; - } + GLuint imageSize = _mesa_format_image_size(texImage->TexFormat, + width, height, depth); + dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width); - texImage->Data = _mesa_align_malloc(sizeInBytes, 16); + texImage->Data = _mesa_align_malloc(imageSize, 16); } if (!texImage->Data) { @@ -700,33 +694,33 @@ st_TexImage(GLcontext * ctx, return; } - if (!pixels) + if (!pixels) { + /* We've allocated texture memory, but have no pixel data - all done. */ goto done; + } DBG("Upload image %dx%dx%d row_len %x pitch %x\n", - width, height, depth, width * texelBytes, dstRowStride); + width, height, depth, width, dstRowStride); - /* Copy data. Would like to know when it's ok for us to eg. use - * the blitter to copy. Or, use the hardware to do the format - * conversion and copy: + /* Copy user texture image into the texture buffer. */ if (compressed_src) { - const GLuint srcImageStride = _mesa_format_row_stride(texImage->TexFormat, width); - if(dstRowStride == srcImageStride) + const GLuint srcRowStride = + _mesa_format_row_stride(texImage->TexFormat, width); + if (dstRowStride == srcRowStride) { memcpy(texImage->Data, pixels, imageSize); - else - { + } + else { char *dst = texImage->Data; const char *src = pixels; GLuint i, bw, bh, lines; _mesa_get_format_block_size(texImage->TexFormat, &bw, &bh); lines = (height + bh - 1) / bh; - for(i = 0; i < lines; ++i) - { - memcpy(dst, src, srcImageStride); + for (i = 0; i < lines; ++i) { + memcpy(dst, src, srcRowStride); dst += dstRowStride; - src += srcImageStride; + src += srcRowStride; } } } @@ -755,8 +749,7 @@ st_TexImage(GLcontext * ctx, /* map next slice of 3D texture */ texImage->Data = st_texture_image_map(st, stImage, i + 1, transfer_usage, 0, 0, - stImage->base.Width, - stImage->base.Height); + width, height); src += srcImageStride; } } @@ -1757,12 +1750,26 @@ st_CopyTexSubImage3D(GLcontext * ctx, GLenum target, GLint level, } +/** + * Copy image data from stImage into the texture object 'stObj' at level + * 'dstLevel'. + */ static void copy_image_data_to_texture(struct st_context *st, struct st_texture_object *stObj, GLuint dstLevel, struct st_texture_image *stImage) { + /* debug checks */ + { + const struct gl_texture_image *dstImage = + stObj->base.Image[stImage->face][stImage->level]; + assert(dstImage); + assert(dstImage->Width == stImage->base.Width); + assert(dstImage->Height == stImage->base.Height); + assert(dstImage->Depth == stImage->base.Depth); + } + if (stImage->pt) { /* Copy potentially with the blitter: */ @@ -1805,16 +1812,14 @@ copy_image_data_to_texture(struct st_context *st, GLboolean st_finalize_texture(GLcontext *ctx, struct pipe_context *pipe, - struct gl_texture_object *tObj, - GLboolean *needFlush) + struct gl_texture_object *tObj) { struct st_context *st = st_context(ctx); struct st_texture_object *stObj = st_texture_object(tObj); const GLuint nr_faces = (stObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1; - GLuint blockSize, face; + GLuint face; struct st_texture_image *firstImage; - - *needFlush = GL_FALSE; + enum pipe_format firstImageFormat; if (stObj->base._Complete) { /* The texture is complete and we know exactly how many mipmap levels @@ -1827,10 +1832,11 @@ st_finalize_texture(GLcontext *ctx, stObj->base.MinFilter == GL_NEAREST) stObj->lastLevel = stObj->base.BaseLevel; else - stObj->lastLevel = stObj->base._MaxLevel - stObj->base.BaseLevel; + stObj->lastLevel = stObj->base._MaxLevel; } firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]); + assert(firstImage); /* If both firstImage and stObj point to a texture which can contain * all active images, favour firstImage. Note that because of the @@ -1844,22 +1850,23 @@ st_finalize_texture(GLcontext *ctx, pipe_sampler_view_reference(&stObj->sampler_view, NULL); } - /* bytes per pixel block (blocks are usually 1x1) */ - blockSize = _mesa_get_format_bytes(firstImage->base.TexFormat); + /* Find gallium format for the Mesa texture */ + firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat); /* If we already have a gallium texture, check that it matches the texture * object's format, target, size, num_levels, etc. */ if (stObj->pt) { - const enum pipe_format fmt = - st_mesa_format_to_pipe_format(firstImage->base.TexFormat); if (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) || - stObj->pt->format != fmt || + stObj->pt->format != firstImageFormat || stObj->pt->last_level < stObj->lastLevel || - stObj->pt->width0 != firstImage->base.Width2 || - stObj->pt->height0 != firstImage->base.Height2 || - stObj->pt->depth0 != firstImage->base.Depth2) + stObj->pt->width0 != stObj->width0 || + stObj->pt->height0 != stObj->height0 || + stObj->pt->depth0 != stObj->depth0) { + /* The gallium texture does not match the Mesa texture so delete the + * gallium texture now. We'll make a new one below. + */ pipe_resource_reference(&stObj->pt, NULL); pipe_sampler_view_reference(&stObj->sampler_view, NULL); st->dirty.st |= ST_NEW_FRAMEBUFFER; @@ -1869,17 +1876,15 @@ st_finalize_texture(GLcontext *ctx, /* May need to create a new gallium texture: */ if (!stObj->pt) { - const enum pipe_format fmt = - st_mesa_format_to_pipe_format(firstImage->base.TexFormat); - GLuint bindings = default_bindings(st, fmt); + GLuint bindings = default_bindings(st, firstImageFormat); stObj->pt = st_texture_create(st, gl_target_to_pipe(stObj->base.Target), - fmt, + firstImageFormat, stObj->lastLevel, - firstImage->base.Width2, - firstImage->base.Height2, - firstImage->base.Depth2, + stObj->width0, + stObj->height0, + stObj->depth0, bindings); if (!stObj->pt) { @@ -1894,13 +1899,12 @@ st_finalize_texture(GLcontext *ctx, GLuint level; for (level = 0; level <= stObj->lastLevel; level++) { struct st_texture_image *stImage = - st_texture_image(stObj->base.Image[face][stObj->base.BaseLevel + level]); + st_texture_image(stObj->base.Image[face][level]); /* Need to import images in main memory or held in other textures. */ if (stImage && stObj->pt != stImage->pt) { copy_image_data_to_texture(st, stObj, level, stImage); - *needFlush = GL_TRUE; } } } diff --git a/src/mesa/state_tracker/st_cb_texture.h b/src/mesa/state_tracker/st_cb_texture.h index f1fe0339cdd..1cd9fc3a50f 100644 --- a/src/mesa/state_tracker/st_cb_texture.h +++ b/src/mesa/state_tracker/st_cb_texture.h @@ -33,8 +33,7 @@ extern GLboolean st_finalize_texture(GLcontext *ctx, struct pipe_context *pipe, - struct gl_texture_object *tObj, - GLboolean *needFlush); + struct gl_texture_object *tObj); extern struct gl_texture_object * diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 5fcb6b9dcf9..e8a3926e6db 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -64,6 +64,7 @@ #include "pipe/p_context.h" #include "util/u_inlines.h" #include "util/u_rect.h" +#include "util/u_surface.h" #include "draw/draw_context.h" #include "cso_cache/cso_context.h" @@ -199,7 +200,16 @@ struct st_context *st_create_context(struct pipe_context *pipe, memset(&funcs, 0, sizeof(funcs)); st_init_driver_functions(&funcs); - ctx = _mesa_create_context(visual, shareCtx, &funcs, NULL); +#if FEATURE_GL + ctx = _mesa_create_context_for_api(API_OPENGL, + visual, shareCtx, &funcs, NULL); +#elif FEATURE_ES1 + ctx = _mesa_create_context_for_api(API_OPENGLES, + visual, shareCtx, &funcs, NULL); +#elif FEATURE_ES2 + ctx = _mesa_create_context_for_api(API_OPENGLES2, + visual, shareCtx, &funcs, NULL); +#endif /* XXX: need a capability bit in gallium to query if the pipe * driver prefers DP4 or MUL/MAD for vertex transformation. diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index b8b75c7de62..6b1d51b3f44 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -311,7 +311,6 @@ st_generate_mipmap(GLcontext *ctx, GLenum target, * mipmap levels we need to generate. So allocate a new texture. */ struct pipe_resource *oldTex = stObj->pt; - GLboolean needFlush; /* create new texture with space for more levels */ stObj->pt = st_texture_create(st, @@ -331,7 +330,7 @@ st_generate_mipmap(GLcontext *ctx, GLenum target, /* This will copy the old texture's base image into the new texture * which we just allocated. */ - st_finalize_texture(ctx, st->pipe, texObj, &needFlush); + st_finalize_texture(ctx, st->pipe, texObj); /* release the old tex (will likely be freed too) */ pipe_resource_reference(&oldTex, NULL); @@ -342,10 +341,10 @@ st_generate_mipmap(GLcontext *ctx, GLenum target, assert(lastLevel <= pt->last_level); - /* Recall that the Mesa BaseLevel image is stored in the gallium - * texture's level[0] position. So pass baseLevel=0 here. + /* Try to generate the mipmap by rendering/texturing. If that fails, + * use the software fallback. */ - if (!st_render_mipmap(st, target, stObj, 0, lastLevel)) { + if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) { fallback_generate_mipmap(ctx, target, texObj); } diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c index 1b52e77b7d9..6a42789b824 100644 --- a/src/mesa/state_tracker/st_texture.c +++ b/src/mesa/state_tracker/st_texture.c @@ -45,24 +45,6 @@ #define DBG if(0) printf -#if 0 -static GLenum -target_to_target(GLenum target) -{ - switch (target) { - case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB: - case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB: - case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: - return GL_TEXTURE_CUBE_MAP_ARB; - default: - return target; - } -} -#endif - /** * Allocate a new pipe_resource object @@ -143,10 +125,12 @@ st_texture_match_image(const struct pipe_resource *pt, /** - * Map a teximage in a mipmap texture. - * \param row_stride returns row stride in bytes - * \param image_stride returns image stride in bytes (for 3D textures). - * \return address of mapping + * Map a texture image and return the address for a particular 2D face/slice/ + * layer. The stImage indicates the cube face and mipmap level. The slice + * of the 3D texture is passed in 'zoffset'. + * \param usage one of the PIPE_TRANSFER_x values + * \param x, y, w, h the region of interest of the 2D image. + * \return address of mapping or NULL if any error */ GLubyte * st_texture_image_map(struct st_context *st, struct st_texture_image *stImage, @@ -269,6 +253,9 @@ st_texture_image_copy(struct pipe_context *pipe, struct pipe_surface *dst_surface; GLuint i; + assert(src->width0 == dst->width0); + assert(src->height0 == dst->height0); + for (i = 0; i < depth; i++) { GLuint srcLevel; diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index d0298817ded..447f091db1f 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -38,6 +38,9 @@ struct pipe_resource; +/** + * Subclass of gl_texure_image. + */ struct st_texture_image { struct gl_texture_image base; @@ -57,7 +60,9 @@ struct st_texture_image }; - +/** + * Subclass of gl_texure_object. + */ struct st_texture_object { struct gl_texture_object base; /* The "parent" object */ @@ -66,6 +71,9 @@ struct st_texture_object */ GLuint lastLevel; + /** The size of the level=0 mipmap image */ + GLuint width0, height0, depth0; + /* On validation any active images held in main memory or in other * textures will be copied to this texture and the old storage freed. */ @@ -76,8 +84,6 @@ struct st_texture_object */ struct pipe_sampler_view *sampler_view; - GLboolean teximage_realloc; - /* True if there is/was a surface bound to this texture object. It helps * track whether the texture object is surface based or not. */ diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h index 7a085f63c73..07d31f6ce36 100644 --- a/src/mesa/vbo/vbo.h +++ b/src/mesa/vbo/vbo.h @@ -139,6 +139,30 @@ void GLAPIENTRY _vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params); void GLAPIENTRY +_vbo_Materialf(GLenum face, GLenum pname, GLfloat param); + +void GLAPIENTRY _vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +void GLAPIENTRY +_vbo_VertexAttrib1f(GLuint indx, GLfloat x); + +void GLAPIENTRY +_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values); + +void GLAPIENTRY +_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); + +void GLAPIENTRY +_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values); + +void GLAPIENTRY +_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); + +void GLAPIENTRY +_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values); + +void GLAPIENTRY +_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values); + #endif diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index e3be39a342e..13148fc3e22 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -199,7 +199,8 @@ GLboolean _vbo_CreateContext( GLcontext *ctx ) */ vbo_exec_init( ctx ); #if FEATURE_dlist - vbo_save_init( ctx ); + if (ctx->API == API_OPENGL) + vbo_save_init( ctx ); #endif _math_init_eval(); @@ -233,7 +234,8 @@ void _vbo_DestroyContext( GLcontext *ctx ) vbo_exec_destroy(ctx); #if FEATURE_dlist - vbo_save_destroy(ctx); + if (ctx->API == API_OPENGL) + vbo_save_destroy(ctx); #endif FREE(vbo); ctx->swtnl_im = NULL; diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 0ccbb423831..365419d44fa 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -958,6 +958,7 @@ _vbo_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) vbo_MultiTexCoord4f(target, s, t, r, q); } + void GLAPIENTRY _vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params) { @@ -966,7 +967,63 @@ _vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params) void GLAPIENTRY +_vbo_Materialf(GLenum face, GLenum pname, GLfloat param) +{ + vbo_Materialfv(face, pname, ¶m); +} + + +void GLAPIENTRY _vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { vbo_VertexAttrib4fARB(index, x, y, z, w); } + + +void GLAPIENTRY +_vbo_VertexAttrib1f(GLuint indx, GLfloat x) +{ + vbo_VertexAttrib1fARB(indx, x); +} + + +void GLAPIENTRY +_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values) +{ + vbo_VertexAttrib1fvARB(indx, values); +} + + +void GLAPIENTRY +_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) +{ + vbo_VertexAttrib2fARB(indx, x, y); +} + + +void GLAPIENTRY +_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values) +{ + vbo_VertexAttrib2fvARB(indx, values); +} + + +void GLAPIENTRY +_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) +{ + vbo_VertexAttrib3fARB(indx, x, y, z); +} + + +void GLAPIENTRY +_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values) +{ + vbo_VertexAttrib3fvARB(indx, values); +} + + +void GLAPIENTRY +_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values) +{ + vbo_VertexAttrib4fvARB(indx, values); +} diff --git a/src/mesa/x86-64/xform4.S b/src/mesa/x86-64/xform4.S index 805969127db..e52a6118c31 100644 --- a/src/mesa/x86-64/xform4.S +++ b/src/mesa/x86-64/xform4.S @@ -30,6 +30,7 @@ .align 16 .globl _mesa_x86_64_cpuid +.hidden _mesa_x86_64_cpuid _mesa_x86_64_cpuid: pushq %rbx movl (%rdi), %eax @@ -46,6 +47,7 @@ _mesa_x86_64_cpuid: .align 16 .globl _mesa_x86_64_transform_points4_general +.hidden _mesa_x86_64_transform_points4_general _mesa_x86_64_transform_points4_general: /* * rdi = dest @@ -121,6 +123,7 @@ p4_constants: .text .align 16 .globl _mesa_x86_64_transform_points4_3d +.hidden _mesa_x86_64_transform_points4_3d /* * this is slower than _mesa_x86_64_transform_points4_general * because it ensures that the last matrix row (or is it column?) is 0,0,0,1 @@ -192,6 +195,7 @@ p4_3d_done: .align 16 .globl _mesa_x86_64_transform_points4_identity +.hidden _mesa_x86_64_transform_points4_identity _mesa_x86_64_transform_points4_identity: movl V4F_COUNT(%rdx), %ecx /* count */ @@ -220,6 +224,7 @@ p4_identity_done: .align 16 .globl _mesa_3dnow_transform_points4_3d_no_rot +.hidden _mesa_3dnow_transform_points4_3d_no_rot _mesa_3dnow_transform_points4_3d_no_rot: movl V4F_COUNT(%rdx), %ecx /* count */ @@ -284,6 +289,7 @@ p4_3d_no_rot_done: .align 16 .globl _mesa_3dnow_transform_points4_perspective +.hidden _mesa_3dnow_transform_points4_perspective _mesa_3dnow_transform_points4_perspective: movl V4F_COUNT(%rdx), %ecx /* count */ @@ -350,6 +356,7 @@ p4_perspective_done: .align 16 .globl _mesa_3dnow_transform_points4_2d_no_rot +.hidden _mesa_3dnow_transform_points4_2d_no_rot _mesa_3dnow_transform_points4_2d_no_rot: movl V4F_COUNT(%rdx), %ecx /* count */ @@ -405,6 +412,7 @@ p4_2d_no_rot_done: .align 16 .globl _mesa_3dnow_transform_points4_2d +.hidden _mesa_3dnow_transform_points4_2d _mesa_3dnow_transform_points4_2d: movl V4F_COUNT(%rdx), %ecx /* count */ |