aboutsummaryrefslogtreecommitdiff
path: root/mesalib
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-10-05 17:44:57 +0200
committermarha <marha@users.sourceforge.net>2011-10-05 17:44:57 +0200
commit8af87a5b60e37ae84fdd759e2c1602be38be4905 (patch)
tree2e621c7fbdc4dfe9eb8d733af4cc232bc03643d4 /mesalib
parent8238de0fe0c28bd54b3e6cdd1fc94513cf21d3cc (diff)
parentf7025b4baa1ba35ee796785641f04eac5bedb0a6 (diff)
downloadvcxsrv-8af87a5b60e37ae84fdd759e2c1602be38be4905.tar.gz
vcxsrv-8af87a5b60e37ae84fdd759e2c1602be38be4905.tar.bz2
vcxsrv-8af87a5b60e37ae84fdd759e2c1602be38be4905.zip
Merge remote-tracking branch 'origin/released'
Conflicts: mesalib/src/mapi/glapi/glapi.h mesalib/src/mesa/main/syncobj.h xorg-server/dix/events.c xorg-server/dix/getevents.c xorg-server/include/misc.h
Diffstat (limited to 'mesalib')
-rw-r--r--mesalib/Android.mk2
-rw-r--r--mesalib/configs/default1
-rw-r--r--mesalib/configs/freebsd-dri4
-rw-r--r--mesalib/configs/linux-dri16
-rw-r--r--mesalib/configs/linux-dri-xcb10
-rw-r--r--mesalib/configs/linux-egl116
-rw-r--r--mesalib/configs/linux-llvm2
-rw-r--r--mesalib/configure.ac4
-rw-r--r--mesalib/docs/envvars.html2
-rw-r--r--mesalib/docs/install.html13
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y89
-rw-r--r--mesalib/src/glsl/ir_validate.cpp1
-rw-r--r--mesalib/src/glsl/linker.cpp146
-rw-r--r--mesalib/src/glsl/opt_function_inlining.cpp1
-rw-r--r--mesalib/src/glsl/standalone_scaffolding.cpp1
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_draw_buffers.xml187
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_API.xml119
-rw-r--r--mesalib/src/mapi/glapi/gen/gles_api.py2
-rw-r--r--mesalib/src/mapi/glapi/glapi.h6
-rw-r--r--mesalib/src/mapi/glapi/glapi_gentable.c7
-rw-r--r--mesalib/src/mapi/glapi/glapi_mapi_tmp.h11
-rw-r--r--mesalib/src/mapi/glapi/glapi_sparc.S1
-rw-r--r--mesalib/src/mapi/glapi/glapi_x86-64.S1
-rw-r--r--mesalib/src/mapi/glapi/glapi_x86.S1
-rw-r--r--mesalib/src/mapi/glapi/glapitemp.h7
-rw-r--r--mesalib/src/mapi/glapi/glprocs.h324
-rw-r--r--mesalib/src/mesa/SConscript2
-rw-r--r--mesalib/src/mesa/drivers/common/driverfuncs.c2
-rw-r--r--mesalib/src/mesa/drivers/common/meta.c31
-rw-r--r--mesalib/src/mesa/drivers/common/meta.h3
-rw-r--r--mesalib/src/mesa/drivers/dri/swrast/swrast.c1
-rw-r--r--mesalib/src/mesa/main/APIspec.xml93
-rw-r--r--mesalib/src/mesa/main/accum.c3
-rw-r--r--mesalib/src/mesa/main/accum.h150
-rw-r--r--mesalib/src/mesa/main/api_arrayelt.h168
-rw-r--r--mesalib/src/mesa/main/api_loopback.h96
-rw-r--r--mesalib/src/mesa/main/arrayobj.c1104
-rw-r--r--mesalib/src/mesa/main/atifragshader.h308
-rw-r--r--mesalib/src/mesa/main/attrib.c106
-rw-r--r--mesalib/src/mesa/main/attrib.h160
-rw-r--r--mesalib/src/mesa/main/bitset.h2
-rw-r--r--mesalib/src/mesa/main/bufferobj.c4
-rw-r--r--mesalib/src/mesa/main/bufferobj.h6
-rw-r--r--mesalib/src/mesa/main/clear.c16
-rw-r--r--mesalib/src/mesa/main/colortab.h6
-rw-r--r--mesalib/src/mesa/main/convolve.h102
-rw-r--r--mesalib/src/mesa/main/dd.h22
-rw-r--r--mesalib/src/mesa/main/debug.c4
-rw-r--r--mesalib/src/mesa/main/dlist.c8
-rw-r--r--mesalib/src/mesa/main/dlist.h208
-rw-r--r--mesalib/src/mesa/main/drawpix.c11
-rw-r--r--mesalib/src/mesa/main/drawpix.h100
-rw-r--r--mesalib/src/mesa/main/enums.c6292
-rw-r--r--mesalib/src/mesa/main/eval.h222
-rw-r--r--mesalib/src/mesa/main/extensions.c9
-rw-r--r--mesalib/src/mesa/main/fbobject.c85
-rw-r--r--mesalib/src/mesa/main/fbobject.h390
-rw-r--r--mesalib/src/mesa/main/feedback.c2
-rw-r--r--mesalib/src/mesa/main/feedback.h198
-rw-r--r--mesalib/src/mesa/main/format_unpack.c2
-rw-r--r--mesalib/src/mesa/main/formats.c518
-rw-r--r--mesalib/src/mesa/main/formats.h46
-rw-r--r--mesalib/src/mesa/main/framebuffer.h2
-rw-r--r--mesalib/src/mesa/main/get.c48
-rw-r--r--mesalib/src/mesa/main/hash.c1094
-rw-r--r--mesalib/src/mesa/main/histogram.h116
-rw-r--r--mesalib/src/mesa/main/image.c4
-rw-r--r--mesalib/src/mesa/main/imports.h48
-rw-r--r--mesalib/src/mesa/main/mipmap.c356
-rw-r--r--mesalib/src/mesa/main/mipmap.h4
-rw-r--r--mesalib/src/mesa/main/mm.c2
-rw-r--r--mesalib/src/mesa/main/mtypes.h20
-rw-r--r--mesalib/src/mesa/main/pack.c10
-rw-r--r--mesalib/src/mesa/main/pixel.c2
-rw-r--r--mesalib/src/mesa/main/pixel.h153
-rw-r--r--mesalib/src/mesa/main/queryobj.h8
-rw-r--r--mesalib/src/mesa/main/rastpos.h120
-rw-r--r--mesalib/src/mesa/main/remap.h196
-rw-r--r--mesalib/src/mesa/main/remap_helper.h443
-rw-r--r--mesalib/src/mesa/main/renderbuffer.h2
-rw-r--r--mesalib/src/mesa/main/samplerobj.c2
-rw-r--r--mesalib/src/mesa/main/samplerobj.h2
-rw-r--r--mesalib/src/mesa/main/shader_query.cpp239
-rw-r--r--mesalib/src/mesa/main/shaderapi.c145
-rw-r--r--mesalib/src/mesa/main/shaderapi.h390
-rw-r--r--mesalib/src/mesa/main/shaderobj.c11
-rw-r--r--mesalib/src/mesa/main/shaderobj.h274
-rw-r--r--mesalib/src/mesa/main/state.h2
-rw-r--r--mesalib/src/mesa/main/syncobj.h238
-rw-r--r--mesalib/src/mesa/main/texcompress_s3tc.c2
-rw-r--r--mesalib/src/mesa/main/texcompress_s3tc.h2
-rw-r--r--mesalib/src/mesa/main/texformat.c83
-rw-r--r--mesalib/src/mesa/main/texgen.h170
-rw-r--r--mesalib/src/mesa/main/texgetimage.c24
-rw-r--r--mesalib/src/mesa/main/texgetimage.h3
-rw-r--r--mesalib/src/mesa/main/teximage.c2
-rw-r--r--mesalib/src/mesa/main/teximage.h4
-rw-r--r--mesalib/src/mesa/main/texobj.h2
-rw-r--r--mesalib/src/mesa/main/texparam.c4
-rw-r--r--mesalib/src/mesa/main/texstate.h184
-rw-r--r--mesalib/src/mesa/main/texstore.c441
-rw-r--r--mesalib/src/mesa/main/transformfeedback.h274
-rw-r--r--mesalib/src/mesa/main/varray.h2
-rw-r--r--mesalib/src/mesa/main/version.c1
-rw-r--r--mesalib/src/mesa/main/vtxfmt.h118
-rw-r--r--mesalib/src/mesa/program/hash_table.c39
-rw-r--r--mesalib/src/mesa/program/hash_table.h99
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp16
-rw-r--r--mesalib/src/mesa/program/prog_execute.c14
-rw-r--r--mesalib/src/mesa/program/prog_parameter.c22
-rw-r--r--mesalib/src/mesa/program/prog_parameter.h6
-rw-r--r--mesalib/src/mesa/program/prog_statevars.c7
-rw-r--r--mesalib/src/mesa/program/program.c10
-rw-r--r--mesalib/src/mesa/program/program.h18
-rw-r--r--mesalib/src/mesa/program/sampler.cpp17
-rw-r--r--mesalib/src/mesa/program/string_to_uint_map.cpp42
-rw-r--r--mesalib/src/mesa/sources.mak6
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texture.c102
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.c14
-rw-r--r--mesalib/src/mesa/state_tracker/st_gen_mipmap.c205
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp14
-rw-r--r--mesalib/src/mesa/swrast/s_aaline.c984
-rw-r--r--mesalib/src/mesa/swrast/s_aatriangle.c624
-rw-r--r--mesalib/src/mesa/swrast/s_blit.c2
-rw-r--r--mesalib/src/mesa/swrast/s_context.c11
-rw-r--r--mesalib/src/mesa/swrast/s_context.h12
-rw-r--r--mesalib/src/mesa/swrast/s_fragprog.c2
-rw-r--r--mesalib/src/mesa/swrast/s_logic.c438
-rw-r--r--mesalib/src/mesa/swrast/s_points.c1144
-rw-r--r--mesalib/src/mesa/swrast/s_span.c22
-rw-r--r--mesalib/src/mesa/swrast/s_stencil.c2
-rw-r--r--mesalib/src/mesa/swrast/s_texcombine.c22
-rw-r--r--mesalib/src/mesa/swrast/s_texfetch.c2
-rw-r--r--mesalib/src/mesa/swrast/s_texfilter.c52
-rw-r--r--mesalib/src/mesa/swrast/s_texture.c7
-rw-r--r--mesalib/src/mesa/swrast/s_triangle.c8
-rw-r--r--mesalib/src/mesa/swrast/s_zoom.c866
-rw-r--r--mesalib/src/mesa/tnl/t_vb_program.c1146
-rw-r--r--mesalib/src/mesa/tnl/t_vertex_generic.c98
-rw-r--r--mesalib/src/mesa/vbo/vbo_attrib_tmp.h12
-rw-r--r--mesalib/src/mesa/vbo/vbo_context.h226
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec.h4
-rw-r--r--mesalib/src/mesa/vbo/vbo_rebase.c3
-rw-r--r--mesalib/src/mesa/vbo/vbo_save.h4
144 files changed, 11998 insertions, 11125 deletions
diff --git a/mesalib/Android.mk b/mesalib/Android.mk
index a5c9ebc5f..29453bc34 100644
--- a/mesalib/Android.mk
+++ b/mesalib/Android.mk
@@ -149,7 +149,7 @@ ifneq ($(filter r300g, $(MESA_GPU_DRIVERS)),)
gallium_DRIVERS += libmesa_pipe_r300
endif
ifneq ($(filter r600g, $(MESA_GPU_DRIVERS)),)
-gallium_DRIVERS += libmesa_pipe_r600 libmesa_winsys_r600
+gallium_DRIVERS += libmesa_pipe_r600
endif
endif
diff --git a/mesalib/configs/default b/mesalib/configs/default
index 43666110b..2b1bf9bef 100644
--- a/mesalib/configs/default
+++ b/mesalib/configs/default
@@ -40,6 +40,7 @@ MKDEP_OPTIONS = -fdepend
MAKE = make
FLEX = flex
BISON = bison
+PKG_CONFIG = pkg-config
# Use MINSTALL for installing libraries, INSTALL for everything else
MINSTALL = $(SHELL) $(TOP)/bin/minstall
diff --git a/mesalib/configs/freebsd-dri b/mesalib/configs/freebsd-dri
index c4169b81d..9e810c4b8 100644
--- a/mesalib/configs/freebsd-dri
+++ b/mesalib/configs/freebsd-dri
@@ -32,8 +32,8 @@ MESA_ASM_SOURCES =
# Library/program dependencies
MESA_MODULES = $(TOP)/src/mesa/libmesa.a
-LIBDRM_CFLAGS = `pkg-config --cflags libdrm`
-LIBDRM_LIB = `pkg-config --libs libdrm`
+LIBDRM_CFLAGS = `$(PKG_CONFIG) --cflags libdrm`
+LIBDRM_LIB = `$(PKG_CONFIG) --libs libdrm`
DRI_LIB_DEPS = $(MESA_MODULES) -L/usr/local/lib -lm -pthread -lexpat $(LIBDRM_LIB)
GL_LIB_DEPS = -L/usr/local/lib -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
-lm -pthread $(LIBDRM_LIB)
diff --git a/mesalib/configs/linux-dri b/mesalib/configs/linux-dri
index 26c73ccf0..a3e9baba2 100644
--- a/mesalib/configs/linux-dri
+++ b/mesalib/configs/linux-dri
@@ -44,8 +44,8 @@ EXTRA_LIB_PATH=-L/usr/X11R6/lib
MESA_MODULES = $(TOP)/src/mesa/libmesa.a
-LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
-LIBDRM_LIB = $(shell pkg-config --libs libdrm)
+LIBDRM_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm)
+LIBDRM_LIB = $(shell $(PKG_CONFIG) --libs libdrm)
DRI_LIB_DEPS = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
-lm -lpthread -ldl $(LIBDRM_LIB)
@@ -64,13 +64,13 @@ GALLIUM_STATE_TRACKERS_DIRS = egl
DRI_DIRS = i915 i965 nouveau r200 r300 r600 radeon swrast
-INTEL_LIBS = $(shell pkg-config --libs libdrm_intel)
-INTEL_CFLAGS = $(shell pkg-config --cflags libdrm_intel)
+INTEL_LIBS = $(shell $(PKG_CONFIG) --libs libdrm_intel)
+INTEL_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm_intel)
-NOUVEAU_LIBS = $(shell pkg-config --libs libdrm_nouveau)
-NOUVEAU_CFLAGS = $(shell pkg-config --cflags libdrm_nouveau)
+NOUVEAU_LIBS = $(shell $(PKG_CONFIG) --libs libdrm_nouveau)
+NOUVEAU_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm_nouveau)
-LIBDRM_RADEON_LIBS = $(shell pkg-config --libs libdrm_radeon)
-LIBDRM_RADEON_CFLAGS = $(shell pkg-config --cflags libdrm_radeon)
+LIBDRM_RADEON_LIBS = $(shell $(PKG_CONFIG) --libs libdrm_radeon)
+LIBDRM_RADEON_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm_radeon)
RADEON_CFLAGS = "-DHAVE_LIBDRM_RADEON=1 $(LIBDRM_RADEON_CFLAGS)"
RADEON_LDFLAGS = $(LIBDRM_RADEON_LIBS)
diff --git a/mesalib/configs/linux-dri-xcb b/mesalib/configs/linux-dri-xcb
index a845f71d2..6968bebe4 100644
--- a/mesalib/configs/linux-dri-xcb
+++ b/mesalib/configs/linux-dri-xcb
@@ -25,7 +25,7 @@ DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
-DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \
-DHAVE_ALIAS -DUSE_XCB -DHAVE_POSIX_MEMALIGN
-X11_INCLUDES = $(shell pkg-config --cflags-only-I x11) $(shell pkg-config --cflags-only-I xcb) $(shell pkg-config --cflags-only-I x11-xcb) $(shell pkg-config --cflags-only-I xcb-glx)
+X11_INCLUDES = $(shell $(PKG_CONFIG) --cflags-only-I x11) $(shell $(PKG_CONFIG) --cflags-only-I xcb) $(shell $(PKG_CONFIG) --cflags-only-I x11-xcb) $(shell $(PKG_CONFIG) --cflags-only-I xcb-glx)
CFLAGS = -Wall -Wmissing-prototypes $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) \
$(DEFINES) $(ASM_FLAGS) -std=c99 -ffast-math
@@ -39,15 +39,15 @@ CXXFLAGS += -fno-strict-aliasing
MESA_ASM_SOURCES =
# Library/program dependencies
-EXTRA_LIB_PATH=$(shell pkg-config --libs-only-L x11)
+EXTRA_LIB_PATH=$(shell $(PKG_CONFIG) --libs-only-L x11)
MESA_MODULES = $(TOP)/src/mesa/libmesa.a
-LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
-LIBDRM_LIB = $(shell pkg-config --libs libdrm)
+LIBDRM_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm)
+LIBDRM_LIB = $(shell $(PKG_CONFIG) --libs libdrm)
DRI_LIB_DEPS = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lm -lpthread -ldl \
- $(LIBDRM_LIB) $(shell pkg-config --libs xcb) $(shell pkg-config --libs x11-xcb) $(shell pkg-config --libs xcb-glx)
+ $(LIBDRM_LIB) $(shell $(PKG_CONFIG) --libs xcb) $(shell $(PKG_CONFIG) --libs x11-xcb) $(shell $(PKG_CONFIG) --libs xcb-glx)
SRC_DIRS = glx gallium mesa glu
diff --git a/mesalib/configs/linux-egl b/mesalib/configs/linux-egl
index 7e928a690..2c8bfdd6f 100644
--- a/mesalib/configs/linux-egl
+++ b/mesalib/configs/linux-egl
@@ -1,58 +1,58 @@
-# -*-makefile-*-
-# Configuration for linux-dri: Linux DRI hardware drivers for XFree86 & others
-
-include $(TOP)/configs/default
-
-CONFIG_NAME = linux-dri
-
-# Compiler and flags
-CC = gcc
-CXX = g++
-
-#MKDEP = /usr/X11R6/bin/makedepend
-#MKDEP = gcc -M
-#MKDEP_OPTIONS = -MF depend
-
-OPT_FLAGS = -O -g
-PIC_FLAGS = -fPIC
-
-# Add '-DGLX_USE_TLS' to ARCH_FLAGS to enable TLS support.
-ARCH_FLAGS ?=
-
-DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
- -D_BSD_SOURCE -D_GNU_SOURCE \
- -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
- -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \
- -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
-
-X11_INCLUDES = -I/usr/X11R6/include
-
-CFLAGS = -Wall -Wmissing-prototypes -std=c99 -ffast-math \
- $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) $(ASM_FLAGS)
-
-CXXFLAGS = -Wall $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
-
-
-MESA_ASM_SOURCES =
-
-# Library/program dependencies
-EXTRA_LIB_PATH=-L/usr/X11R6/lib
-
-MESA_MODULES = $(TOP)/src/mesa/libmesa.a
-
-LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
-LIBDRM_LIB = $(shell pkg-config --libs libdrm)
-DRI_LIB_DEPS = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
-GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
- -lm -lpthread -ldl \
- $(LIBDRM_LIB)
-
-
-# Directories
-SRC_DIRS = gallium mesa gallium/winsys gallium/targets glu egl
-
-DRIVER_DIRS = dri
-GALLIUM_WINSYS_DIRS = egl_drm
-GALLIUM_TARGET_DIRS =
-
-DRI_DIRS = intel
+# -*-makefile-*-
+# Configuration for linux-dri: Linux DRI hardware drivers for XFree86 & others
+
+include $(TOP)/configs/default
+
+CONFIG_NAME = linux-dri
+
+# Compiler and flags
+CC = gcc
+CXX = g++
+
+#MKDEP = /usr/X11R6/bin/makedepend
+#MKDEP = gcc -M
+#MKDEP_OPTIONS = -MF depend
+
+OPT_FLAGS = -O -g
+PIC_FLAGS = -fPIC
+
+# Add '-DGLX_USE_TLS' to ARCH_FLAGS to enable TLS support.
+ARCH_FLAGS ?=
+
+DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
+ -D_BSD_SOURCE -D_GNU_SOURCE \
+ -DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
+ -DGLX_DIRECT_RENDERING -DGLX_INDIRECT_RENDERING \
+ -DHAVE_ALIAS -DHAVE_POSIX_MEMALIGN
+
+X11_INCLUDES = -I/usr/X11R6/include
+
+CFLAGS = -Wall -Wmissing-prototypes -std=c99 -ffast-math \
+ $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) $(ASM_FLAGS)
+
+CXXFLAGS = -Wall $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
+
+
+MESA_ASM_SOURCES =
+
+# Library/program dependencies
+EXTRA_LIB_PATH=-L/usr/X11R6/lib
+
+MESA_MODULES = $(TOP)/src/mesa/libmesa.a
+
+LIBDRM_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm)
+LIBDRM_LIB = $(shell $(PKG_CONFIG) --libs libdrm)
+DRI_LIB_DEPS = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
+GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
+ -lm -lpthread -ldl \
+ $(LIBDRM_LIB)
+
+
+# Directories
+SRC_DIRS = gallium mesa gallium/winsys gallium/targets glu egl
+
+DRIVER_DIRS = dri
+GALLIUM_WINSYS_DIRS = egl_drm
+GALLIUM_TARGET_DIRS =
+
+DRI_DIRS = intel
diff --git a/mesalib/configs/linux-llvm b/mesalib/configs/linux-llvm
index ef6c7bb10..259d8ac7a 100644
--- a/mesalib/configs/linux-llvm
+++ b/mesalib/configs/linux-llvm
@@ -44,4 +44,4 @@ LD = g++
GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -lstdc++
# to allow the NV drivers to compile
-LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
+LIBDRM_CFLAGS = $(shell $(PKG_CONFIG) --cflags libdrm)
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index 56aac7a81..49e81ad17 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -1798,7 +1798,7 @@ if test "x$with_gallium_drivers" != x; then
case "x$driver" in
xsvga)
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe"
- gallium_check_st "svga/drm" "dri-vmwgfx" "xorg-vmwgfx" "xa-vmwgfx"
+ gallium_check_st "svga/drm" "dri-vmwgfx" "" "xa-vmwgfx"
;;
xi915)
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
@@ -1824,7 +1824,7 @@ if test "x$with_gallium_drivers" != x; then
;;
xr600)
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
- gallium_check_st "r600/drm radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
+ gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
;;
xnouveau)
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
diff --git a/mesalib/docs/envvars.html b/mesalib/docs/envvars.html
index 8c5c6abf7..4b5e89926 100644
--- a/mesalib/docs/envvars.html
+++ b/mesalib/docs/envvars.html
@@ -84,8 +84,6 @@ See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
<li>MESA_GAMMA - gamma correction coefficients for red, green, blue channels
<li>MESA_XSYNC - enable synchronous X behavior (for debugging only)
<li>MESA_GLX_FORCE_CI - if set, force GLX to treat 8bpp visuals as CI visuals
-<li>MESA_GLX_FX - set to either "fullscreen" for full-screen rendering,
- "window" to render into a window, or "disable" to disable the Glide driver.
<li>MESA_GLX_FORCE_ALPHA - if set, forces RGB windows to have an alpha channel.
<li>MESA_GLX_DEPTH_BITS - specifies default number of bits for depth buffer.
<li>MESA_GLX_ALPHA_BITS - specifies default number of bits for alpha channel.
diff --git a/mesalib/docs/install.html b/mesalib/docs/install.html
index 85047913d..07e38bf3d 100644
--- a/mesalib/docs/install.html
+++ b/mesalib/docs/install.html
@@ -304,17 +304,8 @@ Documentation for other environments (some may be very out of date):
<UL>
<li><A HREF="README.VMS">README.VMS</A> - VMS
-<LI><A HREF="README.GGI">README.GGI</A> - GGI
-<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
-<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
-<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
-<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
-<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
-<LI><A HREF="README.MINGW32">README.MINGW32</A> - Mingw32
-<LI><A HREF="README.NeXT">README.NeXT</A> - NeXT
-<LI><A HREF="README.OpenStep">README.OpenStep</A> - OpenStep
-<LI><A HREF="README.OS2">README.OS2</A> - OS/2
-<LI><A HREF="README.WINDML">README.WINDML</A> - WindML
+<LI><A HREF="README.CYGWIN">README.CYGWIN</A> - Cygwin
+<LI><A HREF="README.WIN32">README.WIN32</A> - Win32
</UL>
diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y
index 940830416..17941a9be 100644
--- a/mesalib/src/glsl/glcpp/glcpp-parse.y
+++ b/mesalib/src/glsl/glcpp/glcpp-parse.y
@@ -1275,6 +1275,48 @@ _glcpp_parser_expand_if (glcpp_parser_t *parser, int type, token_list_t *list)
glcpp_parser_lex_from (parser, expanded);
}
+static void
+_glcpp_parser_apply_pastes (glcpp_parser_t *parser, token_list_t *list)
+{
+ token_node_t *node;
+
+ node = list->head;
+ while (node)
+ {
+ token_node_t *next_non_space;
+
+ /* Look ahead for a PASTE token, skipping space. */
+ next_non_space = node->next;
+ while (next_non_space && next_non_space->token->type == SPACE)
+ next_non_space = next_non_space->next;
+
+ if (next_non_space == NULL)
+ break;
+
+ if (next_non_space->token->type != PASTE) {
+ node = next_non_space;
+ continue;
+ }
+
+ /* Now find the next non-space token after the PASTE. */
+ next_non_space = next_non_space->next;
+ while (next_non_space && next_non_space->token->type == SPACE)
+ next_non_space = next_non_space->next;
+
+ if (next_non_space == NULL) {
+ yyerror (&node->token->location, parser, "'##' cannot appear at either end of a macro expansion\n");
+ return;
+ }
+
+ node->token = _token_paste (parser, node->token, next_non_space->token);
+ node->next = next_non_space->next;
+ if (next_non_space == list->tail)
+ list->tail = node;
+ }
+
+ list->non_space_tail = list->tail;
+}
+
/* This is a helper function that's essentially part of the
* implementation of _glcpp_parser_expand_node. It shouldn't be called
* except for by that function.
@@ -1386,43 +1428,7 @@ _glcpp_parser_expand_function (glcpp_parser_t *parser,
_token_list_trim_trailing_space (substituted);
- node = substituted->head;
- while (node)
- {
- token_node_t *next_non_space;
-
- /* Look ahead for a PASTE token, skipping space. */
- next_non_space = node->next;
- while (next_non_space && next_non_space->token->type == SPACE)
- next_non_space = next_non_space->next;
-
- if (next_non_space == NULL)
- break;
-
- if (next_non_space->token->type != PASTE) {
- node = next_non_space;
- continue;
- }
-
- /* Now find the next non-space token after the PASTE. */
- next_non_space = next_non_space->next;
- while (next_non_space && next_non_space->token->type == SPACE)
- next_non_space = next_non_space->next;
-
- if (next_non_space == NULL) {
- yyerror (&node->token->location, parser, "'##' cannot appear at either end of a macro expansion\n");
- return NULL;
- }
-
- node->token = _token_paste (parser, node->token, next_non_space->token);
- node->next = next_non_space->next;
- if (next_non_space == substituted->tail)
- substituted->tail = node;
-
- node = node->next;
- }
-
- substituted->non_space_tail = substituted->tail;
+ _glcpp_parser_apply_pastes (parser, substituted);
return substituted;
}
@@ -1492,13 +1498,16 @@ _glcpp_parser_expand_node (glcpp_parser_t *parser,
if (! macro->is_function)
{
+ token_list_t *replacement;
*last = node;
/* Replace a macro defined as empty with a SPACE token. */
if (macro->replacements == NULL)
return _token_list_create_with_one_space (parser);
- return _token_list_copy (parser, macro->replacements);
+ replacement = _token_list_copy (parser, macro->replacements);
+ _glcpp_parser_apply_pastes (parser, replacement);
+ return replacement;
}
return _glcpp_parser_expand_function (parser, node, last);
@@ -1654,8 +1663,8 @@ _check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc,
/* According to the GLSL specification, macro names starting with "__"
* or "GL_" are reserved for future use. So, don't allow them.
*/
- if (strncmp(identifier, "__", 2) == 0) {
- glcpp_error (loc, parser, "Macro names starting with \"__\" are reserved.\n");
+ if (strstr(identifier, "__")) {
+ glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n");
}
if (strncmp(identifier, "GL_", 3) == 0) {
glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n");
diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp
index 2d1c6097c..c387ecbca 100644
--- a/mesalib/src/glsl/ir_validate.cpp
+++ b/mesalib/src/glsl/ir_validate.cpp
@@ -33,7 +33,6 @@
* a dereference chain.
*/
-#include <inttypes.h>
#include "ir.h"
#include "ir_hierarchical_visitor.h"
#include "program/hash_table.h"
diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp
index d802a0a9b..9463f5305 100644
--- a/mesalib/src/glsl/linker.cpp
+++ b/mesalib/src/glsl/linker.cpp
@@ -1298,71 +1298,6 @@ assign_attribute_or_color_locations(gl_shader_program *prog,
invalidate_variable_locations(sh, direction, generic_base);
- if ((target_index == MESA_SHADER_VERTEX) && (prog->Attributes != NULL)) {
- for (unsigned i = 0; i < prog->Attributes->NumParameters; i++) {
- ir_variable *const var =
- sh->symbols->get_variable(prog->Attributes->Parameters[i].Name);
-
- /* Note: attributes that occupy multiple slots, such as arrays or
- * matrices, may appear in the attrib array multiple times.
- */
- if ((var == NULL) || (var->location != -1))
- continue;
-
- /* From page 61 of the OpenGL 4.0 spec:
- *
- * "LinkProgram will fail if the attribute bindings assigned by
- * BindAttribLocation do not leave not enough space to assign a
- * location for an active matrix attribute or an active attribute
- * array, both of which require multiple contiguous generic
- * attributes."
- *
- * Previous versions of the spec contain similar language but omit the
- * bit about attribute arrays.
- *
- * Page 61 of the OpenGL 4.0 spec also says:
- *
- * "It is possible for an application to bind more than one
- * attribute name to the same location. This is referred to as
- * aliasing. This will only work if only one of the aliased
- * attributes is active in the executable program, or if no path
- * through the shader consumes more than one attribute of a set
- * of attributes aliased to the same location. A link error can
- * occur if the linker determines that every path through the
- * shader consumes multiple aliased attributes, but
- * implementations are not required to generate an error in this
- * case."
- *
- * These two paragraphs are either somewhat contradictory, or I don't
- * fully understand one or both of them.
- */
- /* FINISHME: The code as currently written does not support attribute
- * FINISHME: location aliasing (see comment above).
- */
- const int attr = prog->Attributes->Parameters[i].StateIndexes[0];
- const unsigned slots = count_attribute_slots(var->type);
-
- /* Mask representing the contiguous slots that will be used by this
- * attribute.
- */
- const unsigned use_mask = (1 << slots) - 1;
-
- /* Generate a link error if the set of bits requested for this
- * attribute overlaps any previously allocated bits.
- */
- if ((~(use_mask << attr) & used_locations) != used_locations) {
- linker_error(prog,
- "insufficient contiguous attribute locations "
- "available for vertex shader input `%s'",
- var->name);
- return false;
- }
-
- var->location = VERT_ATTRIB_GENERIC0 + attr;
- used_locations |= (use_mask << attr);
- }
- }
-
/* Temporary storage for the set of attributes that need locations assigned.
*/
struct temp_attr {
@@ -1389,28 +1324,83 @@ assign_attribute_or_color_locations(gl_shader_program *prog,
continue;
if (var->explicit_location) {
- const unsigned slots = count_attribute_slots(var->type);
- const unsigned use_mask = (1 << slots) - 1;
- const int attr = var->location - generic_base;
-
if ((var->location >= (int)(max_index + generic_base))
|| (var->location < 0)) {
linker_error(prog,
"invalid explicit location %d specified for `%s'\n",
- (var->location < 0) ? var->location : attr,
+ (var->location < 0)
+ ? var->location : var->location - generic_base,
var->name);
return false;
- } else if (var->location >= generic_base) {
- used_locations |= (use_mask << attr);
+ }
+ } else if (target_index == MESA_SHADER_VERTEX) {
+ unsigned binding;
+
+ if (prog->AttributeBindings->get(binding, var->name)) {
+ assert(binding >= VERT_ATTRIB_GENERIC0);
+ var->location = binding;
}
}
/* The location was explicitly assigned, nothing to do here.
*/
- if (var->location != -1)
+ const unsigned slots = count_attribute_slots(var->type);
+ if (var->location != -1) {
+ if (var->location >= generic_base) {
+ /* From page 61 of the OpenGL 4.0 spec:
+ *
+ * "LinkProgram will fail if the attribute bindings assigned
+ * by BindAttribLocation do not leave not enough space to
+ * assign a location for an active matrix attribute or an
+ * active attribute array, both of which require multiple
+ * contiguous generic attributes."
+ *
+ * Previous versions of the spec contain similar language but omit
+ * the bit about attribute arrays.
+ *
+ * Page 61 of the OpenGL 4.0 spec also says:
+ *
+ * "It is possible for an application to bind more than one
+ * attribute name to the same location. This is referred to as
+ * aliasing. This will only work if only one of the aliased
+ * attributes is active in the executable program, or if no
+ * path through the shader consumes more than one attribute of
+ * a set of attributes aliased to the same location. A link
+ * error can occur if the linker determines that every path
+ * through the shader consumes multiple aliased attributes,
+ * but implementations are not required to generate an error
+ * in this case."
+ *
+ * These two paragraphs are either somewhat contradictory, or I
+ * don't fully understand one or both of them.
+ */
+ /* FINISHME: The code as currently written does not support
+ * FINISHME: attribute location aliasing (see comment above).
+ */
+ /* Mask representing the contiguous slots that will be used by
+ * this attribute.
+ */
+ const unsigned attr = var->location - generic_base;
+ const unsigned use_mask = (1 << slots) - 1;
+
+ /* Generate a link error if the set of bits requested for this
+ * attribute overlaps any previously allocated bits.
+ */
+ if ((~(use_mask << attr) & used_locations) != used_locations) {
+ linker_error(prog,
+ "insufficient contiguous attribute locations "
+ "available for vertex shader input `%s'",
+ var->name);
+ return false;
+ }
+
+ used_locations |= (use_mask << attr);
+ }
+
continue;
+ }
- to_assign[num_attr].slots = count_attribute_slots(var->type);
+ to_assign[num_attr].slots = slots;
to_assign[num_attr].var = var;
num_attr++;
}
@@ -1831,6 +1821,14 @@ done:
/* Retain any live IR, but trash the rest. */
reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
+
+ /* The symbol table in the linked shaders may contain references to
+ * variables that were removed (e.g., unused uniforms). Since it may
+ * contain junk, there is no possible valid use. Delete it and set the
+ * pointer to NULL.
+ */
+ delete prog->_LinkedShaders[i]->symbols;
+ prog->_LinkedShaders[i]->symbols = NULL;
}
ralloc_free(mem_ctx);
diff --git a/mesalib/src/glsl/opt_function_inlining.cpp b/mesalib/src/glsl/opt_function_inlining.cpp
index 8fef358cc..ec8b72c63 100644
--- a/mesalib/src/glsl/opt_function_inlining.cpp
+++ b/mesalib/src/glsl/opt_function_inlining.cpp
@@ -27,7 +27,6 @@
* Replaces calls to functions with the body of the function.
*/
-#include <inttypes.h>
#include "ir.h"
#include "ir_visitor.h"
#include "ir_function_inlining.h"
diff --git a/mesalib/src/glsl/standalone_scaffolding.cpp b/mesalib/src/glsl/standalone_scaffolding.cpp
index 72aa1e428..5cc6c9879 100644
--- a/mesalib/src/glsl/standalone_scaffolding.cpp
+++ b/mesalib/src/glsl/standalone_scaffolding.cpp
@@ -67,7 +67,6 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api)
ctx->Extensions.dummy_false = false;
ctx->Extensions.dummy_true = true;
ctx->Extensions.ARB_ES2_compatibility = true;
- ctx->Extensions.ARB_draw_buffers = true;
ctx->Extensions.ARB_draw_instanced = true;
ctx->Extensions.ARB_fragment_coord_conventions = true;
ctx->Extensions.EXT_texture_array = true;
diff --git a/mesalib/src/mapi/glapi/gen/ARB_draw_buffers.xml b/mesalib/src/mapi/glapi/gen/ARB_draw_buffers.xml
new file mode 100644
index 000000000..f8ecc11ee
--- /dev/null
+++ b/mesalib/src/mapi/glapi/gen/ARB_draw_buffers.xml
@@ -0,0 +1,187 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_ARB_draw_buffers" number="37">
+ <enum name="MAX_DRAW_BUFFERS_ARB" count="1" value="0x8824">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER0_ARB" count="1" value="0x8825">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER1_ARB" count="1" value="0x8826">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER2_ARB" count="1" value="0x8827">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER3_ARB" count="1" value="0x8828">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER4_ARB" count="1" value="0x8829">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER5_ARB" count="1" value="0x882A">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER6_ARB" count="1" value="0x882B">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER7_ARB" count="1" value="0x882C">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER8_ARB" count="1" value="0x882D">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER9_ARB" count="1" value="0x882E">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER10_ARB" count="1" value="0x882F">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER11_ARB" count="1" value="0x8830">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER12_ARB" count="1" value="0x8831">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER13_ARB" count="1" value="0x8832">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER14_ARB" count="1" value="0x8833">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER15_ARB" count="1" value="0x8834">
+ <size name="Get" mode="get"/>
+ </enum>
+
+ <function name="DrawBuffersARB" offset="assign">
+ <param name="n" type="GLsizei" counter="true"/>
+ <param name="bufs" type="const GLenum *" count="n"/>
+ <glx rop="233" large="true"/>
+ </function>
+</category>
+
+<category name="GL_ATI_draw_buffers" number="277">
+ <enum name="MAX_DRAW_BUFFERS_ATI" count="1" value="0x8824">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER0_ATI" count="1" value="0x8825">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER1_ATI" count="1" value="0x8826">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER2_ATI" count="1" value="0x8827">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER3_ATI" count="1" value="0x8828">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER4_ATI" count="1" value="0x8829">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER5_ATI" count="1" value="0x882A">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER6_ATI" count="1" value="0x882B">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER7_ATI" count="1" value="0x882C">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER8_ATI" count="1" value="0x882D">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER9_ATI" count="1" value="0x882E">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER10_ATI" count="1" value="0x882F">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER11_ATI" count="1" value="0x8830">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER12_ATI" count="1" value="0x8831">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER13_ATI" count="1" value="0x8832">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER14_ATI" count="1" value="0x8833">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER15_ATI" count="1" value="0x8834">
+ <size name="Get" mode="get"/>
+ </enum>
+
+ <function name="DrawBuffersATI" alias="DrawBuffersARB">
+ <param name="n" type="GLsizei" counter="true"/>
+ <param name="bufs" type="const GLenum *" count="n"/>
+ </function>
+</category>
+
+<!--
+ This extension serves a similar purpose to ARB_draw_buffers except
+ that this is for OpenGL ES 2.0.
+-->
+<category name="GL_NV_draw_buffers" number="91">
+ <enum name="MAX_DRAW_BUFFERS_NV" count="1" value="0x8824">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER0_NV" count="1" value="0x8825">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER1_NV" count="1" value="0x8826">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER2_NV" count="1" value="0x8827">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER3_NV" count="1" value="0x8828">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER4_NV" count="1" value="0x8829">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER5_NV" count="1" value="0x882A">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER6_NV" count="1" value="0x882B">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER7_NV" count="1" value="0x882C">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER8_NV" count="1" value="0x882D">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER9_NV" count="1" value="0x882E">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER10_NV" count="1" value="0x882F">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER11_NV" count="1" value="0x8830">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER12_NV" count="1" value="0x8831">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER13_NV" count="1" value="0x8832">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER14_NV" count="1" value="0x8833">
+ <size name="Get" mode="get"/>
+ </enum>
+ <enum name="DRAW_BUFFER15_NV" count="1" value="0x8834">
+ <size name="Get" mode="get"/>
+ </enum>
+
+ <function name="DrawBuffersNV" alias="DrawBuffersARB">
+ <param name="n" type="GLsizei" counter="true"/>
+ <param name="bufs" type="const GLenum *" count="n"/>
+ </function>
+</category>
+
+</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml
index b8389f0b3..be66a4001 100644
--- a/mesalib/src/mapi/glapi/gen/gl_API.xml
+++ b/mesalib/src/mapi/glapi/gen/gl_API.xml
@@ -7876,65 +7876,7 @@
<!-- No new functions, types, enums. -->
</category>
-<category name="GL_ARB_draw_buffers" number="37">
- <enum name="MAX_DRAW_BUFFERS_ARB" count="1" value="0x8824">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER0_ARB" count="1" value="0x8825">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER1_ARB" count="1" value="0x8826">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER2_ARB" count="1" value="0x8827">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER3_ARB" count="1" value="0x8828">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER4_ARB" count="1" value="0x8829">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER5_ARB" count="1" value="0x882A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER6_ARB" count="1" value="0x882B">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER7_ARB" count="1" value="0x882C">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER8_ARB" count="1" value="0x882D">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER9_ARB" count="1" value="0x882E">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER10_ARB" count="1" value="0x882F">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER11_ARB" count="1" value="0x8830">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER12_ARB" count="1" value="0x8831">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER13_ARB" count="1" value="0x8832">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER14_ARB" count="1" value="0x8833">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER15_ARB" count="1" value="0x8834">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="DrawBuffersARB" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="bufs" type="const GLenum *" count="n"/>
- <glx rop="233" large="true"/>
- </function>
-</category>
+<xi:include href="ARB_draw_buffers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<category name="GL_ARB_texture_rectangle" number="38">
<enum name="TEXTURE_RECTANGLE_ARB" count="1" value="0x84F5">
@@ -12013,65 +11955,6 @@
<enum name="RGBA4_DXT5_S3TC" value="0x83A5"/>
</category>
-<category name="GL_ATI_draw_buffers" number="277">
- <enum name="MAX_DRAW_BUFFERS_ATI" count="1" value="0x8824">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER0_ATI" count="1" value="0x8825">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER1_ATI" count="1" value="0x8826">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER2_ATI" count="1" value="0x8827">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER3_ATI" count="1" value="0x8828">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER4_ATI" count="1" value="0x8829">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER5_ATI" count="1" value="0x882A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER6_ATI" count="1" value="0x882B">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER7_ATI" count="1" value="0x882C">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER8_ATI" count="1" value="0x882D">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER9_ATI" count="1" value="0x882E">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER10_ATI" count="1" value="0x882F">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER11_ATI" count="1" value="0x8830">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER12_ATI" count="1" value="0x8831">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER13_ATI" count="1" value="0x8832">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER14_ATI" count="1" value="0x8833">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DRAW_BUFFER15_ATI" count="1" value="0x8834">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="DrawBuffersATI" alias="DrawBuffersARB">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="bufs" type="const GLenum *" count="n"/>
- </function>
-</category>
-
<!-- Extension number 278 is a WGL extension. -->
<category name="GL_ATI_texture_env_combine3" number="279">
diff --git a/mesalib/src/mapi/glapi/gen/gles_api.py b/mesalib/src/mapi/glapi/gen/gles_api.py
index 4cde9e544..0116ba474 100644
--- a/mesalib/src/mapi/glapi/gen/gles_api.py
+++ b/mesalib/src/mapi/glapi/gen/gles_api.py
@@ -449,4 +449,6 @@ es2_api = es2_core + (
# GL_OES_get_program_binary
'GetProgramBinaryOES',
'ProgramBinaryOES',
+ # GL_NV_draw_buffers
+ 'DrawBuffersNV',
)
diff --git a/mesalib/src/mapi/glapi/glapi.h b/mesalib/src/mapi/glapi/glapi.h
index 39b209fe1..8ef654636 100644
--- a/mesalib/src/mapi/glapi/glapi.h
+++ b/mesalib/src/mapi/glapi/glapi.h
@@ -44,6 +44,9 @@
#ifndef _GLAPI_H
#define _GLAPI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
#ifdef _GLAPI_NO_EXPORTS
# define _GLAPI_EXPORT
#else /* _GLAPI_NO_EXPORTS */
@@ -178,3 +181,6 @@ extern struct _glapi_table *
_glapi_create_table_from_handle(void *handle, const char *symbol_prefix);
#endif
+#ifdef __cplusplus
+}
+#endif
diff --git a/mesalib/src/mapi/glapi/glapi_gentable.c b/mesalib/src/mapi/glapi/glapi_gentable.c
index f3fbe6f56..27d1f861b 100644
--- a/mesalib/src/mapi/glapi/glapi_gentable.c
+++ b/mesalib/src/mapi/glapi/glapi_gentable.c
@@ -5512,6 +5512,13 @@ _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) {
}
+ if(!disp->DrawBuffersARB) {
+ void ** procp = (void **) &disp->DrawBuffersARB;
+ snprintf(symboln, sizeof(symboln), "%sDrawBuffersNV", symbol_prefix);
+ *procp = dlsym(handle, symboln);
+ }
+
+
if(!disp->ClampColorARB) {
void ** procp = (void **) &disp->ClampColorARB;
snprintf(symboln, sizeof(symboln), "%sClampColorARB", symbol_prefix);
diff --git a/mesalib/src/mapi/glapi/glapi_mapi_tmp.h b/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
index 8cdadc9a2..7f49ff020 100644
--- a/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
+++ b/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
@@ -774,6 +774,7 @@ GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocation)(GLuint program, const GLcha
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersARB)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffers)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersNV)(GLsizei n, const GLenum *bufs);
GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
@@ -6595,6 +6596,13 @@ GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs)
((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
}
+GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersNV)(GLsizei n, const GLenum *bufs)
+{
+ const struct mapi_table *_tbl = entry_current_get();
+ mapi_func _func = ((const mapi_func *) _tbl)[571];
+ ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs);
+}
+
GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp)
{
const struct mapi_table *_tbl = entry_current_get();
@@ -12446,6 +12454,9 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawBuffersARB))"\n"
".globl "GLAPI_PREFIX_STR(DrawBuffersATI)"\n"
".set "GLAPI_PREFIX_STR(DrawBuffersATI)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n"
+".globl "GLAPI_PREFIX_STR(DrawBuffersNV)"\n"
+".set "GLAPI_PREFIX_STR(DrawBuffersNV)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n"
+
STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClampColorARB))"\n"
"\t"STUB_ASM_CODE("572")"\n"
diff --git a/mesalib/src/mapi/glapi/glapi_sparc.S b/mesalib/src/mapi/glapi/glapi_sparc.S
index f4ce09866..15b9e8737 100644
--- a/mesalib/src/mapi/glapi/glapi_sparc.S
+++ b/mesalib/src/mapi/glapi/glapi_sparc.S
@@ -1440,6 +1440,7 @@ gl_dispatch_functions_start:
GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB)
GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB)
GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB)
+ GL_STUB_ALIAS(glDrawBuffersNV, glDrawBuffersARB)
GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstancedARB)
GL_STUB_ALIAS(glDrawArraysInstanced, glDrawArraysInstancedARB)
GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstancedARB)
diff --git a/mesalib/src/mapi/glapi/glapi_x86-64.S b/mesalib/src/mapi/glapi/glapi_x86-64.S
index cfd8e4a16..a1fbe74ab 100644
--- a/mesalib/src/mapi/glapi/glapi_x86-64.S
+++ b/mesalib/src/mapi/glapi/glapi_x86-64.S
@@ -36997,6 +36997,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.globl GL_PREFIX(GetAttribLocation) ; .set GL_PREFIX(GetAttribLocation), GL_PREFIX(GetAttribLocationARB)
.globl GL_PREFIX(DrawBuffers) ; .set GL_PREFIX(DrawBuffers), GL_PREFIX(DrawBuffersARB)
.globl GL_PREFIX(DrawBuffersATI) ; .set GL_PREFIX(DrawBuffersATI), GL_PREFIX(DrawBuffersARB)
+ .globl GL_PREFIX(DrawBuffersNV) ; .set GL_PREFIX(DrawBuffersNV), GL_PREFIX(DrawBuffersARB)
.globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstancedARB)
.globl GL_PREFIX(DrawArraysInstanced) ; .set GL_PREFIX(DrawArraysInstanced), GL_PREFIX(DrawArraysInstancedARB)
.globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstancedARB)
diff --git a/mesalib/src/mapi/glapi/glapi_x86.S b/mesalib/src/mapi/glapi/glapi_x86.S
index 220e7092a..a72193f87 100644
--- a/mesalib/src/mapi/glapi/glapi_x86.S
+++ b/mesalib/src/mapi/glapi/glapi_x86.S
@@ -1336,6 +1336,7 @@ GLNAME(gl_dispatch_functions_start):
GL_STUB_ALIAS(GetAttribLocation, 570, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8)
GL_STUB_ALIAS(DrawBuffers, 571, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8)
GL_STUB_ALIAS(DrawBuffersATI, 571, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
+ GL_STUB_ALIAS(DrawBuffersNV, 571, DrawBuffersNV@8, DrawBuffersARB, DrawBuffersARB@8)
GL_STUB_ALIAS(DrawArraysInstancedEXT, 573, DrawArraysInstancedEXT@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16)
GL_STUB_ALIAS(DrawArraysInstanced, 573, DrawArraysInstanced@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16)
GL_STUB_ALIAS(DrawElementsInstancedEXT, 574, DrawElementsInstancedEXT@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20)
diff --git a/mesalib/src/mapi/glapi/glapitemp.h b/mesalib/src/mapi/glapi/glapitemp.h
index cb259068e..a0282ddc0 100644
--- a/mesalib/src/mapi/glapi/glapitemp.h
+++ b/mesalib/src/mapi/glapi/glapitemp.h
@@ -4638,6 +4638,12 @@ KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
}
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersNV)(GLsizei n, const GLenum * bufs)
+{
+ (void) n; (void) bufs;
+ DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersNV(%d, %p);\n", n, (const void *) bufs));
+}
+
KEYWORD1 void KEYWORD2 NAME(ClampColorARB)(GLenum target, GLenum clamp)
{
(void) target; (void) clamp;
@@ -9454,6 +9460,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(GetAttribLocation),
TABLE_ENTRY(DrawBuffers),
TABLE_ENTRY(DrawBuffersATI),
+ TABLE_ENTRY(DrawBuffersNV),
TABLE_ENTRY(DrawArraysInstancedEXT),
TABLE_ENTRY(DrawArraysInstanced),
TABLE_ENTRY(DrawElementsInstancedEXT),
diff --git a/mesalib/src/mapi/glapi/glprocs.h b/mesalib/src/mapi/glapi/glprocs.h
index 31ead416a..215dbcfcd 100644
--- a/mesalib/src/mapi/glapi/glprocs.h
+++ b/mesalib/src/mapi/glapi/glprocs.h
@@ -1222,6 +1222,7 @@ static const char gl_string_table[] =
"glGetAttribLocation\0"
"glDrawBuffers\0"
"glDrawBuffersATI\0"
+ "glDrawBuffersNV\0"
"glDrawArraysInstancedEXT\0"
"glDrawArraysInstanced\0"
"glDrawElementsInstancedEXT\0"
@@ -2660,167 +2661,168 @@ static const glprocs_table_t static_functions[] = {
NAME_FUNC_OFFSET(21444, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570),
NAME_FUNC_OFFSET(21464, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
NAME_FUNC_OFFSET(21478, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
- NAME_FUNC_OFFSET(21495, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573),
- NAME_FUNC_OFFSET(21520, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573),
- NAME_FUNC_OFFSET(21542, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574),
- NAME_FUNC_OFFSET(21569, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574),
- NAME_FUNC_OFFSET(21593, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 575),
- NAME_FUNC_OFFSET(21629, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 597),
- NAME_FUNC_OFFSET(21663, glBlendEquationiARB, glBlendEquationiARB, NULL, 598),
- NAME_FUNC_OFFSET(21689, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 599),
- NAME_FUNC_OFFSET(21719, glBlendFunciARB, glBlendFunciARB, NULL, 600),
- NAME_FUNC_OFFSET(21741, gl_dispatch_stub_692, gl_dispatch_stub_692, NULL, 692),
- NAME_FUNC_OFFSET(21757, gl_dispatch_stub_693, gl_dispatch_stub_693, NULL, 693),
- NAME_FUNC_OFFSET(21776, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
- NAME_FUNC_OFFSET(21794, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
- NAME_FUNC_OFFSET(21815, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
- NAME_FUNC_OFFSET(21837, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
- NAME_FUNC_OFFSET(21856, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
- NAME_FUNC_OFFSET(21878, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
- NAME_FUNC_OFFSET(21901, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 704),
- NAME_FUNC_OFFSET(21920, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 705),
- NAME_FUNC_OFFSET(21940, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 706),
- NAME_FUNC_OFFSET(21959, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 707),
- NAME_FUNC_OFFSET(21979, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 708),
- NAME_FUNC_OFFSET(21998, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 709),
- NAME_FUNC_OFFSET(22018, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 710),
- NAME_FUNC_OFFSET(22037, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 711),
- NAME_FUNC_OFFSET(22057, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 712),
- NAME_FUNC_OFFSET(22076, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 713),
- NAME_FUNC_OFFSET(22096, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 714),
- NAME_FUNC_OFFSET(22116, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 715),
- NAME_FUNC_OFFSET(22137, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 716),
- NAME_FUNC_OFFSET(22157, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 717),
- NAME_FUNC_OFFSET(22178, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 718),
- NAME_FUNC_OFFSET(22198, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 719),
- NAME_FUNC_OFFSET(22219, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 720),
- NAME_FUNC_OFFSET(22243, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 721),
- NAME_FUNC_OFFSET(22261, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 722),
- NAME_FUNC_OFFSET(22281, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 723),
- NAME_FUNC_OFFSET(22299, glFogCoorddEXT, glFogCoorddEXT, NULL, 724),
- NAME_FUNC_OFFSET(22311, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 725),
- NAME_FUNC_OFFSET(22324, glFogCoordfEXT, glFogCoordfEXT, NULL, 726),
- NAME_FUNC_OFFSET(22336, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 727),
- NAME_FUNC_OFFSET(22349, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 729),
- NAME_FUNC_OFFSET(22369, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 729),
- NAME_FUNC_OFFSET(22393, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 746),
- NAME_FUNC_OFFSET(22407, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 746),
- NAME_FUNC_OFFSET(22424, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 747),
- NAME_FUNC_OFFSET(22439, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 747),
- NAME_FUNC_OFFSET(22457, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 748),
- NAME_FUNC_OFFSET(22471, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 748),
- NAME_FUNC_OFFSET(22488, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 749),
- NAME_FUNC_OFFSET(22503, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 749),
- NAME_FUNC_OFFSET(22521, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 750),
- NAME_FUNC_OFFSET(22535, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 750),
- NAME_FUNC_OFFSET(22552, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 751),
- NAME_FUNC_OFFSET(22567, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 751),
- NAME_FUNC_OFFSET(22585, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 752),
- NAME_FUNC_OFFSET(22599, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 752),
- NAME_FUNC_OFFSET(22616, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 753),
- NAME_FUNC_OFFSET(22631, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 753),
- NAME_FUNC_OFFSET(22649, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 754),
- NAME_FUNC_OFFSET(22663, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 754),
- NAME_FUNC_OFFSET(22680, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 755),
- NAME_FUNC_OFFSET(22695, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 755),
- NAME_FUNC_OFFSET(22713, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 756),
- NAME_FUNC_OFFSET(22727, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 756),
- NAME_FUNC_OFFSET(22744, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 757),
- NAME_FUNC_OFFSET(22759, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 757),
- NAME_FUNC_OFFSET(22777, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 758),
- NAME_FUNC_OFFSET(22791, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 758),
- NAME_FUNC_OFFSET(22808, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 759),
- NAME_FUNC_OFFSET(22823, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 759),
- NAME_FUNC_OFFSET(22841, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 760),
- NAME_FUNC_OFFSET(22855, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 760),
- NAME_FUNC_OFFSET(22872, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 761),
- NAME_FUNC_OFFSET(22887, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 761),
- NAME_FUNC_OFFSET(22905, glBindProgramNV, glBindProgramNV, NULL, 780),
- NAME_FUNC_OFFSET(22922, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 781),
- NAME_FUNC_OFFSET(22942, glGenProgramsNV, glGenProgramsNV, NULL, 783),
- NAME_FUNC_OFFSET(22959, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 789),
- NAME_FUNC_OFFSET(22985, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 789),
- NAME_FUNC_OFFSET(23014, glIsProgramNV, glIsProgramNV, NULL, 793),
- NAME_FUNC_OFFSET(23029, glPointParameteriNV, glPointParameteriNV, NULL, 857),
- NAME_FUNC_OFFSET(23047, glPointParameterivNV, glPointParameterivNV, NULL, 858),
- NAME_FUNC_OFFSET(23066, gl_dispatch_stub_861, gl_dispatch_stub_861, NULL, 861),
- NAME_FUNC_OFFSET(23087, gl_dispatch_stub_863, gl_dispatch_stub_863, NULL, 863),
- NAME_FUNC_OFFSET(23103, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 870),
- NAME_FUNC_OFFSET(23127, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
- NAME_FUNC_OFFSET(23151, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
- NAME_FUNC_OFFSET(23178, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 874),
- NAME_FUNC_OFFSET(23196, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 875),
- NAME_FUNC_OFFSET(23215, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 876),
- NAME_FUNC_OFFSET(23240, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 877),
- NAME_FUNC_OFFSET(23261, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 878),
- NAME_FUNC_OFFSET(23283, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 879),
- NAME_FUNC_OFFSET(23309, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 880),
- NAME_FUNC_OFFSET(23332, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 881),
- NAME_FUNC_OFFSET(23355, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 882),
- NAME_FUNC_OFFSET(23378, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 883),
- NAME_FUNC_OFFSET(23396, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 884),
- NAME_FUNC_OFFSET(23415, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 885),
- NAME_FUNC_OFFSET(23432, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 886),
- NAME_FUNC_OFFSET(23470, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 887),
- NAME_FUNC_OFFSET(23499, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 888),
- NAME_FUNC_OFFSET(23515, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 889),
- NAME_FUNC_OFFSET(23532, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 890),
- NAME_FUNC_OFFSET(23554, gl_dispatch_stub_891, gl_dispatch_stub_891, NULL, 891),
- NAME_FUNC_OFFSET(23572, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 894),
- NAME_FUNC_OFFSET(23595, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 895),
- NAME_FUNC_OFFSET(23617, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 896),
- NAME_FUNC_OFFSET(23633, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 897),
- NAME_FUNC_OFFSET(23654, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 898),
- NAME_FUNC_OFFSET(23676, glUniform1uiEXT, glUniform1uiEXT, NULL, 899),
- NAME_FUNC_OFFSET(23689, glUniform1uivEXT, glUniform1uivEXT, NULL, 900),
- NAME_FUNC_OFFSET(23703, glUniform2uiEXT, glUniform2uiEXT, NULL, 901),
- NAME_FUNC_OFFSET(23716, glUniform2uivEXT, glUniform2uivEXT, NULL, 902),
- NAME_FUNC_OFFSET(23730, glUniform3uiEXT, glUniform3uiEXT, NULL, 903),
- NAME_FUNC_OFFSET(23743, glUniform3uivEXT, glUniform3uivEXT, NULL, 904),
- NAME_FUNC_OFFSET(23757, glUniform4uiEXT, glUniform4uiEXT, NULL, 905),
- NAME_FUNC_OFFSET(23770, glUniform4uivEXT, glUniform4uivEXT, NULL, 906),
- NAME_FUNC_OFFSET(23784, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 907),
- NAME_FUNC_OFFSET(23802, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 908),
- NAME_FUNC_OFFSET(23821, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 909),
- NAME_FUNC_OFFSET(23840, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 910),
- NAME_FUNC_OFFSET(23860, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 911),
- NAME_FUNC_OFFSET(23878, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 912),
- NAME_FUNC_OFFSET(23897, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 913),
- NAME_FUNC_OFFSET(23916, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 914),
- NAME_FUNC_OFFSET(23936, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 915),
- NAME_FUNC_OFFSET(23954, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 916),
- NAME_FUNC_OFFSET(23973, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 917),
- NAME_FUNC_OFFSET(23992, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 918),
- NAME_FUNC_OFFSET(24012, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 919),
- NAME_FUNC_OFFSET(24031, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 920),
- NAME_FUNC_OFFSET(24049, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 921),
- NAME_FUNC_OFFSET(24068, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 922),
- NAME_FUNC_OFFSET(24087, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 923),
- NAME_FUNC_OFFSET(24107, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 924),
- NAME_FUNC_OFFSET(24126, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 925),
- NAME_FUNC_OFFSET(24146, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 926),
- NAME_FUNC_OFFSET(24166, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 927),
- NAME_FUNC_OFFSET(24189, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 928),
- NAME_FUNC_OFFSET(24215, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 928),
- NAME_FUNC_OFFSET(24244, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 929),
- NAME_FUNC_OFFSET(24257, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 930),
- NAME_FUNC_OFFSET(24268, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 931),
- NAME_FUNC_OFFSET(24278, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 932),
- NAME_FUNC_OFFSET(24294, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 933),
- NAME_FUNC_OFFSET(24310, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 934),
- NAME_FUNC_OFFSET(24323, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 937),
- NAME_FUNC_OFFSET(24344, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 938),
- NAME_FUNC_OFFSET(24366, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 939),
- NAME_FUNC_OFFSET(24384, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 940),
- NAME_FUNC_OFFSET(24403, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 941),
- NAME_FUNC_OFFSET(24428, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 942),
- NAME_FUNC_OFFSET(24451, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 943),
- NAME_FUNC_OFFSET(24476, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 944),
- NAME_FUNC_OFFSET(24493, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 946),
- NAME_FUNC_OFFSET(24511, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 947),
- NAME_FUNC_OFFSET(24534, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 948),
- NAME_FUNC_OFFSET(24564, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 949),
- NAME_FUNC_OFFSET(24592, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 950),
+ NAME_FUNC_OFFSET(21495, glDrawBuffersARB, glDrawBuffersARB, NULL, 571),
+ NAME_FUNC_OFFSET(21511, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573),
+ NAME_FUNC_OFFSET(21536, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573),
+ NAME_FUNC_OFFSET(21558, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574),
+ NAME_FUNC_OFFSET(21585, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574),
+ NAME_FUNC_OFFSET(21609, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 575),
+ NAME_FUNC_OFFSET(21645, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 597),
+ NAME_FUNC_OFFSET(21679, glBlendEquationiARB, glBlendEquationiARB, NULL, 598),
+ NAME_FUNC_OFFSET(21705, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 599),
+ NAME_FUNC_OFFSET(21735, glBlendFunciARB, glBlendFunciARB, NULL, 600),
+ NAME_FUNC_OFFSET(21757, gl_dispatch_stub_692, gl_dispatch_stub_692, NULL, 692),
+ NAME_FUNC_OFFSET(21773, gl_dispatch_stub_693, gl_dispatch_stub_693, NULL, 693),
+ NAME_FUNC_OFFSET(21792, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
+ NAME_FUNC_OFFSET(21810, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
+ NAME_FUNC_OFFSET(21831, glPointParameterfEXT, glPointParameterfEXT, NULL, 700),
+ NAME_FUNC_OFFSET(21853, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
+ NAME_FUNC_OFFSET(21872, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
+ NAME_FUNC_OFFSET(21894, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 701),
+ NAME_FUNC_OFFSET(21917, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 704),
+ NAME_FUNC_OFFSET(21936, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 705),
+ NAME_FUNC_OFFSET(21956, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 706),
+ NAME_FUNC_OFFSET(21975, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 707),
+ NAME_FUNC_OFFSET(21995, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 708),
+ NAME_FUNC_OFFSET(22014, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 709),
+ NAME_FUNC_OFFSET(22034, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 710),
+ NAME_FUNC_OFFSET(22053, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 711),
+ NAME_FUNC_OFFSET(22073, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 712),
+ NAME_FUNC_OFFSET(22092, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 713),
+ NAME_FUNC_OFFSET(22112, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 714),
+ NAME_FUNC_OFFSET(22132, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 715),
+ NAME_FUNC_OFFSET(22153, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 716),
+ NAME_FUNC_OFFSET(22173, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 717),
+ NAME_FUNC_OFFSET(22194, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 718),
+ NAME_FUNC_OFFSET(22214, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 719),
+ NAME_FUNC_OFFSET(22235, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 720),
+ NAME_FUNC_OFFSET(22259, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 721),
+ NAME_FUNC_OFFSET(22277, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 722),
+ NAME_FUNC_OFFSET(22297, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 723),
+ NAME_FUNC_OFFSET(22315, glFogCoorddEXT, glFogCoorddEXT, NULL, 724),
+ NAME_FUNC_OFFSET(22327, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 725),
+ NAME_FUNC_OFFSET(22340, glFogCoordfEXT, glFogCoordfEXT, NULL, 726),
+ NAME_FUNC_OFFSET(22352, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 727),
+ NAME_FUNC_OFFSET(22365, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 729),
+ NAME_FUNC_OFFSET(22385, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 729),
+ NAME_FUNC_OFFSET(22409, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 746),
+ NAME_FUNC_OFFSET(22423, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 746),
+ NAME_FUNC_OFFSET(22440, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 747),
+ NAME_FUNC_OFFSET(22455, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 747),
+ NAME_FUNC_OFFSET(22473, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 748),
+ NAME_FUNC_OFFSET(22487, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 748),
+ NAME_FUNC_OFFSET(22504, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 749),
+ NAME_FUNC_OFFSET(22519, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 749),
+ NAME_FUNC_OFFSET(22537, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 750),
+ NAME_FUNC_OFFSET(22551, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 750),
+ NAME_FUNC_OFFSET(22568, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 751),
+ NAME_FUNC_OFFSET(22583, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 751),
+ NAME_FUNC_OFFSET(22601, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 752),
+ NAME_FUNC_OFFSET(22615, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 752),
+ NAME_FUNC_OFFSET(22632, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 753),
+ NAME_FUNC_OFFSET(22647, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 753),
+ NAME_FUNC_OFFSET(22665, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 754),
+ NAME_FUNC_OFFSET(22679, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 754),
+ NAME_FUNC_OFFSET(22696, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 755),
+ NAME_FUNC_OFFSET(22711, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 755),
+ NAME_FUNC_OFFSET(22729, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 756),
+ NAME_FUNC_OFFSET(22743, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 756),
+ NAME_FUNC_OFFSET(22760, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 757),
+ NAME_FUNC_OFFSET(22775, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 757),
+ NAME_FUNC_OFFSET(22793, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 758),
+ NAME_FUNC_OFFSET(22807, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 758),
+ NAME_FUNC_OFFSET(22824, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 759),
+ NAME_FUNC_OFFSET(22839, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 759),
+ NAME_FUNC_OFFSET(22857, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 760),
+ NAME_FUNC_OFFSET(22871, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 760),
+ NAME_FUNC_OFFSET(22888, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 761),
+ NAME_FUNC_OFFSET(22903, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 761),
+ NAME_FUNC_OFFSET(22921, glBindProgramNV, glBindProgramNV, NULL, 780),
+ NAME_FUNC_OFFSET(22938, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 781),
+ NAME_FUNC_OFFSET(22958, glGenProgramsNV, glGenProgramsNV, NULL, 783),
+ NAME_FUNC_OFFSET(22975, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 789),
+ NAME_FUNC_OFFSET(23001, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 789),
+ NAME_FUNC_OFFSET(23030, glIsProgramNV, glIsProgramNV, NULL, 793),
+ NAME_FUNC_OFFSET(23045, glPointParameteriNV, glPointParameteriNV, NULL, 857),
+ NAME_FUNC_OFFSET(23063, glPointParameterivNV, glPointParameterivNV, NULL, 858),
+ NAME_FUNC_OFFSET(23082, gl_dispatch_stub_861, gl_dispatch_stub_861, NULL, 861),
+ NAME_FUNC_OFFSET(23103, gl_dispatch_stub_863, gl_dispatch_stub_863, NULL, 863),
+ NAME_FUNC_OFFSET(23119, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 870),
+ NAME_FUNC_OFFSET(23143, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
+ NAME_FUNC_OFFSET(23167, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873),
+ NAME_FUNC_OFFSET(23194, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 874),
+ NAME_FUNC_OFFSET(23212, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 875),
+ NAME_FUNC_OFFSET(23231, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 876),
+ NAME_FUNC_OFFSET(23256, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 877),
+ NAME_FUNC_OFFSET(23277, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 878),
+ NAME_FUNC_OFFSET(23299, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 879),
+ NAME_FUNC_OFFSET(23325, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 880),
+ NAME_FUNC_OFFSET(23348, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 881),
+ NAME_FUNC_OFFSET(23371, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 882),
+ NAME_FUNC_OFFSET(23394, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 883),
+ NAME_FUNC_OFFSET(23412, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 884),
+ NAME_FUNC_OFFSET(23431, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 885),
+ NAME_FUNC_OFFSET(23448, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 886),
+ NAME_FUNC_OFFSET(23486, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 887),
+ NAME_FUNC_OFFSET(23515, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 888),
+ NAME_FUNC_OFFSET(23531, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 889),
+ NAME_FUNC_OFFSET(23548, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 890),
+ NAME_FUNC_OFFSET(23570, gl_dispatch_stub_891, gl_dispatch_stub_891, NULL, 891),
+ NAME_FUNC_OFFSET(23588, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 894),
+ NAME_FUNC_OFFSET(23611, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 895),
+ NAME_FUNC_OFFSET(23633, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 896),
+ NAME_FUNC_OFFSET(23649, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 897),
+ NAME_FUNC_OFFSET(23670, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 898),
+ NAME_FUNC_OFFSET(23692, glUniform1uiEXT, glUniform1uiEXT, NULL, 899),
+ NAME_FUNC_OFFSET(23705, glUniform1uivEXT, glUniform1uivEXT, NULL, 900),
+ NAME_FUNC_OFFSET(23719, glUniform2uiEXT, glUniform2uiEXT, NULL, 901),
+ NAME_FUNC_OFFSET(23732, glUniform2uivEXT, glUniform2uivEXT, NULL, 902),
+ NAME_FUNC_OFFSET(23746, glUniform3uiEXT, glUniform3uiEXT, NULL, 903),
+ NAME_FUNC_OFFSET(23759, glUniform3uivEXT, glUniform3uivEXT, NULL, 904),
+ NAME_FUNC_OFFSET(23773, glUniform4uiEXT, glUniform4uiEXT, NULL, 905),
+ NAME_FUNC_OFFSET(23786, glUniform4uivEXT, glUniform4uivEXT, NULL, 906),
+ NAME_FUNC_OFFSET(23800, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 907),
+ NAME_FUNC_OFFSET(23818, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 908),
+ NAME_FUNC_OFFSET(23837, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 909),
+ NAME_FUNC_OFFSET(23856, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 910),
+ NAME_FUNC_OFFSET(23876, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 911),
+ NAME_FUNC_OFFSET(23894, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 912),
+ NAME_FUNC_OFFSET(23913, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 913),
+ NAME_FUNC_OFFSET(23932, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 914),
+ NAME_FUNC_OFFSET(23952, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 915),
+ NAME_FUNC_OFFSET(23970, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 916),
+ NAME_FUNC_OFFSET(23989, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 917),
+ NAME_FUNC_OFFSET(24008, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 918),
+ NAME_FUNC_OFFSET(24028, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 919),
+ NAME_FUNC_OFFSET(24047, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 920),
+ NAME_FUNC_OFFSET(24065, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 921),
+ NAME_FUNC_OFFSET(24084, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 922),
+ NAME_FUNC_OFFSET(24103, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 923),
+ NAME_FUNC_OFFSET(24123, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 924),
+ NAME_FUNC_OFFSET(24142, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 925),
+ NAME_FUNC_OFFSET(24162, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 926),
+ NAME_FUNC_OFFSET(24182, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 927),
+ NAME_FUNC_OFFSET(24205, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 928),
+ NAME_FUNC_OFFSET(24231, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 928),
+ NAME_FUNC_OFFSET(24260, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 929),
+ NAME_FUNC_OFFSET(24273, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 930),
+ NAME_FUNC_OFFSET(24284, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 931),
+ NAME_FUNC_OFFSET(24294, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 932),
+ NAME_FUNC_OFFSET(24310, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 933),
+ NAME_FUNC_OFFSET(24326, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 934),
+ NAME_FUNC_OFFSET(24339, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 937),
+ NAME_FUNC_OFFSET(24360, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 938),
+ NAME_FUNC_OFFSET(24382, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 939),
+ NAME_FUNC_OFFSET(24400, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 940),
+ NAME_FUNC_OFFSET(24419, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 941),
+ NAME_FUNC_OFFSET(24444, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 942),
+ NAME_FUNC_OFFSET(24467, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 943),
+ NAME_FUNC_OFFSET(24492, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 944),
+ NAME_FUNC_OFFSET(24509, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 946),
+ NAME_FUNC_OFFSET(24527, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 947),
+ NAME_FUNC_OFFSET(24550, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 948),
+ NAME_FUNC_OFFSET(24580, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 949),
+ NAME_FUNC_OFFSET(24608, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 950),
NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
};
diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript
index abcce4133..9f142bf08 100644
--- a/mesalib/src/mesa/SConscript
+++ b/mesalib/src/mesa/SConscript
@@ -108,6 +108,7 @@ main_sources = [
'main/scissor.c',
'main/shaderapi.c',
'main/shaderobj.c',
+ 'main/shader_query.cpp',
'main/shared.c',
'main/state.c',
'main/stencil.c',
@@ -307,6 +308,7 @@ program_sources = [
'program/programopt.c',
'program/sampler.cpp',
'program/symbol_table.c',
+ 'program/string_to_uint_map.cpp',
program_lex,
program_parse[0],
]
diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.c b/mesalib/src/mesa/drivers/common/driverfuncs.c
index 3e2896980..33da9346c 100644
--- a/mesalib/src/mesa/drivers/common/driverfuncs.c
+++ b/mesalib/src/mesa/drivers/common/driverfuncs.c
@@ -200,8 +200,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
_mesa_init_sampler_object_functions(driver);
/* T&L stuff */
- driver->NeedValidate = GL_FALSE;
- driver->ValidateTnlModule = NULL;
driver->CurrentExecPrimitive = 0;
driver->CurrentSavePrimitive = 0;
driver->NeedFlush = 0;
diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c
index b6e80d70a..4d645e200 100644
--- a/mesalib/src/mesa/drivers/common/meta.c
+++ b/mesalib/src/mesa/drivers/common/meta.c
@@ -49,6 +49,7 @@
#include "main/macros.h"
#include "main/matrix.h"
#include "main/mipmap.h"
+#include "main/pixel.h"
#include "main/pbo.h"
#include "main/polygon.h"
#include "main/readpix.h"
@@ -3235,8 +3236,27 @@ decompress_texture_image(struct gl_context *ctx,
}
/* read pixels from renderbuffer */
- ctx->Pack.RowLength = destRowLength;
- _mesa_ReadPixels(0, 0, width, height, destFormat, destType, dest);
+ {
+ GLenum baseTexFormat = texImage->_BaseFormat;
+
+ /* The pixel transfer state will be set to default values at this point
+ * (see MESA_META_PIXEL_TRANSFER) so pixel transfer ops are effectively
+ * turned off (as required by glGetTexImage) but we need to handle some
+ * special cases. In particular, single-channel texture values are
+ * returned as red and two-channel texture values are returned as
+ * red/alpha.
+ */
+ if (baseTexFormat == GL_LUMINANCE ||
+ baseTexFormat == GL_LUMINANCE_ALPHA ||
+ baseTexFormat == GL_INTENSITY) {
+ /* Green and blue must be zero */
+ _mesa_PixelTransferf(GL_GREEN_SCALE, 0.0f);
+ _mesa_PixelTransferf(GL_BLUE_SCALE, 0.0f);
+ }
+
+ ctx->Pack.RowLength = destRowLength;
+ _mesa_ReadPixels(0, 0, width, height, destFormat, destType, dest);
+ }
/* disable texture unit */
_mesa_set_enable(ctx, target, GL_FALSE);
@@ -3260,9 +3280,8 @@ decompress_texture_image(struct gl_context *ctx,
* from core Mesa.
*/
void
-_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_meta_GetTexImage(struct gl_context *ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
/* We can only use the decompress-with-blit method here if the texels are
@@ -3272,6 +3291,7 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level,
if (_mesa_is_format_compressed(texImage->TexFormat) &&
_mesa_get_format_datatype(texImage->TexFormat)
== GL_UNSIGNED_NORMALIZED) {
+ struct gl_texture_object *texObj = texImage->TexObject;
const GLuint slice = 0; /* only 2D compressed textures for now */
/* Need to unlock the texture here to prevent deadlock... */
_mesa_unlock_texture(ctx, texObj);
@@ -3281,7 +3301,6 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level,
_mesa_lock_texture(ctx, texObj);
}
else {
- _mesa_get_teximage(ctx, target, level, format, type, pixels,
- texObj, texImage);
+ _mesa_get_teximage(ctx, format, type, pixels, texImage);
}
}
diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h
index 3c917924a..7ec568388 100644
--- a/mesalib/src/mesa/drivers/common/meta.h
+++ b/mesalib/src/mesa/drivers/common/meta.h
@@ -124,9 +124,8 @@ _mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level,
GLsizei width, GLsizei height);
extern void
-_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_meta_GetTexImage(struct gl_context *ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage);
diff --git a/mesalib/src/mesa/drivers/dri/swrast/swrast.c b/mesalib/src/mesa/drivers/dri/swrast/swrast.c
index 8f7509704..1bf39435b 100644
--- a/mesalib/src/mesa/drivers/dri/swrast/swrast.c
+++ b/mesalib/src/mesa/drivers/dri/swrast/swrast.c
@@ -582,7 +582,6 @@ swrast_init_driver_functions(struct dd_function_table *driver)
static const char *es2_extensions[] = {
/* Used by mesa internally (cf all_mesa_extensions in ../common/utils.c) */
- "GL_ARB_draw_buffers",
"GL_ARB_transpose_matrix",
"GL_ARB_window_pos",
"GL_EXT_blend_func_separate",
diff --git a/mesalib/src/mesa/main/APIspec.xml b/mesalib/src/mesa/main/APIspec.xml
index 0f82d0a38..5d5fc03be 100644
--- a/mesalib/src/mesa/main/APIspec.xml
+++ b/mesalib/src/mesa/main/APIspec.xml
@@ -3114,11 +3114,6 @@
<param name="target" type="GLenum"/>
<param name="framebuffer" type="GLuint"/>
</proto>
-
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
</template>
<template name="DeleteFramebuffers">
@@ -3143,11 +3138,6 @@
<param name="target" type="GLenum"/>
<param name="renderbuffer" type="GLuint"/>
</proto>
-
- <desc name="target">
- <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_RENDERBUFFER" category="GLES2.0"/>
- </desc>
</template>
<template name="DeleteRenderbuffers">
@@ -3175,11 +3165,6 @@
<param name="height" type="GLsizei"/>
</proto>
- <desc name="target">
- <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_RENDERBUFFER" category="GLES2.0"/>
- </desc>
-
<desc name="internalFormat">
<value name="GL_DEPTH_COMPONENT16_OES" category="OES_framebuffer_object"/>
<value name="GL_RGBA4_OES" category="OES_framebuffer_object"/>
@@ -3211,25 +3196,6 @@
<param name="renderbuffertarget" type="GLenum"/>
<param name="renderbuffer" type="GLuint"/>
</proto>
-
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
-
- <desc name="attachment">
- <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
- <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
- <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
- <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
- </desc>
-
- <desc name="renderbuffertarget">
- <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_RENDERBUFFER" category="GLES2.0"/>
- </desc>
</template>
<template name="FramebufferTexture2D">
@@ -3242,20 +3208,6 @@
<param name="level" type="GLint"/>
</proto>
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
-
- <desc name="attachment">
- <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
- <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
- <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
- <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
- </desc>
-
<desc name="textarget" error="GL_INVALID_OPERATION">
<value name="GL_TEXTURE_2D"/>
<value name="GL_TEXTURE_CUBE_MAP_POSITIVE_X" category="GLES2.0"/>
@@ -3287,20 +3239,6 @@
<param name="zoffset" type="GLint"/>
</proto>
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
-
- <desc name="attachment">
- <value name="GL_COLOR_ATTACHMENT0_OES" category="OES_framebuffer_object"/>
- <value name="GL_DEPTH_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_STENCIL_ATTACHMENT_OES" category="OES_framebuffer_object"/>
- <value name="GL_COLOR_ATTACHMENT0" category="GLES2.0"/>
- <value name="GL_DEPTH_ATTACHMENT" category="GLES2.0"/>
- <value name="GL_STENCIL_ATTACHMENT" category="GLES2.0"/>
- </desc>
-
<desc name="textarget" error="GL_INVALID_OPERATION">
<value name="GL_TEXTURE_3D_OES" category="OES_texture_3D"/>
</desc>
@@ -3311,11 +3249,6 @@
<return type="GLenum"/>
<param name="target" type="GLenum"/>
</proto>
-
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
</template>
<template name="GetFramebufferAttachmentParameter" direction="get">
@@ -3327,11 +3260,6 @@
<vector name="params" type="GLtype *" size="dynamic"/>
</proto>
- <desc name="target">
- <value name="GL_FRAMEBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_FRAMEBUFFER" category="GLES2.0"/>
- </desc>
-
<desc name="pname">
<value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" category="OES_framebuffer_object"/>
<value name="GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" category="OES_framebuffer_object"/>
@@ -3356,11 +3284,6 @@
<vector name="params" type="GLtype *" size="dynamic"/>
</proto>
- <desc name="target">
- <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_RENDERBUFFER" category="GLES2.0"/>
- </desc>
-
<desc name="pname" category="OES_framebuffer_object">
<value name="GL_RENDERBUFFER_WIDTH_OES"/>
<value name="GL_RENDERBUFFER_HEIGHT_OES"/>
@@ -3587,11 +3510,14 @@
<param name="target" type="GLenum"/>
<param name="image" type="GLeglImageOES"/>
</proto>
+</template>
- <desc name="target">
- <value name="GL_RENDERBUFFER_OES" category="OES_framebuffer_object"/>
- <value name="GL_RENDERBUFFER" category="GLES2.0"/>
- </desc>
+<template name="DrawBuffers">
+ <proto>
+ <return type="void"/>
+ <param name="n" type="GLsizei"/>
+ <param name="bufs" type="const GLenum *"/>
+ </proto>
</template>
<api name="mesa" implementation="true">
@@ -3868,6 +3794,8 @@
<!-- OES_EGL_image -->
<function name="EGLImageTargetTexture2DOES" template="EGLImageTargetTexture2D"/>
<function name="EGLImageTargetRenderbufferStorageOES" template="EGLImageTargetRenderbufferStorage"/>
+
+ <function name="DrawBuffersARB" template="DrawBuffers"/>
</api>
<api name="GLES1.1">
@@ -4199,6 +4127,9 @@
<category name="EXT_multi_draw_arrays"/>
<category name="OES_EGL_image"/>
+ <category name="NV_draw_buffers"/>
+ <function name="DrawBuffersNV" template="DrawBuffers"/>
+
<function name="CullFace" template="CullFace"/>
<function name="FrontFace" template="FrontFace"/>
diff --git a/mesalib/src/mesa/main/accum.c b/mesalib/src/mesa/main/accum.c
index 6a83930a1..d7ed3a849 100644
--- a/mesalib/src/mesa/main/accum.c
+++ b/mesalib/src/mesa/main/accum.c
@@ -97,6 +97,9 @@ _mesa_Accum( GLenum op, GLfloat value )
return;
}
+ if (ctx->TransformFeedback.RasterDiscard)
+ return;
+
if (ctx->RenderMode == GL_RENDER) {
ctx->Driver.Accum(ctx, op, value);
}
diff --git a/mesalib/src/mesa/main/accum.h b/mesalib/src/mesa/main/accum.h
index bcd91bd53..f16378cc1 100644
--- a/mesalib/src/mesa/main/accum.h
+++ b/mesalib/src/mesa/main/accum.h
@@ -1,75 +1,75 @@
-/**
- * \file accum.h
- * Accumulation buffer operations.
- *
- * \if subset
- * (No-op)
- *
- * \endif
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * 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.
- */
-
-
-
-#ifndef ACCUM_H
-#define ACCUM_H
-
-#include "main/glheader.h"
-#include "main/mfeatures.h"
-
-struct _glapi_table;
-struct gl_context;
-
-#if FEATURE_accum
-
-extern void GLAPIENTRY
-_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
-
-extern void
-_mesa_init_accum_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_accum */
-
-#include "main/compiler.h"
-
-static INLINE void
-_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )
-{
- /* this is used in _mesa_PopAttrib */
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_init_accum_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_accum */
-
-extern void
-_mesa_init_accum( struct gl_context *ctx );
-
-#endif /* ACCUM_H */
+/**
+ * \file accum.h
+ * Accumulation buffer operations.
+ *
+ * \if subset
+ * (No-op)
+ *
+ * \endif
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * 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.
+ */
+
+
+
+#ifndef ACCUM_H
+#define ACCUM_H
+
+#include "main/glheader.h"
+#include "main/mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
+
+#if FEATURE_accum
+
+extern void GLAPIENTRY
+_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
+
+extern void
+_mesa_init_accum_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_accum */
+
+#include "main/compiler.h"
+
+static inline void
+_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )
+{
+ /* this is used in _mesa_PopAttrib */
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_init_accum_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_accum */
+
+extern void
+_mesa_init_accum( struct gl_context *ctx );
+
+#endif /* ACCUM_H */
diff --git a/mesalib/src/mesa/main/api_arrayelt.h b/mesalib/src/mesa/main/api_arrayelt.h
index 16e938fd0..03810c69b 100644
--- a/mesalib/src/mesa/main/api_arrayelt.h
+++ b/mesalib/src/mesa/main/api_arrayelt.h
@@ -1,84 +1,84 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * 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.
- */
-
-
-#ifndef API_ARRAYELT_H
-#define API_ARRAYELT_H
-
-
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-#if FEATURE_arrayelt
-
-#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) \
- do { \
- (vfmt)->ArrayElement = impl ## ArrayElement; \
- } while (0)
-
-extern GLboolean _ae_create_context( struct gl_context *ctx );
-extern void _ae_destroy_context( struct gl_context *ctx );
-extern void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state );
-extern void GLAPIENTRY _ae_ArrayElement( GLint elt );
-
-/* May optionally be called before a batch of element calls:
- */
-extern void _ae_map_vbos( struct gl_context *ctx );
-extern void _ae_unmap_vbos( struct gl_context *ctx );
-
-extern void
-_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt);
-
-#else /* FEATURE_arrayelt */
-
-#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) do { } while (0)
-
-static INLINE GLboolean
-_ae_create_context( struct gl_context *ctx )
-{
- return GL_TRUE;
-}
-
-static INLINE void
-_ae_destroy_context( struct gl_context *ctx )
-{
-}
-
-static INLINE void
-_ae_invalidate_state( struct gl_context *ctx, GLuint new_state )
-{
-}
-
-static INLINE void
-_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt)
-{
-}
-
-#endif /* FEATURE_arrayelt */
-
-
-#endif /* API_ARRAYELT_H */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * 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.
+ */
+
+
+#ifndef API_ARRAYELT_H
+#define API_ARRAYELT_H
+
+
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+#if FEATURE_arrayelt
+
+#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) \
+ do { \
+ (vfmt)->ArrayElement = impl ## ArrayElement; \
+ } while (0)
+
+extern GLboolean _ae_create_context( struct gl_context *ctx );
+extern void _ae_destroy_context( struct gl_context *ctx );
+extern void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state );
+extern void GLAPIENTRY _ae_ArrayElement( GLint elt );
+
+/* May optionally be called before a batch of element calls:
+ */
+extern void _ae_map_vbos( struct gl_context *ctx );
+extern void _ae_unmap_vbos( struct gl_context *ctx );
+
+extern void
+_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt);
+
+#else /* FEATURE_arrayelt */
+
+#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) do { } while (0)
+
+static inline GLboolean
+_ae_create_context( struct gl_context *ctx )
+{
+ return GL_TRUE;
+}
+
+static inline void
+_ae_destroy_context( struct gl_context *ctx )
+{
+}
+
+static inline void
+_ae_invalidate_state( struct gl_context *ctx, GLuint new_state )
+{
+}
+
+static inline void
+_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt)
+{
+}
+
+#endif /* FEATURE_arrayelt */
+
+
+#endif /* API_ARRAYELT_H */
diff --git a/mesalib/src/mesa/main/api_loopback.h b/mesalib/src/mesa/main/api_loopback.h
index 921637641..f53b90280 100644
--- a/mesalib/src/mesa/main/api_loopback.h
+++ b/mesalib/src/mesa/main/api_loopback.h
@@ -1,48 +1,48 @@
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * 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.
- */
-
-
-
-#ifndef API_LOOPBACK_H
-#define API_LOOPBACK_H
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-struct _glapi_table;
-
-#if FEATURE_beginend
-
-extern void _mesa_loopback_init_api_table( struct _glapi_table *dest );
-
-#else /* FEATURE_beginend */
-
-static INLINE void
-_mesa_loopback_init_api_table( struct _glapi_table *dest )
-{
-}
-
-#endif /* FEATURE_beginend */
-
-#endif /* API_LOOPBACK_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * 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.
+ */
+
+
+
+#ifndef API_LOOPBACK_H
+#define API_LOOPBACK_H
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+struct _glapi_table;
+
+#if FEATURE_beginend
+
+extern void _mesa_loopback_init_api_table( struct _glapi_table *dest );
+
+#else /* FEATURE_beginend */
+
+static inline void
+_mesa_loopback_init_api_table( struct _glapi_table *dest )
+{
+}
+
+#endif /* FEATURE_beginend */
+
+#endif /* API_LOOPBACK_H */
diff --git a/mesalib/src/mesa/main/arrayobj.c b/mesalib/src/mesa/main/arrayobj.c
index 8d53186c8..78f56ab00 100644
--- a/mesalib/src/mesa/main/arrayobj.c
+++ b/mesalib/src/mesa/main/arrayobj.c
@@ -1,552 +1,552 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.6
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * (C) Copyright IBM Corporation 2006
- * Copyright (C) 2009 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, 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 OR IBM 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 arrayobj.c
- * Functions for the GL_APPLE_vertex_array_object extension.
- *
- * \todo
- * The code in this file borrows a lot from bufferobj.c. There's a certain
- * amount of cruft left over from that origin that may be unnecessary.
- *
- * \author Ian Romanick <idr@us.ibm.com>
- * \author Brian Paul
- */
-
-
-#include "glheader.h"
-#include "hash.h"
-#include "image.h"
-#include "imports.h"
-#include "context.h"
-#include "mfeatures.h"
-#if FEATURE_ARB_vertex_buffer_object
-#include "bufferobj.h"
-#endif
-#include "arrayobj.h"
-#include "macros.h"
-#include "mtypes.h"
-#include "varray.h"
-#include "main/dispatch.h"
-
-
-/**
- * Look up the array object for the given ID.
- *
- * \returns
- * Either a pointer to the array object with the specified ID or \c NULL for
- * a non-existent ID. The spec defines ID 0 as being technically
- * non-existent.
- */
-
-static INLINE struct gl_array_object *
-lookup_arrayobj(struct gl_context *ctx, GLuint id)
-{
- if (id == 0)
- return NULL;
- else
- return (struct gl_array_object *)
- _mesa_HashLookup(ctx->Array.Objects, id);
-}
-
-
-/**
- * For all the vertex arrays in the array object, unbind any pointers
- * to any buffer objects (VBOs).
- * This is done just prior to array object destruction.
- */
-static void
-unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj)
-{
- GLuint i;
-
- _mesa_reference_buffer_object(ctx, &obj->Vertex.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->Weight.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->Normal.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->Color.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->SecondaryColor.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->FogCoord.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->Index.BufferObj, NULL);
- _mesa_reference_buffer_object(ctx, &obj->EdgeFlag.BufferObj, NULL);
-
- for (i = 0; i < Elements(obj->TexCoord); i++)
- _mesa_reference_buffer_object(ctx, &obj->TexCoord[i].BufferObj, NULL);
-
- for (i = 0; i < Elements(obj->VertexAttrib); i++)
- _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj,NULL);
-
-#if FEATURE_point_size_array
- _mesa_reference_buffer_object(ctx, &obj->PointSize.BufferObj, NULL);
-#endif
-}
-
-
-/**
- * Allocate and initialize a new vertex array object.
- *
- * This function is intended to be called via
- * \c dd_function_table::NewArrayObject.
- */
-struct gl_array_object *
-_mesa_new_array_object( struct gl_context *ctx, GLuint name )
-{
- struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object);
- if (obj)
- _mesa_initialize_array_object(ctx, obj, name);
- return obj;
-}
-
-
-/**
- * Delete an array object.
- *
- * This function is intended to be called via
- * \c dd_function_table::DeleteArrayObject.
- */
-void
-_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- (void) ctx;
- unbind_array_object_vbos(ctx, obj);
- _glthread_DESTROY_MUTEX(obj->Mutex);
- free(obj);
-}
-
-
-/**
- * Set ptr to arrayObj w/ reference counting.
- */
-void
-_mesa_reference_array_object(struct gl_context *ctx,
- struct gl_array_object **ptr,
- struct gl_array_object *arrayObj)
-{
- if (*ptr == arrayObj)
- return;
-
- if (*ptr) {
- /* Unreference the old array object */
- GLboolean deleteFlag = GL_FALSE;
- struct gl_array_object *oldObj = *ptr;
-
- _glthread_LOCK_MUTEX(oldObj->Mutex);
- ASSERT(oldObj->RefCount > 0);
- oldObj->RefCount--;
-#if 0
- printf("ArrayObj %p %d DECR to %d\n",
- (void *) oldObj, oldObj->Name, oldObj->RefCount);
-#endif
- deleteFlag = (oldObj->RefCount == 0);
- _glthread_UNLOCK_MUTEX(oldObj->Mutex);
-
- if (deleteFlag) {
- ASSERT(ctx->Driver.DeleteArrayObject);
- ctx->Driver.DeleteArrayObject(ctx, oldObj);
- }
-
- *ptr = NULL;
- }
- ASSERT(!*ptr);
-
- if (arrayObj) {
- /* reference new array object */
- _glthread_LOCK_MUTEX(arrayObj->Mutex);
- if (arrayObj->RefCount == 0) {
- /* this array's being deleted (look just above) */
- /* Not sure this can every really happen. Warn if it does. */
- _mesa_problem(NULL, "referencing deleted array object");
- *ptr = NULL;
- }
- else {
- arrayObj->RefCount++;
-#if 0
- printf("ArrayObj %p %d INCR to %d\n",
- (void *) arrayObj, arrayObj->Name, arrayObj->RefCount);
-#endif
- *ptr = arrayObj;
- }
- _glthread_UNLOCK_MUTEX(arrayObj->Mutex);
- }
-}
-
-
-
-static void
-init_array(struct gl_context *ctx,
- struct gl_client_array *array, GLint size, GLint type)
-{
- array->Size = size;
- array->Type = type;
- array->Format = GL_RGBA; /* only significant for GL_EXT_vertex_array_bgra */
- array->Stride = 0;
- array->StrideB = 0;
- array->Ptr = NULL;
- array->Enabled = GL_FALSE;
- array->Normalized = GL_FALSE;
- array->_ElementSize = size * _mesa_sizeof_type(type);
-#if FEATURE_ARB_vertex_buffer_object
- /* Vertex array buffers */
- _mesa_reference_buffer_object(ctx, &array->BufferObj,
- ctx->Shared->NullBufferObj);
-#endif
-}
-
-
-/**
- * Initialize a gl_array_object's arrays.
- */
-void
-_mesa_initialize_array_object( struct gl_context *ctx,
- struct gl_array_object *obj,
- GLuint name )
-{
- GLuint i;
-
- obj->Name = name;
-
- _glthread_INIT_MUTEX(obj->Mutex);
- obj->RefCount = 1;
-
- /* Init the individual arrays */
- init_array(ctx, &obj->Vertex, 4, GL_FLOAT);
- init_array(ctx, &obj->Weight, 1, GL_FLOAT);
- init_array(ctx, &obj->Normal, 3, GL_FLOAT);
- init_array(ctx, &obj->Color, 4, GL_FLOAT);
- init_array(ctx, &obj->SecondaryColor, 3, GL_FLOAT);
- init_array(ctx, &obj->FogCoord, 1, GL_FLOAT);
- init_array(ctx, &obj->Index, 1, GL_FLOAT);
- for (i = 0; i < Elements(obj->TexCoord); i++) {
- init_array(ctx, &obj->TexCoord[i], 4, GL_FLOAT);
- }
- init_array(ctx, &obj->EdgeFlag, 1, GL_BOOL);
- for (i = 0; i < Elements(obj->VertexAttrib); i++) {
- init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT);
- }
-
-#if FEATURE_point_size_array
- init_array(ctx, &obj->PointSize, 1, GL_FLOAT);
-#endif
-}
-
-
-/**
- * Add the given array object to the array object pool.
- */
-static void
-save_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- if (obj->Name > 0) {
- /* insert into hash table */
- _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj);
- }
-}
-
-
-/**
- * Remove the given array object from the array object pool.
- * Do not deallocate the array object though.
- */
-static void
-remove_array_object( struct gl_context *ctx, struct gl_array_object *obj )
-{
- if (obj->Name > 0) {
- /* remove from hash table */
- _mesa_HashRemove(ctx->Array.Objects, obj->Name);
- }
-}
-
-
-
-/**
- * Helper for update_arrays().
- * \return min(current min, array->_MaxElement).
- */
-static GLuint
-update_min(GLuint min, struct gl_client_array *array)
-{
- if (array->Enabled) {
- _mesa_update_array_max_element(array);
- return MIN2(min, array->_MaxElement);
- }
- else
- return min;
-}
-
-
-/**
- * Examine vertex arrays to update the gl_array_object::_MaxElement field.
- */
-void
-_mesa_update_array_object_max_element(struct gl_context *ctx,
- struct gl_array_object *arrayObj)
-{
- GLuint i, min = ~0;
-
- min = update_min(min, &arrayObj->Vertex);
- min = update_min(min, &arrayObj->Weight);
- min = update_min(min, &arrayObj->Normal);
- min = update_min(min, &arrayObj->Color);
- min = update_min(min, &arrayObj->SecondaryColor);
- min = update_min(min, &arrayObj->FogCoord);
- min = update_min(min, &arrayObj->Index);
- min = update_min(min, &arrayObj->EdgeFlag);
-#if FEATURE_point_size_array
- min = update_min(min, &arrayObj->PointSize);
-#endif
- for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++)
- min = update_min(min, &arrayObj->TexCoord[i]);
- for (i = 0; i < Elements(arrayObj->VertexAttrib); i++)
- min = update_min(min, &arrayObj->VertexAttrib[i]);
-
- /* _MaxElement is one past the last legal array element */
- arrayObj->_MaxElement = min;
-}
-
-
-/**********************************************************************/
-/* API Functions */
-/**********************************************************************/
-
-
-/**
- * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE().
- * \param genRequired specifies behavour when id was not generated with
- * glGenVertexArrays().
- */
-static void
-bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
-{
- struct gl_array_object * const oldObj = ctx->Array.ArrayObj;
- struct gl_array_object *newObj = NULL;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- ASSERT(oldObj != NULL);
-
- if ( oldObj->Name == id )
- return; /* rebinding the same array object- no change */
-
- /*
- * Get pointer to new array object (newObj)
- */
- if (id == 0) {
- /* The spec says there is no array object named 0, but we use
- * one internally because it simplifies things.
- */
- newObj = ctx->Array.DefaultArrayObj;
- }
- else {
- /* non-default array object */
- newObj = lookup_arrayobj(ctx, id);
- if (!newObj) {
- if (genRequired) {
- _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)");
- return;
- }
-
- /* For APPLE version, generate a new array object now */
- newObj = (*ctx->Driver.NewArrayObject)(ctx, id);
- if (!newObj) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE");
- return;
- }
- save_array_object(ctx, newObj);
- }
- }
-
- ctx->NewState |= _NEW_ARRAY;
- ctx->Array.NewState |= _NEW_ARRAY_ALL;
- _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj);
-
- /* Pass BindVertexArray call to device driver */
- if (ctx->Driver.BindArrayObject && newObj)
- ctx->Driver.BindArrayObject(ctx, newObj);
-}
-
-
-/**
- * ARB version of glBindVertexArray()
- * This function behaves differently from glBindVertexArrayAPPLE() in
- * that this function requires all ids to have been previously generated
- * by glGenVertexArrays[APPLE]().
- */
-void GLAPIENTRY
-_mesa_BindVertexArray( GLuint id )
-{
- GET_CURRENT_CONTEXT(ctx);
- bind_vertex_array(ctx, id, GL_TRUE);
-}
-
-
-/**
- * Bind a new array.
- *
- * \todo
- * The binding could be done more efficiently by comparing the non-NULL
- * pointers in the old and new objects. The only arrays that are "dirty" are
- * the ones that are non-NULL in either object.
- */
-void GLAPIENTRY
-_mesa_BindVertexArrayAPPLE( GLuint id )
-{
- GET_CURRENT_CONTEXT(ctx);
- bind_vertex_array(ctx, id, GL_FALSE);
-}
-
-
-/**
- * Delete a set of array objects.
- *
- * \param n Number of array objects to delete.
- * \param ids Array of \c n array object IDs.
- */
-void GLAPIENTRY
-_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLsizei i;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (n < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)");
- return;
- }
-
- for (i = 0; i < n; i++) {
- struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]);
-
- if ( obj != NULL ) {
- ASSERT( obj->Name == ids[i] );
-
- /* If the array object is currently bound, the spec says "the binding
- * for that object reverts to zero and the default vertex array
- * becomes current."
- */
- if ( obj == ctx->Array.ArrayObj ) {
- CALL_BindVertexArrayAPPLE( ctx->Exec, (0) );
- }
-
- /* The ID is immediately freed for re-use */
- remove_array_object(ctx, obj);
-
- /* Unreference the array object.
- * If refcount hits zero, the object will be deleted.
- */
- _mesa_reference_array_object(ctx, &obj, NULL);
- }
- }
-}
-
-
-/**
- * Generate a set of unique array object IDs and store them in \c arrays.
- * Helper for _mesa_GenVertexArrays[APPLE]() functions below.
- * \param n Number of IDs to generate.
- * \param arrays Array of \c n locations to store the IDs.
- * \param vboOnly Will arrays have to reside in VBOs?
- */
-static void
-gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays,
- GLboolean vboOnly)
-{
- GLuint first;
- GLint i;
- ASSERT_OUTSIDE_BEGIN_END(ctx);
-
- if (n < 0) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE");
- return;
- }
-
- if (!arrays) {
- return;
- }
-
- first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n);
-
- /* Allocate new, empty array objects and return identifiers */
- for (i = 0; i < n; i++) {
- struct gl_array_object *obj;
- GLuint name = first + i;
-
- obj = (*ctx->Driver.NewArrayObject)( ctx, name );
- if (!obj) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE");
- return;
- }
- obj->VBOonly = vboOnly;
- save_array_object(ctx, obj);
- arrays[i] = first + i;
- }
-}
-
-
-/**
- * ARB version of glGenVertexArrays()
- * All arrays will be required to live in VBOs.
- */
-void GLAPIENTRY
-_mesa_GenVertexArrays(GLsizei n, GLuint *arrays)
-{
- GET_CURRENT_CONTEXT(ctx);
- gen_vertex_arrays(ctx, n, arrays, GL_TRUE);
-}
-
-
-/**
- * APPLE version of glGenVertexArraysAPPLE()
- * Arrays may live in VBOs or ordinary memory.
- */
-void GLAPIENTRY
-_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays)
-{
- GET_CURRENT_CONTEXT(ctx);
- gen_vertex_arrays(ctx, n, arrays, GL_FALSE);
-}
-
-
-/**
- * Determine if ID is the name of an array object.
- *
- * \param id ID of the potential array object.
- * \return \c GL_TRUE if \c id is the name of a array object,
- * \c GL_FALSE otherwise.
- */
-GLboolean GLAPIENTRY
-_mesa_IsVertexArrayAPPLE( GLuint id )
-{
- struct gl_array_object * obj;
- GET_CURRENT_CONTEXT(ctx);
- ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
-
- if (id == 0)
- return GL_FALSE;
-
- obj = lookup_arrayobj(ctx, id);
-
- return (obj != NULL) ? GL_TRUE : GL_FALSE;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.6
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * (C) Copyright IBM Corporation 2006
+ * Copyright (C) 2009 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, 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 OR IBM 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 arrayobj.c
+ * Functions for the GL_APPLE_vertex_array_object extension.
+ *
+ * \todo
+ * The code in this file borrows a lot from bufferobj.c. There's a certain
+ * amount of cruft left over from that origin that may be unnecessary.
+ *
+ * \author Ian Romanick <idr@us.ibm.com>
+ * \author Brian Paul
+ */
+
+
+#include "glheader.h"
+#include "hash.h"
+#include "image.h"
+#include "imports.h"
+#include "context.h"
+#include "mfeatures.h"
+#if FEATURE_ARB_vertex_buffer_object
+#include "bufferobj.h"
+#endif
+#include "arrayobj.h"
+#include "macros.h"
+#include "mtypes.h"
+#include "varray.h"
+#include "main/dispatch.h"
+
+
+/**
+ * Look up the array object for the given ID.
+ *
+ * \returns
+ * Either a pointer to the array object with the specified ID or \c NULL for
+ * a non-existent ID. The spec defines ID 0 as being technically
+ * non-existent.
+ */
+
+static inline struct gl_array_object *
+lookup_arrayobj(struct gl_context *ctx, GLuint id)
+{
+ if (id == 0)
+ return NULL;
+ else
+ return (struct gl_array_object *)
+ _mesa_HashLookup(ctx->Array.Objects, id);
+}
+
+
+/**
+ * For all the vertex arrays in the array object, unbind any pointers
+ * to any buffer objects (VBOs).
+ * This is done just prior to array object destruction.
+ */
+static void
+unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj)
+{
+ GLuint i;
+
+ _mesa_reference_buffer_object(ctx, &obj->Vertex.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->Weight.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->Normal.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->Color.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->SecondaryColor.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->FogCoord.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->Index.BufferObj, NULL);
+ _mesa_reference_buffer_object(ctx, &obj->EdgeFlag.BufferObj, NULL);
+
+ for (i = 0; i < Elements(obj->TexCoord); i++)
+ _mesa_reference_buffer_object(ctx, &obj->TexCoord[i].BufferObj, NULL);
+
+ for (i = 0; i < Elements(obj->VertexAttrib); i++)
+ _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj,NULL);
+
+#if FEATURE_point_size_array
+ _mesa_reference_buffer_object(ctx, &obj->PointSize.BufferObj, NULL);
+#endif
+}
+
+
+/**
+ * Allocate and initialize a new vertex array object.
+ *
+ * This function is intended to be called via
+ * \c dd_function_table::NewArrayObject.
+ */
+struct gl_array_object *
+_mesa_new_array_object( struct gl_context *ctx, GLuint name )
+{
+ struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object);
+ if (obj)
+ _mesa_initialize_array_object(ctx, obj, name);
+ return obj;
+}
+
+
+/**
+ * Delete an array object.
+ *
+ * This function is intended to be called via
+ * \c dd_function_table::DeleteArrayObject.
+ */
+void
+_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj )
+{
+ (void) ctx;
+ unbind_array_object_vbos(ctx, obj);
+ _glthread_DESTROY_MUTEX(obj->Mutex);
+ free(obj);
+}
+
+
+/**
+ * Set ptr to arrayObj w/ reference counting.
+ */
+void
+_mesa_reference_array_object(struct gl_context *ctx,
+ struct gl_array_object **ptr,
+ struct gl_array_object *arrayObj)
+{
+ if (*ptr == arrayObj)
+ return;
+
+ if (*ptr) {
+ /* Unreference the old array object */
+ GLboolean deleteFlag = GL_FALSE;
+ struct gl_array_object *oldObj = *ptr;
+
+ _glthread_LOCK_MUTEX(oldObj->Mutex);
+ ASSERT(oldObj->RefCount > 0);
+ oldObj->RefCount--;
+#if 0
+ printf("ArrayObj %p %d DECR to %d\n",
+ (void *) oldObj, oldObj->Name, oldObj->RefCount);
+#endif
+ deleteFlag = (oldObj->RefCount == 0);
+ _glthread_UNLOCK_MUTEX(oldObj->Mutex);
+
+ if (deleteFlag) {
+ ASSERT(ctx->Driver.DeleteArrayObject);
+ ctx->Driver.DeleteArrayObject(ctx, oldObj);
+ }
+
+ *ptr = NULL;
+ }
+ ASSERT(!*ptr);
+
+ if (arrayObj) {
+ /* reference new array object */
+ _glthread_LOCK_MUTEX(arrayObj->Mutex);
+ if (arrayObj->RefCount == 0) {
+ /* this array's being deleted (look just above) */
+ /* Not sure this can every really happen. Warn if it does. */
+ _mesa_problem(NULL, "referencing deleted array object");
+ *ptr = NULL;
+ }
+ else {
+ arrayObj->RefCount++;
+#if 0
+ printf("ArrayObj %p %d INCR to %d\n",
+ (void *) arrayObj, arrayObj->Name, arrayObj->RefCount);
+#endif
+ *ptr = arrayObj;
+ }
+ _glthread_UNLOCK_MUTEX(arrayObj->Mutex);
+ }
+}
+
+
+
+static void
+init_array(struct gl_context *ctx,
+ struct gl_client_array *array, GLint size, GLint type)
+{
+ array->Size = size;
+ array->Type = type;
+ array->Format = GL_RGBA; /* only significant for GL_EXT_vertex_array_bgra */
+ array->Stride = 0;
+ array->StrideB = 0;
+ array->Ptr = NULL;
+ array->Enabled = GL_FALSE;
+ array->Normalized = GL_FALSE;
+ array->_ElementSize = size * _mesa_sizeof_type(type);
+#if FEATURE_ARB_vertex_buffer_object
+ /* Vertex array buffers */
+ _mesa_reference_buffer_object(ctx, &array->BufferObj,
+ ctx->Shared->NullBufferObj);
+#endif
+}
+
+
+/**
+ * Initialize a gl_array_object's arrays.
+ */
+void
+_mesa_initialize_array_object( struct gl_context *ctx,
+ struct gl_array_object *obj,
+ GLuint name )
+{
+ GLuint i;
+
+ obj->Name = name;
+
+ _glthread_INIT_MUTEX(obj->Mutex);
+ obj->RefCount = 1;
+
+ /* Init the individual arrays */
+ init_array(ctx, &obj->Vertex, 4, GL_FLOAT);
+ init_array(ctx, &obj->Weight, 1, GL_FLOAT);
+ init_array(ctx, &obj->Normal, 3, GL_FLOAT);
+ init_array(ctx, &obj->Color, 4, GL_FLOAT);
+ init_array(ctx, &obj->SecondaryColor, 3, GL_FLOAT);
+ init_array(ctx, &obj->FogCoord, 1, GL_FLOAT);
+ init_array(ctx, &obj->Index, 1, GL_FLOAT);
+ for (i = 0; i < Elements(obj->TexCoord); i++) {
+ init_array(ctx, &obj->TexCoord[i], 4, GL_FLOAT);
+ }
+ init_array(ctx, &obj->EdgeFlag, 1, GL_BOOL);
+ for (i = 0; i < Elements(obj->VertexAttrib); i++) {
+ init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT);
+ }
+
+#if FEATURE_point_size_array
+ init_array(ctx, &obj->PointSize, 1, GL_FLOAT);
+#endif
+}
+
+
+/**
+ * Add the given array object to the array object pool.
+ */
+static void
+save_array_object( struct gl_context *ctx, struct gl_array_object *obj )
+{
+ if (obj->Name > 0) {
+ /* insert into hash table */
+ _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj);
+ }
+}
+
+
+/**
+ * Remove the given array object from the array object pool.
+ * Do not deallocate the array object though.
+ */
+static void
+remove_array_object( struct gl_context *ctx, struct gl_array_object *obj )
+{
+ if (obj->Name > 0) {
+ /* remove from hash table */
+ _mesa_HashRemove(ctx->Array.Objects, obj->Name);
+ }
+}
+
+
+
+/**
+ * Helper for update_arrays().
+ * \return min(current min, array->_MaxElement).
+ */
+static GLuint
+update_min(GLuint min, struct gl_client_array *array)
+{
+ if (array->Enabled) {
+ _mesa_update_array_max_element(array);
+ return MIN2(min, array->_MaxElement);
+ }
+ else
+ return min;
+}
+
+
+/**
+ * Examine vertex arrays to update the gl_array_object::_MaxElement field.
+ */
+void
+_mesa_update_array_object_max_element(struct gl_context *ctx,
+ struct gl_array_object *arrayObj)
+{
+ GLuint i, min = ~0;
+
+ min = update_min(min, &arrayObj->Vertex);
+ min = update_min(min, &arrayObj->Weight);
+ min = update_min(min, &arrayObj->Normal);
+ min = update_min(min, &arrayObj->Color);
+ min = update_min(min, &arrayObj->SecondaryColor);
+ min = update_min(min, &arrayObj->FogCoord);
+ min = update_min(min, &arrayObj->Index);
+ min = update_min(min, &arrayObj->EdgeFlag);
+#if FEATURE_point_size_array
+ min = update_min(min, &arrayObj->PointSize);
+#endif
+ for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++)
+ min = update_min(min, &arrayObj->TexCoord[i]);
+ for (i = 0; i < Elements(arrayObj->VertexAttrib); i++)
+ min = update_min(min, &arrayObj->VertexAttrib[i]);
+
+ /* _MaxElement is one past the last legal array element */
+ arrayObj->_MaxElement = min;
+}
+
+
+/**********************************************************************/
+/* API Functions */
+/**********************************************************************/
+
+
+/**
+ * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE().
+ * \param genRequired specifies behavour when id was not generated with
+ * glGenVertexArrays().
+ */
+static void
+bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
+{
+ struct gl_array_object * const oldObj = ctx->Array.ArrayObj;
+ struct gl_array_object *newObj = NULL;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ ASSERT(oldObj != NULL);
+
+ if ( oldObj->Name == id )
+ return; /* rebinding the same array object- no change */
+
+ /*
+ * Get pointer to new array object (newObj)
+ */
+ if (id == 0) {
+ /* The spec says there is no array object named 0, but we use
+ * one internally because it simplifies things.
+ */
+ newObj = ctx->Array.DefaultArrayObj;
+ }
+ else {
+ /* non-default array object */
+ newObj = lookup_arrayobj(ctx, id);
+ if (!newObj) {
+ if (genRequired) {
+ _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)");
+ return;
+ }
+
+ /* For APPLE version, generate a new array object now */
+ newObj = (*ctx->Driver.NewArrayObject)(ctx, id);
+ if (!newObj) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE");
+ return;
+ }
+ save_array_object(ctx, newObj);
+ }
+ }
+
+ ctx->NewState |= _NEW_ARRAY;
+ ctx->Array.NewState |= _NEW_ARRAY_ALL;
+ _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj);
+
+ /* Pass BindVertexArray call to device driver */
+ if (ctx->Driver.BindArrayObject && newObj)
+ ctx->Driver.BindArrayObject(ctx, newObj);
+}
+
+
+/**
+ * ARB version of glBindVertexArray()
+ * This function behaves differently from glBindVertexArrayAPPLE() in
+ * that this function requires all ids to have been previously generated
+ * by glGenVertexArrays[APPLE]().
+ */
+void GLAPIENTRY
+_mesa_BindVertexArray( GLuint id )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ bind_vertex_array(ctx, id, GL_TRUE);
+}
+
+
+/**
+ * Bind a new array.
+ *
+ * \todo
+ * The binding could be done more efficiently by comparing the non-NULL
+ * pointers in the old and new objects. The only arrays that are "dirty" are
+ * the ones that are non-NULL in either object.
+ */
+void GLAPIENTRY
+_mesa_BindVertexArrayAPPLE( GLuint id )
+{
+ GET_CURRENT_CONTEXT(ctx);
+ bind_vertex_array(ctx, id, GL_FALSE);
+}
+
+
+/**
+ * Delete a set of array objects.
+ *
+ * \param n Number of array objects to delete.
+ * \param ids Array of \c n array object IDs.
+ */
+void GLAPIENTRY
+_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLsizei i;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (n < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)");
+ return;
+ }
+
+ for (i = 0; i < n; i++) {
+ struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]);
+
+ if ( obj != NULL ) {
+ ASSERT( obj->Name == ids[i] );
+
+ /* If the array object is currently bound, the spec says "the binding
+ * for that object reverts to zero and the default vertex array
+ * becomes current."
+ */
+ if ( obj == ctx->Array.ArrayObj ) {
+ CALL_BindVertexArrayAPPLE( ctx->Exec, (0) );
+ }
+
+ /* The ID is immediately freed for re-use */
+ remove_array_object(ctx, obj);
+
+ /* Unreference the array object.
+ * If refcount hits zero, the object will be deleted.
+ */
+ _mesa_reference_array_object(ctx, &obj, NULL);
+ }
+ }
+}
+
+
+/**
+ * Generate a set of unique array object IDs and store them in \c arrays.
+ * Helper for _mesa_GenVertexArrays[APPLE]() functions below.
+ * \param n Number of IDs to generate.
+ * \param arrays Array of \c n locations to store the IDs.
+ * \param vboOnly Will arrays have to reside in VBOs?
+ */
+static void
+gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays,
+ GLboolean vboOnly)
+{
+ GLuint first;
+ GLint i;
+ ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+ if (n < 0) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE");
+ return;
+ }
+
+ if (!arrays) {
+ return;
+ }
+
+ first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n);
+
+ /* Allocate new, empty array objects and return identifiers */
+ for (i = 0; i < n; i++) {
+ struct gl_array_object *obj;
+ GLuint name = first + i;
+
+ obj = (*ctx->Driver.NewArrayObject)( ctx, name );
+ if (!obj) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE");
+ return;
+ }
+ obj->VBOonly = vboOnly;
+ save_array_object(ctx, obj);
+ arrays[i] = first + i;
+ }
+}
+
+
+/**
+ * ARB version of glGenVertexArrays()
+ * All arrays will be required to live in VBOs.
+ */
+void GLAPIENTRY
+_mesa_GenVertexArrays(GLsizei n, GLuint *arrays)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ gen_vertex_arrays(ctx, n, arrays, GL_TRUE);
+}
+
+
+/**
+ * APPLE version of glGenVertexArraysAPPLE()
+ * Arrays may live in VBOs or ordinary memory.
+ */
+void GLAPIENTRY
+_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ gen_vertex_arrays(ctx, n, arrays, GL_FALSE);
+}
+
+
+/**
+ * Determine if ID is the name of an array object.
+ *
+ * \param id ID of the potential array object.
+ * \return \c GL_TRUE if \c id is the name of a array object,
+ * \c GL_FALSE otherwise.
+ */
+GLboolean GLAPIENTRY
+_mesa_IsVertexArrayAPPLE( GLuint id )
+{
+ struct gl_array_object * obj;
+ GET_CURRENT_CONTEXT(ctx);
+ ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
+
+ if (id == 0)
+ return GL_FALSE;
+
+ obj = lookup_arrayobj(ctx, id);
+
+ return (obj != NULL) ? GL_TRUE : GL_FALSE;
+}
diff --git a/mesalib/src/mesa/main/atifragshader.h b/mesalib/src/mesa/main/atifragshader.h
index 838d327c0..90ada212a 100644
--- a/mesalib/src/mesa/main/atifragshader.h
+++ b/mesalib/src/mesa/main/atifragshader.h
@@ -1,154 +1,154 @@
-/*
- * Mesa 3-D graphics library ATI Fragment Shader
- *
- * Copyright (C) 2004 David Airlie All Rights Reserved.
- *
- */
-
-#ifndef ATIFRAGSHADER_H
-#define ATIFRAGSHADER_H
-
-#include "compiler.h"
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct gl_context;
-
-#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
-#define MAX_NUM_PASSES_ATI 2
-#define MAX_NUM_FRAGMENT_REGISTERS_ATI 6
-
-struct ati_fs_opcode_st
-{
- GLenum opcode;
- GLint num_src_args;
-};
-
-extern struct ati_fs_opcode_st ati_fs_opcodes[];
-
-struct atifragshader_src_register
-{
- GLuint Index;
- GLuint argRep;
- GLuint argMod;
-};
-
-struct atifragshader_dst_register
-{
- GLuint Index;
- GLuint dstMod;
- GLuint dstMask;
-};
-
-#define ATI_FRAGMENT_SHADER_COLOR_OP 0
-#define ATI_FRAGMENT_SHADER_ALPHA_OP 1
-#define ATI_FRAGMENT_SHADER_PASS_OP 2
-#define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
-
-/* two opcodes - one for color/one for alpha */
-/* up to three source registers for most ops */
-struct atifs_instruction
-{
- GLenum Opcode[2];
- GLuint ArgCount[2];
- struct atifragshader_src_register SrcReg[2][3];
- struct atifragshader_dst_register DstReg[2];
-};
-
-/* different from arithmetic shader instruction */
-struct atifs_setupinst
-{
- GLenum Opcode;
- GLuint src;
- GLenum swizzle;
-};
-
-
-#if FEATURE_ATI_fragment_shader
-
-extern void
-_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
-
-extern struct ati_fragment_shader *
-_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id);
-
-extern void
-_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
- struct ati_fragment_shader *s);
-
-
-extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range);
-
-extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id);
-
-extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id);
-
-extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void);
-
-extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void);
-
-extern void GLAPIENTRY
-_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle);
-
-extern void GLAPIENTRY
-_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle);
-
-extern void GLAPIENTRY
-_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod);
-
-extern void GLAPIENTRY
-_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
- GLuint arg2Mod);
-
-extern void GLAPIENTRY
-_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
- GLuint dstMod, GLuint arg1, GLuint arg1Rep,
- GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
- GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
- GLuint arg3Mod);
-
-extern void GLAPIENTRY
-_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod);
-
-extern void GLAPIENTRY
-_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod);
-
-extern void GLAPIENTRY
-_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
- GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
- GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
- GLuint arg3Rep, GLuint arg3Mod);
-
-extern void GLAPIENTRY
-_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
-
-#else /* FEATURE_ATI_fragment_shader */
-
-static INLINE void
-_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
-{
-}
-
-static INLINE struct ati_fragment_shader *
-_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id)
-{
- return NULL;
-}
-
-static INLINE void
-_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
- struct ati_fragment_shader *s)
-{
-}
-
-#endif /* FEATURE_ATI_fragment_shader */
-
-#endif /* ATIFRAGSHADER_H */
+/*
+ * Mesa 3-D graphics library ATI Fragment Shader
+ *
+ * Copyright (C) 2004 David Airlie All Rights Reserved.
+ *
+ */
+
+#ifndef ATIFRAGSHADER_H
+#define ATIFRAGSHADER_H
+
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
+
+#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8
+#define MAX_NUM_PASSES_ATI 2
+#define MAX_NUM_FRAGMENT_REGISTERS_ATI 6
+
+struct ati_fs_opcode_st
+{
+ GLenum opcode;
+ GLint num_src_args;
+};
+
+extern struct ati_fs_opcode_st ati_fs_opcodes[];
+
+struct atifragshader_src_register
+{
+ GLuint Index;
+ GLuint argRep;
+ GLuint argMod;
+};
+
+struct atifragshader_dst_register
+{
+ GLuint Index;
+ GLuint dstMod;
+ GLuint dstMask;
+};
+
+#define ATI_FRAGMENT_SHADER_COLOR_OP 0
+#define ATI_FRAGMENT_SHADER_ALPHA_OP 1
+#define ATI_FRAGMENT_SHADER_PASS_OP 2
+#define ATI_FRAGMENT_SHADER_SAMPLE_OP 3
+
+/* two opcodes - one for color/one for alpha */
+/* up to three source registers for most ops */
+struct atifs_instruction
+{
+ GLenum Opcode[2];
+ GLuint ArgCount[2];
+ struct atifragshader_src_register SrcReg[2][3];
+ struct atifragshader_dst_register DstReg[2];
+};
+
+/* different from arithmetic shader instruction */
+struct atifs_setupinst
+{
+ GLenum Opcode;
+ GLuint src;
+ GLenum swizzle;
+};
+
+
+#if FEATURE_ATI_fragment_shader
+
+extern void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
+
+extern struct ati_fragment_shader *
+_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id);
+
+extern void
+_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
+ struct ati_fragment_shader *s);
+
+
+extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range);
+
+extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id);
+
+extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id);
+
+extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void);
+
+extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void);
+
+extern void GLAPIENTRY
+_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle);
+
+extern void GLAPIENTRY
+_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle);
+
+extern void GLAPIENTRY
+_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod);
+
+extern void GLAPIENTRY
+_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+ GLuint arg2Mod);
+
+extern void GLAPIENTRY
+_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask,
+ GLuint dstMod, GLuint arg1, GLuint arg1Rep,
+ GLuint arg1Mod, GLuint arg2, GLuint arg2Rep,
+ GLuint arg2Mod, GLuint arg3, GLuint arg3Rep,
+ GLuint arg3Mod);
+
+extern void GLAPIENTRY
+_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod);
+
+extern void GLAPIENTRY
+_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod);
+
+extern void GLAPIENTRY
+_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
+ GLuint arg1Rep, GLuint arg1Mod, GLuint arg2,
+ GLuint arg2Rep, GLuint arg2Mod, GLuint arg3,
+ GLuint arg3Rep, GLuint arg3Mod);
+
+extern void GLAPIENTRY
+_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
+
+#else /* FEATURE_ATI_fragment_shader */
+
+static inline void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+}
+
+static inline struct ati_fragment_shader *
+_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id)
+{
+ return NULL;
+}
+
+static inline void
+_mesa_delete_ati_fragment_shader(struct gl_context *ctx,
+ struct ati_fragment_shader *s)
+{
+}
+
+#endif /* FEATURE_ATI_fragment_shader */
+
+#endif /* ATIFRAGSHADER_H */
diff --git a/mesalib/src/mesa/main/attrib.c b/mesalib/src/mesa/main/attrib.c
index 6f427e008..e67957d4d 100644
--- a/mesalib/src/mesa/main/attrib.c
+++ b/mesalib/src/mesa/main/attrib.c
@@ -497,7 +497,7 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable)
const GLuint mask = 1 << i;
if ((ctx->Transform.ClipPlanesEnabled & mask) != (enable->ClipPlanes & mask))
_mesa_set_enable(ctx, (GLenum) (GL_CLIP_PLANE0 + i),
- (GLboolean) ((enable->ClipPlanes & mask) ? GL_TRUE : GL_FALSE));
+ !!(enable->ClipPlanes & mask));
}
TEST_AND_UPDATE(ctx->Light.ColorMaterialEnabled, enable->ColorMaterial,
@@ -620,38 +620,31 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable)
if (ctx->Texture.Unit[i].Enabled != enabled) {
_mesa_ActiveTextureARB(GL_TEXTURE0 + i);
- _mesa_set_enable(ctx, GL_TEXTURE_1D,
- (enabled & TEXTURE_1D_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_2D,
- (enabled & TEXTURE_2D_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_3D,
- (enabled & TEXTURE_3D_BIT) ? GL_TRUE : GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(enabled & TEXTURE_1D_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(enabled & TEXTURE_2D_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(enabled & TEXTURE_3D_BIT));
if (ctx->Extensions.NV_texture_rectangle) {
_mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE_ARB,
- (enabled & TEXTURE_RECT_BIT) ? GL_TRUE : GL_FALSE);
+ !!(enabled & TEXTURE_RECT_BIT));
}
if (ctx->Extensions.ARB_texture_cube_map) {
_mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP,
- (enabled & TEXTURE_CUBE_BIT) ? GL_TRUE : GL_FALSE);
+ !!(enabled & TEXTURE_CUBE_BIT));
}
if (ctx->Extensions.MESA_texture_array) {
_mesa_set_enable(ctx, GL_TEXTURE_1D_ARRAY_EXT,
- (enabled & TEXTURE_1D_ARRAY_BIT) ? GL_TRUE : GL_FALSE);
+ !!(enabled & TEXTURE_1D_ARRAY_BIT));
_mesa_set_enable(ctx, GL_TEXTURE_2D_ARRAY_EXT,
- (enabled & TEXTURE_2D_ARRAY_BIT) ? GL_TRUE : GL_FALSE);
+ !!(enabled & TEXTURE_2D_ARRAY_BIT));
}
}
if (ctx->Texture.Unit[i].TexGenEnabled != genEnabled) {
_mesa_ActiveTextureARB(GL_TEXTURE0 + i);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_S,
- (genEnabled & S_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_T,
- (genEnabled & T_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_R,
- (genEnabled & R_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q,
- (genEnabled & Q_BIT) ? GL_TRUE : GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, !!(genEnabled & S_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, !!(genEnabled & T_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, !!(genEnabled & R_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, !!(genEnabled & Q_BIT));
}
}
@@ -674,25 +667,22 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate)
GLuint tgt;
_mesa_ActiveTextureARB(GL_TEXTURE0_ARB + u);
- _mesa_set_enable(ctx, GL_TEXTURE_1D,
- (unit->Enabled & TEXTURE_1D_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_2D,
- (unit->Enabled & TEXTURE_2D_BIT) ? GL_TRUE : GL_FALSE);
- _mesa_set_enable(ctx, GL_TEXTURE_3D,
- (unit->Enabled & TEXTURE_3D_BIT) ? GL_TRUE : GL_FALSE);
+ _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(unit->Enabled & TEXTURE_1D_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(unit->Enabled & TEXTURE_2D_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(unit->Enabled & TEXTURE_3D_BIT));
if (ctx->Extensions.ARB_texture_cube_map) {
_mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP_ARB,
- (unit->Enabled & TEXTURE_CUBE_BIT) ? GL_TRUE : GL_FALSE);
+ !!(unit->Enabled & TEXTURE_CUBE_BIT));
}
if (ctx->Extensions.NV_texture_rectangle) {
_mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE_NV,
- (unit->Enabled & TEXTURE_RECT_BIT) ? GL_TRUE : GL_FALSE);
+ !!(unit->Enabled & TEXTURE_RECT_BIT));
}
if (ctx->Extensions.MESA_texture_array) {
_mesa_set_enable(ctx, GL_TEXTURE_1D_ARRAY_EXT,
- (unit->Enabled & TEXTURE_1D_ARRAY_BIT) ? GL_TRUE : GL_FALSE);
+ !!(unit->Enabled & TEXTURE_1D_ARRAY_BIT));
_mesa_set_enable(ctx, GL_TEXTURE_2D_ARRAY_EXT,
- (unit->Enabled & TEXTURE_2D_ARRAY_BIT) ? GL_TRUE : GL_FALSE);
+ !!(unit->Enabled & TEXTURE_2D_ARRAY_BIT));
}
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, unit->EnvMode);
@@ -719,44 +709,30 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate)
ctx->Driver.TexGen(ctx, GL_Q, GL_EYE_PLANE, unit->GenQ.EyePlane);
}
}
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_S,
- ((unit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE));
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_T,
- ((unit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE));
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_R,
- ((unit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE));
- _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q,
- ((unit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, !!(unit->TexGenEnabled & S_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, !!(unit->TexGenEnabled & T_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, !!(unit->TexGenEnabled & R_BIT));
+ _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, !!(unit->TexGenEnabled & Q_BIT));
_mesa_TexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS,
unit->LodBias);
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB,
unit->Combine.ModeRGB);
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA,
unit->Combine.ModeA);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB,
- unit->Combine.SourceRGB[0]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB,
- unit->Combine.SourceRGB[1]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB,
- unit->Combine.SourceRGB[2]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA,
- unit->Combine.SourceA[0]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA,
- unit->Combine.SourceA[1]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_ALPHA,
- unit->Combine.SourceA[2]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB,
- unit->Combine.OperandRGB[0]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB,
- unit->Combine.OperandRGB[1]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB,
- unit->Combine.OperandRGB[2]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA,
- unit->Combine.OperandA[0]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA,
- unit->Combine.OperandA[1]);
- _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_ALPHA,
- unit->Combine.OperandA[2]);
+ {
+ const GLuint n = ctx->Extensions.NV_texture_env_combine4 ? 4 : 3;
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB + i,
+ unit->Combine.SourceRGB[i]);
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA + i,
+ unit->Combine.SourceA[i]);
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB + i,
+ unit->Combine.OperandRGB[i]);
+ _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA + i,
+ unit->Combine.OperandA[i]);
+ }
+ }
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_RGB_SCALE,
1 << unit->Combine.ScaleShiftRGB);
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_ALPHA_SCALE,
@@ -1246,12 +1222,8 @@ _mesa_PopAttrib(void)
const GLuint mask = 1 << i;
const GLfloat *eyePlane = xform->EyeUserPlane[i];
COPY_4V(ctx->Transform.EyeUserPlane[i], eyePlane);
- if (xform->ClipPlanesEnabled & mask) {
- _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, GL_TRUE);
- }
- else {
- _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, GL_FALSE);
- }
+ _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i,
+ !!(xform->ClipPlanesEnabled & mask));
if (ctx->Driver.ClipPlane)
ctx->Driver.ClipPlane( ctx, GL_CLIP_PLANE0 + i, eyePlane );
}
diff --git a/mesalib/src/mesa/main/attrib.h b/mesalib/src/mesa/main/attrib.h
index 8e7969a65..6809311cf 100644
--- a/mesalib/src/mesa/main/attrib.h
+++ b/mesalib/src/mesa/main/attrib.h
@@ -1,80 +1,80 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 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 ATTRIB_H
-#define ATTRIB_H
-
-
-#include "compiler.h"
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct gl_context;
-
-#if FEATURE_attrib_stack
-
-extern void GLAPIENTRY
-_mesa_PushAttrib( GLbitfield mask );
-
-extern void GLAPIENTRY
-_mesa_PopAttrib( void );
-
-extern void GLAPIENTRY
-_mesa_PushClientAttrib( GLbitfield mask );
-
-extern void GLAPIENTRY
-_mesa_PopClientAttrib( void );
-
-extern void
-_mesa_init_attrib_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_attrib_stack */
-
-static INLINE void
-_mesa_PushClientAttrib( GLbitfield mask )
-{
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_PopClientAttrib( void )
-{
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_init_attrib_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_attrib_stack */
-
-extern void
-_mesa_init_attrib( struct gl_context *ctx );
-
-extern void
-_mesa_free_attrib_data( struct gl_context *ctx );
-
-#endif /* ATTRIB_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 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 ATTRIB_H
+#define ATTRIB_H
+
+
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
+
+#if FEATURE_attrib_stack
+
+extern void GLAPIENTRY
+_mesa_PushAttrib( GLbitfield mask );
+
+extern void GLAPIENTRY
+_mesa_PopAttrib( void );
+
+extern void GLAPIENTRY
+_mesa_PushClientAttrib( GLbitfield mask );
+
+extern void GLAPIENTRY
+_mesa_PopClientAttrib( void );
+
+extern void
+_mesa_init_attrib_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_attrib_stack */
+
+static inline void
+_mesa_PushClientAttrib( GLbitfield mask )
+{
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_PopClientAttrib( void )
+{
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_init_attrib_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_attrib_stack */
+
+extern void
+_mesa_init_attrib( struct gl_context *ctx );
+
+extern void
+_mesa_free_attrib_data( struct gl_context *ctx );
+
+#endif /* ATTRIB_H */
diff --git a/mesalib/src/mesa/main/bitset.h b/mesalib/src/mesa/main/bitset.h
index 9f48b3cce..7a0704b14 100644
--- a/mesalib/src/mesa/main/bitset.h
+++ b/mesalib/src/mesa/main/bitset.h
@@ -81,7 +81,7 @@
/* Get first bit set in a bitset.
*/
-static INLINE int
+static inline int
__bitset_ffs(const BITSET_WORD *x, int n)
{
int i;
diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c
index 45e72045a..67241eb1e 100644
--- a/mesalib/src/mesa/main/bufferobj.c
+++ b/mesalib/src/mesa/main/bufferobj.c
@@ -70,7 +70,7 @@ static struct gl_buffer_object DummyBufferObject;
* \return pointer to pointer to the buffer object bound to \c target in the
* specified context or \c NULL if \c target is invalid.
*/
-static INLINE struct gl_buffer_object **
+static inline struct gl_buffer_object **
get_buffer_target(struct gl_context *ctx, GLenum target)
{
switch (target) {
@@ -112,7 +112,7 @@ get_buffer_target(struct gl_context *ctx, GLenum target)
* \return pointer to the buffer object bound to \c target in the
* specified context or \c NULL if \c target is invalid.
*/
-static INLINE struct gl_buffer_object *
+static inline struct gl_buffer_object *
get_buffer(struct gl_context *ctx, GLenum target)
{
struct gl_buffer_object **bufObj = get_buffer_target(ctx, target);
diff --git a/mesalib/src/mesa/main/bufferobj.h b/mesalib/src/mesa/main/bufferobj.h
index f82e41411..b4e70f2f0 100644
--- a/mesalib/src/mesa/main/bufferobj.h
+++ b/mesalib/src/mesa/main/bufferobj.h
@@ -39,7 +39,7 @@
/** Is the given buffer object currently mapped? */
-static INLINE GLboolean
+static inline GLboolean
_mesa_bufferobj_mapped(const struct gl_buffer_object *obj)
{
return obj->Pointer != NULL;
@@ -50,7 +50,7 @@ _mesa_bufferobj_mapped(const struct gl_buffer_object *obj)
* Mesa uses default buffer objects in several places. Default buffers
* always have Name==0. User created buffers have Name!=0.
*/
-static INLINE GLboolean
+static inline GLboolean
_mesa_is_bufferobj(const struct gl_buffer_object *obj)
{
return obj->Name != 0;
@@ -79,7 +79,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
struct gl_buffer_object **ptr,
struct gl_buffer_object *bufObj);
-static INLINE void
+static inline void
_mesa_reference_buffer_object(struct gl_context *ctx,
struct gl_buffer_object **ptr,
struct gl_buffer_object *bufObj)
diff --git a/mesalib/src/mesa/main/clear.c b/mesalib/src/mesa/main/clear.c
index 301fe694c..c35675fb4 100644
--- a/mesalib/src/mesa/main/clear.c
+++ b/mesalib/src/mesa/main/clear.c
@@ -200,6 +200,9 @@ _mesa_Clear( GLbitfield mask )
ctx->DrawBuffer->_Ymin >= ctx->DrawBuffer->_Ymax)
return;
+ if (ctx->TransformFeedback.RasterDiscard)
+ return;
+
if (ctx->RenderMode == GL_RENDER) {
GLbitfield bufferMask;
@@ -328,7 +331,7 @@ _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
drawbuffer);
return;
}
- else {
+ else if (!ctx->TransformFeedback.RasterDiscard) {
/* Save current stencil clear value, set to 'value', do the
* stencil clear and restore the clear value.
* XXX in the future we may have a new ctx->Driver.ClearBuffer()
@@ -352,7 +355,7 @@ _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
drawbuffer);
return;
}
- else if (mask) {
+ else if (mask && !ctx->TransformFeedback.RasterDiscard) {
union gl_color_union clearSave;
/* save color */
@@ -403,7 +406,7 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
drawbuffer);
return;
}
- else if (mask) {
+ else if (mask && !ctx->TransformFeedback.RasterDiscard) {
union gl_color_union clearSave;
/* save color */
@@ -452,7 +455,7 @@ _mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
drawbuffer);
return;
}
- else {
+ else if (!ctx->TransformFeedback.RasterDiscard) {
/* Save current depth clear value, set to 'value', do the
* depth clear and restore the clear value.
* XXX in the future we may have a new ctx->Driver.ClearBuffer()
@@ -477,7 +480,7 @@ _mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
drawbuffer);
return;
}
- else if (mask) {
+ else if (mask && !ctx->TransformFeedback.RasterDiscard) {
union gl_color_union clearSave;
/* save color */
@@ -528,6 +531,9 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer,
return;
}
+ if (ctx->TransformFeedback.RasterDiscard)
+ return;
+
if (ctx->NewState) {
_mesa_update_state( ctx );
}
diff --git a/mesalib/src/mesa/main/colortab.h b/mesalib/src/mesa/main/colortab.h
index b0d2b5db8..4e225ffc9 100644
--- a/mesalib/src/mesa/main/colortab.h
+++ b/mesalib/src/mesa/main/colortab.h
@@ -50,7 +50,7 @@ _mesa_init_colortable_dispatch(struct _glapi_table *disp);
#else /* FEATURE_colortable */
-static INLINE void GLAPIENTRY
+static inline void GLAPIENTRY
_mesa_ColorTable( GLenum target, GLenum internalformat,
GLsizei width, GLenum format, GLenum type,
const GLvoid *table )
@@ -58,7 +58,7 @@ _mesa_ColorTable( GLenum target, GLenum internalformat,
ASSERT_NO_FEATURE();
}
-static INLINE void GLAPIENTRY
+static inline void GLAPIENTRY
_mesa_ColorSubTable( GLenum target, GLsizei start,
GLsizei count, GLenum format, GLenum type,
const GLvoid *table )
@@ -66,7 +66,7 @@ _mesa_ColorSubTable( GLenum target, GLsizei start,
ASSERT_NO_FEATURE();
}
-static INLINE void
+static inline void
_mesa_init_colortable_dispatch(struct _glapi_table *disp)
{
}
diff --git a/mesalib/src/mesa/main/convolve.h b/mesalib/src/mesa/main/convolve.h
index 7ecfcd6b1..952285643 100644
--- a/mesalib/src/mesa/main/convolve.h
+++ b/mesalib/src/mesa/main/convolve.h
@@ -1,51 +1,51 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * 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.
- */
-
-
-#ifndef CONVOLVE_H
-#define CONVOLVE_H
-
-
-#include "compiler.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-
-
-#if FEATURE_convolve
-
-extern void
-_mesa_init_convolve_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_convolve */
-
-static INLINE void
-_mesa_init_convolve_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_convolve */
-
-#endif /* CONVOLVE_H */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * 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.
+ */
+
+
+#ifndef CONVOLVE_H
+#define CONVOLVE_H
+
+
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+
+
+#if FEATURE_convolve
+
+extern void
+_mesa_init_convolve_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_convolve */
+
+static inline void
+_mesa_init_convolve_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_convolve */
+
+#endif /* CONVOLVE_H */
diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h
index 720e4f53d..787556451 100644
--- a/mesalib/src/mesa/main/dd.h
+++ b/mesalib/src/mesa/main/dd.h
@@ -284,9 +284,8 @@ struct dd_function_table {
/**
* Called by glGetTexImage().
*/
- void (*GetTexImage)( struct gl_context *ctx, GLenum target, GLint level,
+ void (*GetTexImage)( struct gl_context *ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
/**
@@ -815,25 +814,6 @@ struct dd_function_table {
/*@{*/
/**
- * Bitmask of state changes that require the current T&L module to be
- * validated, using ValidateTnlModule() below.
- */
- GLuint NeedValidate;
-
- /**
- * Validate the current T&L module.
- *
- * This is called directly after UpdateState() when a state change that has
- * occurred matches the dd_function_table::NeedValidate bitmask above. This
- * ensures all computed values are up to date, thus allowing the driver to
- * decide if the current T&L module needs to be swapped out.
- *
- * This must be non-NULL if a driver installs a custom T&L module and sets
- * the dd_function_table::NeedValidate bitmask, but may be NULL otherwise.
- */
- void (*ValidateTnlModule)( struct gl_context *ctx, GLuint new_state );
-
- /**
* Set by the driver-supplied T&L engine.
*
* Set to PRIM_OUTSIDE_BEGIN_END when outside glBegin()/glEnd().
diff --git a/mesalib/src/mesa/main/debug.c b/mesalib/src/mesa/main/debug.c
index 0a393e5fa..6e695d147 100644
--- a/mesalib/src/mesa/main/debug.c
+++ b/mesalib/src/mesa/main/debug.c
@@ -268,9 +268,7 @@ write_texture_image(struct gl_texture_object *texObj,
store = ctx->Pack; /* save */
ctx->Pack = ctx->DefaultPacking;
- ctx->Driver.GetTexImage(ctx, texObj->Target, level,
- GL_RGBA, GL_UNSIGNED_BYTE,
- buffer, texObj, img);
+ ctx->Driver.GetTexImage(ctx, GL_RGBA, GL_UNSIGNED_BYTE, buffer, img);
/* make filename */
_mesa_snprintf(s, sizeof(s), "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face);
diff --git a/mesalib/src/mesa/main/dlist.c b/mesalib/src/mesa/main/dlist.c
index f11dae9d0..343feec6f 100644
--- a/mesalib/src/mesa/main/dlist.c
+++ b/mesalib/src/mesa/main/dlist.c
@@ -560,7 +560,7 @@ make_list(GLuint name, GLuint count)
/**
* Lookup function to just encapsulate casting.
*/
-static INLINE struct gl_display_list *
+static inline struct gl_display_list *
lookup_list(struct gl_context *ctx, GLuint list)
{
return (struct gl_display_list *)
@@ -569,7 +569,7 @@ lookup_list(struct gl_context *ctx, GLuint list)
/** Is the given opcode an extension code? */
-static INLINE GLboolean
+static inline GLboolean
is_ext_opcode(OpCode opcode)
{
return (opcode >= OPCODE_EXT_0);
@@ -1043,7 +1043,7 @@ _mesa_dlist_alloc_opcode(struct gl_context *ctx,
* \param nparams number of function parameters
* \return pointer to start of instruction space
*/
-static INLINE Node *
+static inline Node *
alloc_instruction(struct gl_context *ctx, OpCode opcode, GLuint nparams)
{
return dlist_alloc(ctx, opcode, nparams * sizeof(Node));
@@ -5672,7 +5672,7 @@ save_EdgeFlag(GLboolean x)
save_Attr1fNV(VERT_ATTRIB_EDGEFLAG, x ? (GLfloat)1.0 : (GLfloat)0.0);
}
-static INLINE GLboolean compare4fv( const GLfloat *a,
+static inline GLboolean compare4fv( const GLfloat *a,
const GLfloat *b,
GLuint count )
{
diff --git a/mesalib/src/mesa/main/dlist.h b/mesalib/src/mesa/main/dlist.h
index b954e06df..89008431a 100644
--- a/mesalib/src/mesa/main/dlist.h
+++ b/mesalib/src/mesa/main/dlist.h
@@ -1,104 +1,104 @@
-/**
- * \file dlist.h
- * Display lists management.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.1
- *
- * Copyright (C) 1999-2006 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 DLIST_H
-#define DLIST_H
-
-
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-
-#if FEATURE_dlist
-
-#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \
- do { \
- (vfmt)->CallList = impl ## CallList; \
- (vfmt)->CallLists = impl ## CallLists; \
- } while (0)
-
-extern void GLAPIENTRY _mesa_CallList( GLuint list );
-
-extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists );
-
-
-extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s );
-
-extern void *_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz);
-
-extern GLint _mesa_dlist_alloc_opcode( struct gl_context *ctx, GLuint sz,
- void (*execute)( struct gl_context *, void * ),
- void (*destroy)( struct gl_context *, void * ),
- void (*print)( struct gl_context *, void * ) );
-
-extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist);
-
-extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt );
-
-extern struct _glapi_table *_mesa_create_save_table(void);
-
-extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt);
-
-extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_dlist */
-
-#include "main/compiler.h"
-
-#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0)
-
-static INLINE void
-_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist)
-{
- /* there should be no list to delete */
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt)
-{
-}
-
-static INLINE void
-_mesa_init_dlist_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_dlist */
-
-extern void _mesa_init_display_list( struct gl_context * ctx );
-
-extern void _mesa_free_display_list_data(struct gl_context *ctx);
-
-
-#endif /* DLIST_H */
+/**
+ * \file dlist.h
+ * Display lists management.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.1
+ *
+ * Copyright (C) 1999-2006 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 DLIST_H
+#define DLIST_H
+
+
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+
+#if FEATURE_dlist
+
+#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \
+ do { \
+ (vfmt)->CallList = impl ## CallList; \
+ (vfmt)->CallLists = impl ## CallLists; \
+ } while (0)
+
+extern void GLAPIENTRY _mesa_CallList( GLuint list );
+
+extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists );
+
+
+extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s );
+
+extern void *_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz);
+
+extern GLint _mesa_dlist_alloc_opcode( struct gl_context *ctx, GLuint sz,
+ void (*execute)( struct gl_context *, void * ),
+ void (*destroy)( struct gl_context *, void * ),
+ void (*print)( struct gl_context *, void * ) );
+
+extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist);
+
+extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt );
+
+extern struct _glapi_table *_mesa_create_save_table(void);
+
+extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt);
+
+extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_dlist */
+
+#include "main/compiler.h"
+
+#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0)
+
+static inline void
+_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist)
+{
+ /* there should be no list to delete */
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt)
+{
+}
+
+static inline void
+_mesa_init_dlist_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_dlist */
+
+extern void _mesa_init_display_list( struct gl_context * ctx );
+
+extern void _mesa_free_display_list_data(struct gl_context *ctx);
+
+
+#endif /* DLIST_H */
diff --git a/mesalib/src/mesa/main/drawpix.c b/mesalib/src/mesa/main/drawpix.c
index b7e2c36e1..412cc15af 100644
--- a/mesalib/src/mesa/main/drawpix.c
+++ b/mesalib/src/mesa/main/drawpix.c
@@ -80,6 +80,10 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
goto end; /* the error code was recorded */
}
+ if (ctx->TransformFeedback.RasterDiscard) {
+ goto end;
+ }
+
if (!ctx->Current.RasterPosValid) {
goto end; /* no-op, not an error */
}
@@ -188,6 +192,10 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
goto end;
}
+ if (ctx->TransformFeedback.RasterDiscard) {
+ goto end;
+ }
+
if (!ctx->Current.RasterPosValid || width == 0 || height == 0) {
goto end; /* no-op, not an error */
}
@@ -242,6 +250,9 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
return;
}
+ if (ctx->TransformFeedback.RasterDiscard)
+ return;
+
if (ctx->RenderMode == GL_RENDER) {
/* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */
if (width > 0 && height > 0) {
diff --git a/mesalib/src/mesa/main/drawpix.h b/mesalib/src/mesa/main/drawpix.h
index 88d3ecc95..13efba5f8 100644
--- a/mesalib/src/mesa/main/drawpix.h
+++ b/mesalib/src/mesa/main/drawpix.h
@@ -1,50 +1,50 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 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 DRAWPIX_H
-#define DRAWPIX_H
-
-
-#include "compiler.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-
-
-#if FEATURE_drawpix
-
-extern void
-_mesa_init_drawpix_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_drawpix */
-
-static INLINE void
-_mesa_init_drawpix_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_drawpix */
-
-
-#endif /* DRAWPIX_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 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 DRAWPIX_H
+#define DRAWPIX_H
+
+
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+
+
+#if FEATURE_drawpix
+
+extern void
+_mesa_init_drawpix_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_drawpix */
+
+static inline void
+_mesa_init_drawpix_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_drawpix */
+
+
+#endif /* DRAWPIX_H */
diff --git a/mesalib/src/mesa/main/enums.c b/mesalib/src/mesa/main/enums.c
index a8962a78a..fb5ed2922 100644
--- a/mesalib/src/mesa/main/enums.c
+++ b/mesalib/src/mesa/main/enums.c
@@ -495,51 +495,67 @@ LONGSTRING static const char enum_string_table[] =
"GL_DRAW_BUFFER0\0"
"GL_DRAW_BUFFER0_ARB\0"
"GL_DRAW_BUFFER0_ATI\0"
+ "GL_DRAW_BUFFER0_NV\0"
"GL_DRAW_BUFFER1\0"
"GL_DRAW_BUFFER10\0"
"GL_DRAW_BUFFER10_ARB\0"
"GL_DRAW_BUFFER10_ATI\0"
+ "GL_DRAW_BUFFER10_NV\0"
"GL_DRAW_BUFFER11\0"
"GL_DRAW_BUFFER11_ARB\0"
"GL_DRAW_BUFFER11_ATI\0"
+ "GL_DRAW_BUFFER11_NV\0"
"GL_DRAW_BUFFER12\0"
"GL_DRAW_BUFFER12_ARB\0"
"GL_DRAW_BUFFER12_ATI\0"
+ "GL_DRAW_BUFFER12_NV\0"
"GL_DRAW_BUFFER13\0"
"GL_DRAW_BUFFER13_ARB\0"
"GL_DRAW_BUFFER13_ATI\0"
+ "GL_DRAW_BUFFER13_NV\0"
"GL_DRAW_BUFFER14\0"
"GL_DRAW_BUFFER14_ARB\0"
"GL_DRAW_BUFFER14_ATI\0"
+ "GL_DRAW_BUFFER14_NV\0"
"GL_DRAW_BUFFER15\0"
"GL_DRAW_BUFFER15_ARB\0"
"GL_DRAW_BUFFER15_ATI\0"
+ "GL_DRAW_BUFFER15_NV\0"
"GL_DRAW_BUFFER1_ARB\0"
"GL_DRAW_BUFFER1_ATI\0"
+ "GL_DRAW_BUFFER1_NV\0"
"GL_DRAW_BUFFER2\0"
"GL_DRAW_BUFFER2_ARB\0"
"GL_DRAW_BUFFER2_ATI\0"
+ "GL_DRAW_BUFFER2_NV\0"
"GL_DRAW_BUFFER3\0"
"GL_DRAW_BUFFER3_ARB\0"
"GL_DRAW_BUFFER3_ATI\0"
+ "GL_DRAW_BUFFER3_NV\0"
"GL_DRAW_BUFFER4\0"
"GL_DRAW_BUFFER4_ARB\0"
"GL_DRAW_BUFFER4_ATI\0"
+ "GL_DRAW_BUFFER4_NV\0"
"GL_DRAW_BUFFER5\0"
"GL_DRAW_BUFFER5_ARB\0"
"GL_DRAW_BUFFER5_ATI\0"
+ "GL_DRAW_BUFFER5_NV\0"
"GL_DRAW_BUFFER6\0"
"GL_DRAW_BUFFER6_ARB\0"
"GL_DRAW_BUFFER6_ATI\0"
+ "GL_DRAW_BUFFER6_NV\0"
"GL_DRAW_BUFFER7\0"
"GL_DRAW_BUFFER7_ARB\0"
"GL_DRAW_BUFFER7_ATI\0"
+ "GL_DRAW_BUFFER7_NV\0"
"GL_DRAW_BUFFER8\0"
"GL_DRAW_BUFFER8_ARB\0"
"GL_DRAW_BUFFER8_ATI\0"
+ "GL_DRAW_BUFFER8_NV\0"
"GL_DRAW_BUFFER9\0"
"GL_DRAW_BUFFER9_ARB\0"
"GL_DRAW_BUFFER9_ATI\0"
+ "GL_DRAW_BUFFER9_NV\0"
"GL_DRAW_FRAMEBUFFER\0"
"GL_DRAW_FRAMEBUFFER_BINDING\0"
"GL_DRAW_FRAMEBUFFER_BINDING_EXT\0"
@@ -1082,6 +1098,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_DRAW_BUFFERS\0"
"GL_MAX_DRAW_BUFFERS_ARB\0"
"GL_MAX_DRAW_BUFFERS_ATI\0"
+ "GL_MAX_DRAW_BUFFERS_NV\0"
"GL_MAX_ELEMENTS_INDICES\0"
"GL_MAX_ELEMENTS_VERTICES\0"
"GL_MAX_EVAL_ORDER\0"
@@ -2357,7 +2374,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ZOOM_Y\0"
;
-static const enum_elt all_enums[2318] =
+static const enum_elt all_enums[2335] =
{
{ 0, 0x00000600 }, /* GL_2D */
{ 6, 0x00001407 }, /* GL_2_BYTES */
@@ -2817,1949 +2834,1966 @@ static const enum_elt all_enums[2318] =
{ 9383, 0x00008825 }, /* GL_DRAW_BUFFER0 */
{ 9399, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
{ 9419, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
- { 9439, 0x00008826 }, /* GL_DRAW_BUFFER1 */
- { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10 */
- { 9472, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
- { 9493, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
- { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11 */
- { 9531, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
- { 9552, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
- { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12 */
- { 9590, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
- { 9611, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
- { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13 */
- { 9649, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
- { 9670, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
- { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14 */
- { 9708, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
- { 9729, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
- { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15 */
- { 9767, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
- { 9788, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
- { 9809, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
- { 9829, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
- { 9849, 0x00008827 }, /* GL_DRAW_BUFFER2 */
- { 9865, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
- { 9885, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
- { 9905, 0x00008828 }, /* GL_DRAW_BUFFER3 */
- { 9921, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
- { 9941, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
- { 9961, 0x00008829 }, /* GL_DRAW_BUFFER4 */
- { 9977, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
- { 9997, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
- { 10017, 0x0000882A }, /* GL_DRAW_BUFFER5 */
- { 10033, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
- { 10053, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
- { 10073, 0x0000882B }, /* GL_DRAW_BUFFER6 */
- { 10089, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
- { 10109, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
- { 10129, 0x0000882C }, /* GL_DRAW_BUFFER7 */
- { 10145, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
- { 10165, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
- { 10185, 0x0000882D }, /* GL_DRAW_BUFFER8 */
- { 10201, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
- { 10221, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
- { 10241, 0x0000882E }, /* GL_DRAW_BUFFER9 */
- { 10257, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
- { 10277, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
- { 10297, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
- { 10317, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
- { 10345, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
- { 10377, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
- { 10401, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
- { 10421, 0x00000304 }, /* GL_DST_ALPHA */
- { 10434, 0x00000306 }, /* GL_DST_COLOR */
- { 10447, 0x0000877A }, /* GL_DU8DV8_ATI */
- { 10461, 0x00008779 }, /* GL_DUDV_ATI */
- { 10473, 0x000088EA }, /* GL_DYNAMIC_COPY */
- { 10489, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
- { 10509, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
- { 10525, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
- { 10545, 0x000088E9 }, /* GL_DYNAMIC_READ */
- { 10561, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
- { 10581, 0x00000B43 }, /* GL_EDGE_FLAG */
- { 10594, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
- { 10613, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- { 10647, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
- { 10685, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
- { 10712, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- { 10738, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
- { 10762, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- { 10794, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
- { 10830, 0x00001600 }, /* GL_EMISSION */
- { 10842, 0x00002000 }, /* GL_ENABLE_BIT */
- { 10856, 0x00000202 }, /* GL_EQUAL */
- { 10865, 0x00001509 }, /* GL_EQUIV */
- { 10874, 0x00010000 }, /* GL_EVAL_BIT */
- { 10886, 0x00000800 }, /* GL_EXP */
- { 10893, 0x00000801 }, /* GL_EXP2 */
- { 10901, 0x00001F03 }, /* GL_EXTENSIONS */
- { 10915, 0x00002400 }, /* GL_EYE_LINEAR */
- { 10929, 0x00002502 }, /* GL_EYE_PLANE */
- { 10942, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
- { 10967, 0x0000855B }, /* GL_EYE_RADIAL_NV */
- { 10984, 0x00000000 }, /* GL_FALSE */
- { 10993, 0x00001101 }, /* GL_FASTEST */
- { 11004, 0x00001C01 }, /* GL_FEEDBACK */
- { 11016, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
- { 11043, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
- { 11067, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
- { 11091, 0x00001B02 }, /* GL_FILL */
- { 11099, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
- { 11126, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
- { 11157, 0x0000140C }, /* GL_FIXED */
- { 11166, 0x0000140C }, /* GL_FIXED_OES */
- { 11179, 0x0000891D }, /* GL_FIXED_ONLY */
- { 11193, 0x0000891D }, /* GL_FIXED_ONLY_ARB */
- { 11211, 0x00001D00 }, /* GL_FLAT */
- { 11219, 0x00001406 }, /* GL_FLOAT */
- { 11228, 0x00008B5A }, /* GL_FLOAT_MAT2 */
- { 11242, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
- { 11260, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
- { 11276, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
- { 11292, 0x00008B5B }, /* GL_FLOAT_MAT3 */
- { 11306, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
- { 11324, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
- { 11340, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
- { 11356, 0x00008B5C }, /* GL_FLOAT_MAT4 */
- { 11370, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
- { 11388, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
- { 11404, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
- { 11420, 0x00008B50 }, /* GL_FLOAT_VEC2 */
- { 11434, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
- { 11452, 0x00008B51 }, /* GL_FLOAT_VEC3 */
- { 11466, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
- { 11484, 0x00008B52 }, /* GL_FLOAT_VEC4 */
- { 11498, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
- { 11516, 0x00000B60 }, /* GL_FOG */
- { 11523, 0x00000080 }, /* GL_FOG_BIT */
- { 11534, 0x00000B66 }, /* GL_FOG_COLOR */
- { 11547, 0x00008451 }, /* GL_FOG_COORD */
- { 11560, 0x00008451 }, /* GL_FOG_COORDINATE */
- { 11578, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
- { 11602, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- { 11641, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
- { 11684, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- { 11716, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- { 11747, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- { 11776, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
- { 11801, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
- { 11820, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
- { 11854, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
- { 11881, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
- { 11907, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
- { 11931, 0x00008450 }, /* GL_FOG_COORD_SRC */
- { 11948, 0x00000B62 }, /* GL_FOG_DENSITY */
- { 11963, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
- { 11987, 0x00000B64 }, /* GL_FOG_END */
- { 11998, 0x00000C54 }, /* GL_FOG_HINT */
- { 12010, 0x00000B61 }, /* GL_FOG_INDEX */
- { 12023, 0x00000B65 }, /* GL_FOG_MODE */
- { 12035, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
- { 12054, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
- { 12079, 0x00000B63 }, /* GL_FOG_START */
- { 12092, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
- { 12110, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
- { 12134, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
- { 12153, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
- { 12176, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- { 12211, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
- { 12250, 0x00008D40 }, /* GL_FRAMEBUFFER */
- { 12265, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- { 12302, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- { 12338, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- { 12379, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- { 12420, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- { 12457, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- { 12494, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
- { 12528, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
- { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- { 12604, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
- { 12646, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
- { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- { 12726, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
- { 12768, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
- { 12810, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- { 12845, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- { 12884, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
- { 12933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
- { 12982, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- { 13030, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
- { 13082, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
- { 13134, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- { 13174, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
- { 13218, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- { 13258, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
- { 13302, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
- { 13346, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
- { 13369, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
- { 13396, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
- { 13423, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
- { 13447, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
- { 13475, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
- { 13503, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
- { 13526, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
- { 13545, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- { 13582, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
- { 13623, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
- { 13664, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
- { 13701, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- { 13742, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
- { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- { 13821, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
- { 13863, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
- { 13905, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- { 13994, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
- { 14032, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- { 14074, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
- { 14114, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
- { 14158, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- { 14203, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
- { 14252, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
- { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- { 14339, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
- { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- { 14419, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
- { 14461, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
- { 14503, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
- { 14522, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- { 14554, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
- { 14579, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
- { 14606, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
- { 14637, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
- { 14668, 0x00000404 }, /* GL_FRONT */
- { 14677, 0x00000408 }, /* GL_FRONT_AND_BACK */
- { 14695, 0x00000B46 }, /* GL_FRONT_FACE */
- { 14709, 0x00000400 }, /* GL_FRONT_LEFT */
- { 14723, 0x00000401 }, /* GL_FRONT_RIGHT */
- { 14738, 0x00008006 }, /* GL_FUNC_ADD */
- { 14750, 0x00008006 }, /* GL_FUNC_ADD_EXT */
- { 14766, 0x00008006 }, /* GL_FUNC_ADD_OES */
- { 14782, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
- { 14807, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
- { 14836, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
- { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT */
- { 14882, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
- { 14903, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
- { 14924, 0x00008191 }, /* GL_GENERATE_MIPMAP */
- { 14943, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
- { 14967, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
- { 14996, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
- { 15020, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */
- { 15043, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- { 15070, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */
- { 15094, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- { 15122, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */
- { 15141, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
- { 15164, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */
- { 15189, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- { 15218, 0x00000206 }, /* GL_GEQUAL */
- { 15228, 0x00000204 }, /* GL_GREATER */
- { 15239, 0x00001904 }, /* GL_GREEN */
- { 15248, 0x00000D19 }, /* GL_GREEN_BIAS */
- { 15262, 0x00000D53 }, /* GL_GREEN_BITS */
- { 15276, 0x00008D95 }, /* GL_GREEN_INTEGER */
- { 15293, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */
- { 15314, 0x00000D18 }, /* GL_GREEN_SCALE */
- { 15329, 0x00008253 }, /* GL_GUILTY_CONTEXT_RESET_ARB */
- { 15357, 0x0000140B }, /* GL_HALF_FLOAT */
- { 15371, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
- { 15389, 0x00008DF2 }, /* GL_HIGH_FLOAT */
- { 15403, 0x00008DF5 }, /* GL_HIGH_INT */
- { 15415, 0x00008000 }, /* GL_HINT_BIT */
- { 15427, 0x00008024 }, /* GL_HISTOGRAM */
- { 15440, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
- { 15464, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
- { 15492, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
- { 15515, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
- { 15542, 0x00008024 }, /* GL_HISTOGRAM_EXT */
- { 15559, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
- { 15579, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
- { 15603, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
- { 15627, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
- { 15655, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- { 15683, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
- { 15715, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
- { 15737, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
- { 15763, 0x0000802D }, /* GL_HISTOGRAM_SINK */
- { 15781, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
- { 15803, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
- { 15822, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
- { 15845, 0x0000862A }, /* GL_IDENTITY_NV */
- { 15860, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
- { 15880, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- { 15916, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- { 15956, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
- { 15990, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- { 16028, 0x00001E02 }, /* GL_INCR */
- { 16036, 0x00008507 }, /* GL_INCR_WRAP */
- { 16049, 0x00008507 }, /* GL_INCR_WRAP_EXT */
- { 16066, 0x00008222 }, /* GL_INDEX */
- { 16075, 0x00008077 }, /* GL_INDEX_ARRAY */
- { 16090, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- { 16120, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
- { 16154, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
- { 16177, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
- { 16199, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
- { 16219, 0x00000D51 }, /* GL_INDEX_BITS */
- { 16233, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
- { 16254, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
- { 16272, 0x00000C30 }, /* GL_INDEX_MODE */
- { 16286, 0x00000D13 }, /* GL_INDEX_OFFSET */
- { 16302, 0x00000D12 }, /* GL_INDEX_SHIFT */
- { 16317, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
- { 16336, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
- { 16355, 0x00008254 }, /* GL_INNOCENT_CONTEXT_RESET_ARB */
- { 16385, 0x00001404 }, /* GL_INT */
- { 16392, 0x00008049 }, /* GL_INTENSITY */
- { 16405, 0x0000804C }, /* GL_INTENSITY12 */
- { 16420, 0x0000804C }, /* GL_INTENSITY12_EXT */
- { 16439, 0x0000804D }, /* GL_INTENSITY16 */
- { 16454, 0x00008D8B }, /* GL_INTENSITY16I_EXT */
- { 16474, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */
- { 16495, 0x0000804D }, /* GL_INTENSITY16_EXT */
- { 16514, 0x00008D85 }, /* GL_INTENSITY32I_EXT */
- { 16534, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */
- { 16555, 0x0000804A }, /* GL_INTENSITY4 */
- { 16569, 0x0000804A }, /* GL_INTENSITY4_EXT */
- { 16587, 0x0000804B }, /* GL_INTENSITY8 */
- { 16601, 0x00008D91 }, /* GL_INTENSITY8I_EXT */
- { 16620, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */
- { 16640, 0x0000804B }, /* GL_INTENSITY8_EXT */
- { 16658, 0x00008049 }, /* GL_INTENSITY_EXT */
- { 16675, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */
- { 16698, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
- { 16725, 0x00008575 }, /* GL_INTERPOLATE */
- { 16740, 0x00008575 }, /* GL_INTERPOLATE_ARB */
- { 16759, 0x00008575 }, /* GL_INTERPOLATE_EXT */
- { 16778, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
- { 16800, 0x00008D9F }, /* GL_INT_2_10_10_10_REV */
- { 16822, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */
- { 16840, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */
- { 16864, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */
- { 16892, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */
- { 16914, 0x00008DCA }, /* GL_INT_SAMPLER_2D */
- { 16932, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */
- { 16956, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */
- { 16984, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */
- { 17006, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */
- { 17029, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */
- { 17056, 0x00008DCB }, /* GL_INT_SAMPLER_3D */
- { 17074, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */
- { 17096, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */
- { 17118, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */
- { 17144, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */
- { 17164, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */
- { 17188, 0x00008B53 }, /* GL_INT_VEC2 */
- { 17200, 0x00008B53 }, /* GL_INT_VEC2_ARB */
- { 17216, 0x00008B54 }, /* GL_INT_VEC3 */
- { 17228, 0x00008B54 }, /* GL_INT_VEC3_ARB */
- { 17244, 0x00008B55 }, /* GL_INT_VEC4 */
- { 17256, 0x00008B55 }, /* GL_INT_VEC4_ARB */
- { 17272, 0x00000500 }, /* GL_INVALID_ENUM */
- { 17288, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
- { 17321, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
- { 17358, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
- { 17395, 0x00000502 }, /* GL_INVALID_OPERATION */
- { 17416, 0x00000501 }, /* GL_INVALID_VALUE */
- { 17433, 0x0000862B }, /* GL_INVERSE_NV */
- { 17447, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
- { 17471, 0x0000150A }, /* GL_INVERT */
- { 17481, 0x00001E00 }, /* GL_KEEP */
- { 17489, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
- { 17515, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
- { 17545, 0x00000406 }, /* GL_LEFT */
- { 17553, 0x00000203 }, /* GL_LEQUAL */
- { 17563, 0x00000201 }, /* GL_LESS */
- { 17571, 0x00004000 }, /* GL_LIGHT0 */
- { 17581, 0x00004001 }, /* GL_LIGHT1 */
- { 17591, 0x00004002 }, /* GL_LIGHT2 */
- { 17601, 0x00004003 }, /* GL_LIGHT3 */
- { 17611, 0x00004004 }, /* GL_LIGHT4 */
- { 17621, 0x00004005 }, /* GL_LIGHT5 */
- { 17631, 0x00004006 }, /* GL_LIGHT6 */
- { 17641, 0x00004007 }, /* GL_LIGHT7 */
- { 17651, 0x00000B50 }, /* GL_LIGHTING */
- { 17663, 0x00000040 }, /* GL_LIGHTING_BIT */
- { 17679, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
- { 17702, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- { 17731, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
- { 17764, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- { 17792, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
- { 17816, 0x00001B01 }, /* GL_LINE */
- { 17824, 0x00002601 }, /* GL_LINEAR */
- { 17834, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
- { 17856, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- { 17886, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- { 17917, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
- { 17941, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
- { 17966, 0x00000001 }, /* GL_LINES */
- { 17975, 0x0000000A }, /* GL_LINES_ADJACENCY */
- { 17994, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
- { 18017, 0x00000004 }, /* GL_LINE_BIT */
- { 18029, 0x00000002 }, /* GL_LINE_LOOP */
- { 18042, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
- { 18062, 0x00000B20 }, /* GL_LINE_SMOOTH */
- { 18077, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
- { 18097, 0x00000B24 }, /* GL_LINE_STIPPLE */
- { 18113, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
- { 18137, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
- { 18160, 0x00000003 }, /* GL_LINE_STRIP */
- { 18174, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */
- { 18198, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
- { 18226, 0x00000702 }, /* GL_LINE_TOKEN */
- { 18240, 0x00000B21 }, /* GL_LINE_WIDTH */
- { 18254, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
- { 18280, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
- { 18300, 0x00008B82 }, /* GL_LINK_STATUS */
- { 18315, 0x00000B32 }, /* GL_LIST_BASE */
- { 18328, 0x00020000 }, /* GL_LIST_BIT */
- { 18340, 0x00000B33 }, /* GL_LIST_INDEX */
- { 18354, 0x00000B30 }, /* GL_LIST_MODE */
- { 18367, 0x00000101 }, /* GL_LOAD */
- { 18375, 0x00000BF1 }, /* GL_LOGIC_OP */
- { 18387, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
- { 18404, 0x00008252 }, /* GL_LOSE_CONTEXT_ON_RESET_ARB */
- { 18433, 0x00008CA1 }, /* GL_LOWER_LEFT */
- { 18447, 0x00008DF0 }, /* GL_LOW_FLOAT */
- { 18460, 0x00008DF3 }, /* GL_LOW_INT */
- { 18471, 0x00001909 }, /* GL_LUMINANCE */
- { 18484, 0x00008041 }, /* GL_LUMINANCE12 */
- { 18499, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
- { 18522, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
- { 18549, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
- { 18571, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
- { 18597, 0x00008041 }, /* GL_LUMINANCE12_EXT */
- { 18616, 0x00008042 }, /* GL_LUMINANCE16 */
- { 18631, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */
- { 18651, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */
- { 18672, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
- { 18695, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
- { 18722, 0x00008042 }, /* GL_LUMINANCE16_EXT */
- { 18741, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */
- { 18761, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */
- { 18782, 0x0000803F }, /* GL_LUMINANCE4 */
- { 18796, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
- { 18817, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
- { 18842, 0x0000803F }, /* GL_LUMINANCE4_EXT */
- { 18860, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
- { 18881, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
- { 18906, 0x00008040 }, /* GL_LUMINANCE8 */
- { 18920, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */
- { 18939, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */
- { 18959, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
- { 18980, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
- { 19005, 0x00008040 }, /* GL_LUMINANCE8_EXT */
- { 19023, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
- { 19042, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */
- { 19068, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */
- { 19095, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */
- { 19121, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */
- { 19148, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */
- { 19173, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */
- { 19199, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
- { 19230, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */
- { 19255, 0x0000821B }, /* GL_MAJOR_VERSION */
- { 19272, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
- { 19288, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
- { 19308, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
- { 19330, 0x00000D91 }, /* GL_MAP1_INDEX */
- { 19344, 0x00000D92 }, /* GL_MAP1_NORMAL */
- { 19359, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
- { 19383, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
- { 19407, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
- { 19431, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
- { 19455, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
- { 19472, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
- { 19489, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- { 19517, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- { 19546, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- { 19575, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- { 19604, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- { 19633, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- { 19662, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- { 19691, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- { 19719, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- { 19747, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- { 19775, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- { 19803, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- { 19831, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- { 19859, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- { 19887, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- { 19915, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- { 19943, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
- { 19959, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
- { 19979, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
- { 20001, 0x00000DB1 }, /* GL_MAP2_INDEX */
- { 20015, 0x00000DB2 }, /* GL_MAP2_NORMAL */
- { 20030, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
- { 20054, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
- { 20078, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
- { 20102, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
- { 20126, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
- { 20143, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
- { 20160, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- { 20188, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- { 20217, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- { 20246, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- { 20275, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- { 20304, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- { 20333, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- { 20362, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- { 20390, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- { 20418, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- { 20446, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- { 20474, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- { 20502, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- { 20530, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
- { 20558, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- { 20586, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- { 20614, 0x00000D10 }, /* GL_MAP_COLOR */
- { 20627, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
- { 20653, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
- { 20682, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
- { 20710, 0x00000001 }, /* GL_MAP_READ_BIT */
- { 20726, 0x00000D11 }, /* GL_MAP_STENCIL */
- { 20741, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
- { 20767, 0x00000002 }, /* GL_MAP_WRITE_BIT */
- { 20784, 0x000088C0 }, /* GL_MATRIX0_ARB */
- { 20799, 0x00008630 }, /* GL_MATRIX0_NV */
- { 20813, 0x000088CA }, /* GL_MATRIX10_ARB */
- { 20829, 0x000088CB }, /* GL_MATRIX11_ARB */
- { 20845, 0x000088CC }, /* GL_MATRIX12_ARB */
- { 20861, 0x000088CD }, /* GL_MATRIX13_ARB */
- { 20877, 0x000088CE }, /* GL_MATRIX14_ARB */
- { 20893, 0x000088CF }, /* GL_MATRIX15_ARB */
- { 20909, 0x000088D0 }, /* GL_MATRIX16_ARB */
- { 20925, 0x000088D1 }, /* GL_MATRIX17_ARB */
- { 20941, 0x000088D2 }, /* GL_MATRIX18_ARB */
- { 20957, 0x000088D3 }, /* GL_MATRIX19_ARB */
- { 20973, 0x000088C1 }, /* GL_MATRIX1_ARB */
- { 20988, 0x00008631 }, /* GL_MATRIX1_NV */
- { 21002, 0x000088D4 }, /* GL_MATRIX20_ARB */
- { 21018, 0x000088D5 }, /* GL_MATRIX21_ARB */
- { 21034, 0x000088D6 }, /* GL_MATRIX22_ARB */
- { 21050, 0x000088D7 }, /* GL_MATRIX23_ARB */
- { 21066, 0x000088D8 }, /* GL_MATRIX24_ARB */
- { 21082, 0x000088D9 }, /* GL_MATRIX25_ARB */
- { 21098, 0x000088DA }, /* GL_MATRIX26_ARB */
- { 21114, 0x000088DB }, /* GL_MATRIX27_ARB */
- { 21130, 0x000088DC }, /* GL_MATRIX28_ARB */
- { 21146, 0x000088DD }, /* GL_MATRIX29_ARB */
- { 21162, 0x000088C2 }, /* GL_MATRIX2_ARB */
- { 21177, 0x00008632 }, /* GL_MATRIX2_NV */
- { 21191, 0x000088DE }, /* GL_MATRIX30_ARB */
- { 21207, 0x000088DF }, /* GL_MATRIX31_ARB */
- { 21223, 0x000088C3 }, /* GL_MATRIX3_ARB */
- { 21238, 0x00008633 }, /* GL_MATRIX3_NV */
- { 21252, 0x000088C4 }, /* GL_MATRIX4_ARB */
- { 21267, 0x00008634 }, /* GL_MATRIX4_NV */
- { 21281, 0x000088C5 }, /* GL_MATRIX5_ARB */
- { 21296, 0x00008635 }, /* GL_MATRIX5_NV */
- { 21310, 0x000088C6 }, /* GL_MATRIX6_ARB */
- { 21325, 0x00008636 }, /* GL_MATRIX6_NV */
- { 21339, 0x000088C7 }, /* GL_MATRIX7_ARB */
- { 21354, 0x00008637 }, /* GL_MATRIX7_NV */
- { 21368, 0x000088C8 }, /* GL_MATRIX8_ARB */
- { 21383, 0x000088C9 }, /* GL_MATRIX9_ARB */
- { 21398, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
- { 21424, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- { 21465, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
- { 21491, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- { 21525, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
- { 21559, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- { 21590, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
- { 21621, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- { 21654, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
- { 21687, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- { 21718, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
- { 21749, 0x00000BA0 }, /* GL_MATRIX_MODE */
- { 21764, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
- { 21786, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
- { 21808, 0x00008008 }, /* GL_MAX */
- { 21815, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
- { 21838, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
- { 21865, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
- { 21893, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- { 21925, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
- { 21951, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- { 21984, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- { 22010, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 22044, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */
- { 22066, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
- { 22085, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
- { 22110, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
- { 22139, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- { 22171, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 22207, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- { 22243, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
- { 22283, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
- { 22309, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
- { 22339, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
- { 22364, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
- { 22393, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- { 22422, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
- { 22455, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
- { 22488, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
- { 22508, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
- { 22532, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
- { 22556, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
- { 22580, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
- { 22605, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
- { 22623, 0x00008008 }, /* GL_MAX_EXT */
- { 22634, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
- { 22667, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- { 22702, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
- { 22741, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- { 22773, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
- { 22806, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
- { 22840, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
- { 22872, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
- { 22908, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
- { 22944, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
- { 22984, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
- { 23024, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
- { 23068, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
- { 23103, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
- { 23142, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- { 23181, 0x00000D31 }, /* GL_MAX_LIGHTS */
- { 23195, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
- { 23215, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- { 23253, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- { 23282, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
- { 23306, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
- { 23334, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
- { 23362, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
- { 23385, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 23422, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 23458, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- { 23485, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- { 23514, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- { 23548, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
- { 23584, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- { 23611, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- { 23643, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- { 23679, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- { 23708, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- { 23737, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
- { 23765, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- { 23803, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 23847, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 23890, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 23924, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 23963, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 24000, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 24038, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 24081, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 24124, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- { 24154, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- { 24185, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
- { 24213, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */
- { 24245, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 24281, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 24317, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
- { 24347, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
- { 24377, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- { 24411, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
- { 24444, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
- { 24469, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
- { 24498, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
- { 24527, 0x00008D57 }, /* GL_MAX_SAMPLES */
- { 24542, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
- { 24561, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- { 24588, 0x00008504 }, /* GL_MAX_SHININESS_NV */
- { 24608, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
- { 24632, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */
- { 24659, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */
- { 24690, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
- { 24712, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
- { 24738, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- { 24765, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
- { 24796, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
- { 24820, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
- { 24848, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- { 24882, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
- { 24902, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
- { 24929, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
- { 24950, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
- { 24975, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
- { 25000, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
- { 25035, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
- { 25084, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- { 25137, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
- { 25180, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- { 25227, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
- { 25273, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- { 25323, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
- { 25349, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
- { 25371, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
- { 25397, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
- { 25420, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
- { 25442, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
- { 25468, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
- { 25500, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- { 25534, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
- { 25572, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- { 25605, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
- { 25642, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- { 25672, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
- { 25696, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
- { 25720, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- { 25757, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
- { 25778, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
- { 25794, 0x00008DF4 }, /* GL_MEDIUM_INT */
- { 25808, 0x00008007 }, /* GL_MIN */
- { 25815, 0x0000802E }, /* GL_MINMAX */
- { 25825, 0x0000802E }, /* GL_MINMAX_EXT */
- { 25839, 0x0000802F }, /* GL_MINMAX_FORMAT */
- { 25856, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
- { 25877, 0x00008030 }, /* GL_MINMAX_SINK */
- { 25892, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
- { 25911, 0x0000821C }, /* GL_MINOR_VERSION */
- { 25928, 0x00008007 }, /* GL_MIN_EXT */
- { 25939, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
- { 25967, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */
- { 25999, 0x00008370 }, /* GL_MIRRORED_REPEAT */
- { 26018, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
- { 26041, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
- { 26064, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
- { 26084, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
- { 26104, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- { 26134, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
- { 26162, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- { 26190, 0x00001700 }, /* GL_MODELVIEW */
- { 26203, 0x00001700 }, /* GL_MODELVIEW0_ARB */
- { 26221, 0x0000872A }, /* GL_MODELVIEW10_ARB */
- { 26240, 0x0000872B }, /* GL_MODELVIEW11_ARB */
- { 26259, 0x0000872C }, /* GL_MODELVIEW12_ARB */
- { 26278, 0x0000872D }, /* GL_MODELVIEW13_ARB */
- { 26297, 0x0000872E }, /* GL_MODELVIEW14_ARB */
- { 26316, 0x0000872F }, /* GL_MODELVIEW15_ARB */
- { 26335, 0x00008730 }, /* GL_MODELVIEW16_ARB */
- { 26354, 0x00008731 }, /* GL_MODELVIEW17_ARB */
- { 26373, 0x00008732 }, /* GL_MODELVIEW18_ARB */
- { 26392, 0x00008733 }, /* GL_MODELVIEW19_ARB */
- { 26411, 0x0000850A }, /* GL_MODELVIEW1_ARB */
- { 26429, 0x00008734 }, /* GL_MODELVIEW20_ARB */
- { 26448, 0x00008735 }, /* GL_MODELVIEW21_ARB */
- { 26467, 0x00008736 }, /* GL_MODELVIEW22_ARB */
- { 26486, 0x00008737 }, /* GL_MODELVIEW23_ARB */
- { 26505, 0x00008738 }, /* GL_MODELVIEW24_ARB */
- { 26524, 0x00008739 }, /* GL_MODELVIEW25_ARB */
- { 26543, 0x0000873A }, /* GL_MODELVIEW26_ARB */
- { 26562, 0x0000873B }, /* GL_MODELVIEW27_ARB */
- { 26581, 0x0000873C }, /* GL_MODELVIEW28_ARB */
- { 26600, 0x0000873D }, /* GL_MODELVIEW29_ARB */
- { 26619, 0x00008722 }, /* GL_MODELVIEW2_ARB */
- { 26637, 0x0000873E }, /* GL_MODELVIEW30_ARB */
- { 26656, 0x0000873F }, /* GL_MODELVIEW31_ARB */
- { 26675, 0x00008723 }, /* GL_MODELVIEW3_ARB */
- { 26693, 0x00008724 }, /* GL_MODELVIEW4_ARB */
- { 26711, 0x00008725 }, /* GL_MODELVIEW5_ARB */
- { 26729, 0x00008726 }, /* GL_MODELVIEW6_ARB */
- { 26747, 0x00008727 }, /* GL_MODELVIEW7_ARB */
- { 26765, 0x00008728 }, /* GL_MODELVIEW8_ARB */
- { 26783, 0x00008729 }, /* GL_MODELVIEW9_ARB */
- { 26801, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
- { 26821, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 26863, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
- { 26890, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
- { 26915, 0x00002100 }, /* GL_MODULATE */
- { 26927, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
- { 26947, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
- { 26974, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
- { 26999, 0x00000103 }, /* GL_MULT */
- { 27007, 0x0000809D }, /* GL_MULTISAMPLE */
- { 27022, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
- { 27042, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
- { 27061, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
- { 27080, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
- { 27104, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
- { 27127, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- { 27157, 0x00002A25 }, /* GL_N3F_V3F */
- { 27168, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
- { 27188, 0x0000150E }, /* GL_NAND */
- { 27196, 0x00002600 }, /* GL_NEAREST */
- { 27207, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- { 27238, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- { 27270, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
- { 27295, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
- { 27321, 0x00000200 }, /* GL_NEVER */
- { 27330, 0x00001102 }, /* GL_NICEST */
- { 27340, 0x00000000 }, /* GL_NONE */
- { 27348, 0x00000000 }, /* GL_NONE_OES */
- { 27360, 0x00001505 }, /* GL_NOOP */
- { 27368, 0x00001508 }, /* GL_NOR */
- { 27375, 0x00000BA1 }, /* GL_NORMALIZE */
- { 27388, 0x00008075 }, /* GL_NORMAL_ARRAY */
- { 27404, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- { 27435, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
- { 27470, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
- { 27494, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
- { 27517, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
- { 27538, 0x00008511 }, /* GL_NORMAL_MAP */
- { 27552, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
- { 27570, 0x00008511 }, /* GL_NORMAL_MAP_NV */
- { 27587, 0x00008511 }, /* GL_NORMAL_MAP_OES */
- { 27605, 0x00000205 }, /* GL_NOTEQUAL */
- { 27617, 0x00000000 }, /* GL_NO_ERROR */
- { 27629, 0x00008261 }, /* GL_NO_RESET_NOTIFICATION_ARB */
- { 27658, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- { 27692, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
- { 27730, 0x0000821D }, /* GL_NUM_EXTENSIONS */
- { 27748, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS */
- { 27778, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- { 27812, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
- { 27841, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
- { 27873, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
- { 27915, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
- { 27945, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
- { 27985, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
- { 28016, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
- { 28045, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
- { 28073, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
- { 28103, 0x00002401 }, /* GL_OBJECT_LINEAR */
- { 28120, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
- { 28146, 0x00002501 }, /* GL_OBJECT_PLANE */
- { 28162, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
- { 28197, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
- { 28219, 0x00009112 }, /* GL_OBJECT_TYPE */
- { 28234, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
- { 28253, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
- { 28283, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
- { 28304, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
- { 28332, 0x00000001 }, /* GL_ONE */
- { 28339, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- { 28367, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
- { 28399, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
- { 28427, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
- { 28459, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
- { 28482, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
- { 28505, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
- { 28528, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
- { 28551, 0x00008598 }, /* GL_OPERAND0_ALPHA */
- { 28569, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
- { 28591, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
- { 28613, 0x00008590 }, /* GL_OPERAND0_RGB */
- { 28629, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
- { 28649, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
- { 28669, 0x00008599 }, /* GL_OPERAND1_ALPHA */
- { 28687, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
- { 28709, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
- { 28731, 0x00008591 }, /* GL_OPERAND1_RGB */
- { 28747, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
- { 28767, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
- { 28787, 0x0000859A }, /* GL_OPERAND2_ALPHA */
- { 28805, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
- { 28827, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
- { 28849, 0x00008592 }, /* GL_OPERAND2_RGB */
- { 28865, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
- { 28885, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
- { 28905, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
- { 28926, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
- { 28945, 0x00001507 }, /* GL_OR */
- { 28951, 0x00000A01 }, /* GL_ORDER */
- { 28960, 0x0000150D }, /* GL_OR_INVERTED */
- { 28975, 0x0000150B }, /* GL_OR_REVERSE */
- { 28989, 0x00000505 }, /* GL_OUT_OF_MEMORY */
- { 29006, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
- { 29024, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
- { 29045, 0x00008758 }, /* GL_PACK_INVERT_MESA */
- { 29065, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
- { 29083, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
- { 29102, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
- { 29122, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
- { 29142, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
- { 29160, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
- { 29179, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
- { 29204, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
- { 29228, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
- { 29249, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
- { 29271, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
- { 29293, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
- { 29318, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
- { 29342, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
- { 29363, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
- { 29385, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
- { 29407, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
- { 29429, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
- { 29460, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
- { 29480, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- { 29505, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
- { 29525, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- { 29550, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
- { 29570, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- { 29595, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
- { 29615, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- { 29640, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
- { 29660, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- { 29685, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
- { 29705, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- { 29730, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
- { 29750, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- { 29775, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
- { 29795, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- { 29820, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
- { 29840, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- { 29865, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
- { 29885, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- { 29910, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
- { 29928, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
- { 29949, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
- { 29978, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
- { 30011, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
- { 30036, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
- { 30059, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- { 30090, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
- { 30125, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
- { 30152, 0x00001B00 }, /* GL_POINT */
- { 30161, 0x00000000 }, /* GL_POINTS */
- { 30171, 0x00000002 }, /* GL_POINT_BIT */
- { 30184, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
- { 30214, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
- { 30248, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
- { 30282, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
- { 30317, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
- { 30346, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
- { 30379, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
- { 30412, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
- { 30446, 0x00000B11 }, /* GL_POINT_SIZE */
- { 30460, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- { 30499, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
- { 30523, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- { 30555, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- { 30586, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- { 30615, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
- { 30641, 0x00008127 }, /* GL_POINT_SIZE_MAX */
- { 30659, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
- { 30681, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
- { 30703, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
- { 30726, 0x00008126 }, /* GL_POINT_SIZE_MIN */
- { 30744, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
- { 30766, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
- { 30788, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
- { 30811, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
- { 30831, 0x00000B10 }, /* GL_POINT_SMOOTH */
- { 30847, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
- { 30868, 0x00008861 }, /* GL_POINT_SPRITE */
- { 30884, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
- { 30904, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
- { 30933, 0x00008861 }, /* GL_POINT_SPRITE_NV */
- { 30952, 0x00008861 }, /* GL_POINT_SPRITE_OES */
- { 30972, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
- { 30998, 0x00000701 }, /* GL_POINT_TOKEN */
- { 31013, 0x00000009 }, /* GL_POLYGON */
- { 31024, 0x00000008 }, /* GL_POLYGON_BIT */
- { 31039, 0x00000B40 }, /* GL_POLYGON_MODE */
- { 31055, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
- { 31078, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
- { 31103, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
- { 31126, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
- { 31149, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
- { 31173, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
- { 31197, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
- { 31215, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
- { 31238, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
- { 31257, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
- { 31280, 0x00000703 }, /* GL_POLYGON_TOKEN */
- { 31297, 0x00001203 }, /* GL_POSITION */
- { 31309, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- { 31341, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
- { 31377, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- { 31410, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
- { 31447, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- { 31478, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
- { 31513, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- { 31545, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
- { 31581, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- { 31614, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- { 31646, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
- { 31682, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- { 31715, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
- { 31752, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- { 31782, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
- { 31816, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- { 31847, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
- { 31882, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- { 31913, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
- { 31948, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- { 31980, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
- { 32016, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- { 32046, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
- { 32080, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- { 32111, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
- { 32146, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- { 32178, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- { 32209, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
- { 32244, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- { 32276, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
- { 32312, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
- { 32341, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
- { 32374, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
- { 32404, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
- { 32438, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- { 32477, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- { 32510, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- { 32550, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- { 32584, 0x00008578 }, /* GL_PREVIOUS */
- { 32596, 0x00008578 }, /* GL_PREVIOUS_ARB */
- { 32612, 0x00008578 }, /* GL_PREVIOUS_EXT */
- { 32628, 0x00008577 }, /* GL_PRIMARY_COLOR */
- { 32645, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
- { 32666, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
- { 32687, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
- { 32711, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
- { 32739, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
- { 32760, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
- { 32787, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- { 32817, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
- { 32841, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 32874, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 32906, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
- { 32929, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS */
- { 32955, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
- { 32985, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH */
- { 33010, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
- { 33039, 0x00008257 }, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
- { 33074, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
- { 33097, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
- { 33127, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
- { 33156, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
- { 33184, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
- { 33206, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- { 33234, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- { 33262, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
- { 33284, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
- { 33305, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 33345, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 33384, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 33414, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 33449, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 33482, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 33516, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 33555, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 33594, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
- { 33616, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
- { 33642, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
- { 33666, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
- { 33688, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
- { 33714, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
- { 33737, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
- { 33759, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
- { 33780, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
- { 33801, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
- { 33828, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 33860, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 33892, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- { 33927, 0x00001701 }, /* GL_PROJECTION */
- { 33941, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
- { 33962, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 34005, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
- { 34031, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
- { 34051, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
- { 34075, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
- { 34096, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
- { 34115, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
- { 34138, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- { 34177, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- { 34215, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
- { 34235, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
- { 34261, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- { 34291, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
- { 34315, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
- { 34335, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
- { 34361, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- { 34391, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
- { 34415, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
- { 34435, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- { 34468, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
- { 34494, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
- { 34524, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
- { 34551, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- { 34582, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
- { 34612, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
- { 34631, 0x00002003 }, /* GL_Q */
- { 34636, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
- { 34661, 0x00000007 }, /* GL_QUADS */
- { 34670, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- { 34714, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
- { 34762, 0x00008614 }, /* GL_QUAD_MESH_SUN */
- { 34779, 0x00000008 }, /* GL_QUAD_STRIP */
- { 34793, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
- { 34820, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- { 34850, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
- { 34874, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
- { 34901, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
- { 34923, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
- { 34949, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
- { 34966, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
- { 34986, 0x00008866 }, /* GL_QUERY_RESULT */
- { 35002, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
- { 35022, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
- { 35048, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
- { 35078, 0x00008E13 }, /* GL_QUERY_WAIT */
- { 35092, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
- { 35109, 0x00002002 }, /* GL_R */
- { 35114, 0x00008C3A }, /* GL_R11F_G11F_B10F */
- { 35132, 0x00008F98 }, /* GL_R16_SNORM */
- { 35145, 0x00002A10 }, /* GL_R3_G3_B2 */
- { 35157, 0x00008F94 }, /* GL_R8_SNORM */
- { 35169, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
- { 35191, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
- { 35217, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- { 35250, 0x00000C02 }, /* GL_READ_BUFFER */
- { 35265, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
- { 35285, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
- { 35313, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
- { 35345, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
- { 35369, 0x000088B8 }, /* GL_READ_ONLY */
- { 35382, 0x000088B8 }, /* GL_READ_ONLY_ARB */
- { 35399, 0x000088BA }, /* GL_READ_WRITE */
- { 35413, 0x000088BA }, /* GL_READ_WRITE_ARB */
- { 35431, 0x00001903 }, /* GL_RED */
- { 35438, 0x00008016 }, /* GL_REDUCE */
- { 35448, 0x00008016 }, /* GL_REDUCE_EXT */
- { 35462, 0x00000D15 }, /* GL_RED_BIAS */
- { 35474, 0x00000D52 }, /* GL_RED_BITS */
- { 35486, 0x00008D94 }, /* GL_RED_INTEGER */
- { 35501, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
- { 35520, 0x00000D14 }, /* GL_RED_SCALE */
- { 35533, 0x00008F90 }, /* GL_RED_SNORM */
- { 35546, 0x00008512 }, /* GL_REFLECTION_MAP */
- { 35564, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
- { 35586, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
- { 35607, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
- { 35629, 0x00008A19 }, /* GL_RELEASED_APPLE */
- { 35647, 0x00001C00 }, /* GL_RENDER */
- { 35657, 0x00008D41 }, /* GL_RENDERBUFFER */
- { 35673, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
- { 35700, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
- { 35731, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
- { 35755, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
- { 35783, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
- { 35811, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
- { 35837, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
- { 35867, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
- { 35894, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
- { 35925, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
- { 35945, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
- { 35972, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
- { 36003, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
- { 36026, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
- { 36053, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
- { 36080, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- { 36112, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
- { 36148, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
- { 36184, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
- { 36204, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
- { 36229, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
- { 36258, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
- { 36282, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
- { 36310, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
- { 36339, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
- { 36372, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
- { 36394, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
- { 36420, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
- { 36446, 0x00001F01 }, /* GL_RENDERER */
- { 36458, 0x00000C40 }, /* GL_RENDER_MODE */
- { 36473, 0x00002901 }, /* GL_REPEAT */
- { 36483, 0x00001E01 }, /* GL_REPLACE */
- { 36494, 0x00008062 }, /* GL_REPLACE_EXT */
- { 36509, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
- { 36532, 0x0000803A }, /* GL_RESCALE_NORMAL */
- { 36550, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
- { 36572, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
- { 36607, 0x00008A1B }, /* GL_RETAINED_APPLE */
- { 36625, 0x00000102 }, /* GL_RETURN */
- { 36635, 0x00008F99 }, /* GL_RG16_SNORM */
- { 36649, 0x00008F95 }, /* GL_RG8_SNORM */
- { 36662, 0x00001907 }, /* GL_RGB */
- { 36669, 0x00008052 }, /* GL_RGB10 */
- { 36678, 0x00008059 }, /* GL_RGB10_A2 */
- { 36690, 0x00008059 }, /* GL_RGB10_A2_EXT */
- { 36706, 0x00008052 }, /* GL_RGB10_EXT */
- { 36719, 0x00008053 }, /* GL_RGB12 */
- { 36728, 0x00008053 }, /* GL_RGB12_EXT */
- { 36741, 0x00008054 }, /* GL_RGB16 */
- { 36750, 0x0000881B }, /* GL_RGB16F */
- { 36760, 0x00008D89 }, /* GL_RGB16I */
- { 36770, 0x00008D89 }, /* GL_RGB16I_EXT */
- { 36784, 0x00008D77 }, /* GL_RGB16UI */
- { 36795, 0x00008D77 }, /* GL_RGB16UI_EXT */
- { 36810, 0x00008054 }, /* GL_RGB16_EXT */
- { 36823, 0x00008F9A }, /* GL_RGB16_SNORM */
- { 36838, 0x0000804E }, /* GL_RGB2_EXT */
- { 36850, 0x00008815 }, /* GL_RGB32F */
- { 36860, 0x00008D83 }, /* GL_RGB32I */
- { 36870, 0x00008D83 }, /* GL_RGB32I_EXT */
- { 36884, 0x00008D71 }, /* GL_RGB32UI */
- { 36895, 0x00008D71 }, /* GL_RGB32UI_EXT */
- { 36910, 0x0000804F }, /* GL_RGB4 */
- { 36918, 0x0000804F }, /* GL_RGB4_EXT */
- { 36930, 0x000083A1 }, /* GL_RGB4_S3TC */
- { 36943, 0x00008050 }, /* GL_RGB5 */
- { 36951, 0x00008D62 }, /* GL_RGB565 */
- { 36961, 0x00008D62 }, /* GL_RGB565_OES */
- { 36975, 0x00008057 }, /* GL_RGB5_A1 */
- { 36986, 0x00008057 }, /* GL_RGB5_A1_EXT */
- { 37001, 0x00008057 }, /* GL_RGB5_A1_OES */
- { 37016, 0x00008050 }, /* GL_RGB5_EXT */
- { 37028, 0x00008051 }, /* GL_RGB8 */
- { 37036, 0x00008D8F }, /* GL_RGB8I */
- { 37045, 0x00008D8F }, /* GL_RGB8I_EXT */
- { 37058, 0x00008D7D }, /* GL_RGB8UI */
- { 37068, 0x00008D7D }, /* GL_RGB8UI_EXT */
- { 37082, 0x00008051 }, /* GL_RGB8_EXT */
- { 37094, 0x00008051 }, /* GL_RGB8_OES */
- { 37106, 0x00008F96 }, /* GL_RGB8_SNORM */
- { 37120, 0x00008C3D }, /* GL_RGB9_E5 */
- { 37131, 0x00001908 }, /* GL_RGBA */
- { 37139, 0x0000805A }, /* GL_RGBA12 */
- { 37149, 0x0000805A }, /* GL_RGBA12_EXT */
- { 37163, 0x0000805B }, /* GL_RGBA16 */
- { 37173, 0x0000881A }, /* GL_RGBA16F */
- { 37184, 0x00008D88 }, /* GL_RGBA16I */
- { 37195, 0x00008D88 }, /* GL_RGBA16I_EXT */
- { 37210, 0x00008D76 }, /* GL_RGBA16UI */
- { 37222, 0x00008D76 }, /* GL_RGBA16UI_EXT */
- { 37238, 0x0000805B }, /* GL_RGBA16_EXT */
- { 37252, 0x00008F9B }, /* GL_RGBA16_SNORM */
- { 37268, 0x00008055 }, /* GL_RGBA2 */
- { 37277, 0x00008055 }, /* GL_RGBA2_EXT */
- { 37290, 0x00008814 }, /* GL_RGBA32F */
- { 37301, 0x00008D82 }, /* GL_RGBA32I */
- { 37312, 0x00008D82 }, /* GL_RGBA32I_EXT */
- { 37327, 0x00008D70 }, /* GL_RGBA32UI */
- { 37339, 0x00008D70 }, /* GL_RGBA32UI_EXT */
- { 37355, 0x00008056 }, /* GL_RGBA4 */
- { 37364, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
- { 37383, 0x00008056 }, /* GL_RGBA4_EXT */
- { 37396, 0x00008056 }, /* GL_RGBA4_OES */
- { 37409, 0x000083A3 }, /* GL_RGBA4_S3TC */
- { 37423, 0x00008058 }, /* GL_RGBA8 */
- { 37432, 0x00008D8E }, /* GL_RGBA8I */
- { 37442, 0x00008D8E }, /* GL_RGBA8I_EXT */
- { 37456, 0x00008D7C }, /* GL_RGBA8UI */
- { 37467, 0x00008D7C }, /* GL_RGBA8UI_EXT */
- { 37482, 0x00008058 }, /* GL_RGBA8_EXT */
- { 37495, 0x00008058 }, /* GL_RGBA8_OES */
- { 37508, 0x00008F97 }, /* GL_RGBA8_SNORM */
- { 37523, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
- { 37541, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */
- { 37564, 0x00008D99 }, /* GL_RGBA_INTEGER */
- { 37580, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
- { 37600, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
- { 37625, 0x00000C31 }, /* GL_RGBA_MODE */
- { 37638, 0x000083A2 }, /* GL_RGBA_S3TC */
- { 37651, 0x00008F93 }, /* GL_RGBA_SNORM */
- { 37665, 0x00008D98 }, /* GL_RGB_INTEGER */
- { 37680, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
- { 37699, 0x000083A0 }, /* GL_RGB_S3TC */
- { 37711, 0x00008573 }, /* GL_RGB_SCALE */
- { 37724, 0x00008573 }, /* GL_RGB_SCALE_ARB */
- { 37741, 0x00008573 }, /* GL_RGB_SCALE_EXT */
- { 37758, 0x00008F92 }, /* GL_RGB_SNORM */
- { 37771, 0x00008F91 }, /* GL_RG_SNORM */
- { 37783, 0x00000407 }, /* GL_RIGHT */
- { 37792, 0x00002000 }, /* GL_S */
- { 37797, 0x00008B5D }, /* GL_SAMPLER_1D */
- { 37811, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
- { 37831, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
- { 37855, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- { 37882, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
- { 37913, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
- { 37934, 0x00008B5E }, /* GL_SAMPLER_2D */
- { 37948, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
- { 37968, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
- { 37992, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- { 38019, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
- { 38050, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
- { 38069, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
- { 38095, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
- { 38116, 0x00008B5F }, /* GL_SAMPLER_3D */
- { 38130, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
- { 38148, 0x00008919 }, /* GL_SAMPLER_BINDING */
- { 38167, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
- { 38185, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
- { 38207, 0x00008B60 }, /* GL_SAMPLER_CUBE */
- { 38223, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
- { 38246, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
- { 38273, 0x000080A9 }, /* GL_SAMPLES */
- { 38284, 0x000086B4 }, /* GL_SAMPLES_3DFX */
- { 38300, 0x000080A9 }, /* GL_SAMPLES_ARB */
- { 38315, 0x00008914 }, /* GL_SAMPLES_PASSED */
- { 38333, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
- { 38355, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- { 38383, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
- { 38415, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
- { 38438, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
- { 38465, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
- { 38483, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
- { 38506, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
- { 38528, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
- { 38547, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
- { 38570, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
- { 38596, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
- { 38626, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
- { 38651, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
- { 38680, 0x00080000 }, /* GL_SCISSOR_BIT */
- { 38695, 0x00000C10 }, /* GL_SCISSOR_BOX */
- { 38710, 0x00000C11 }, /* GL_SCISSOR_TEST */
- { 38726, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
- { 38751, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- { 38791, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 38835, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- { 38868, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- { 38898, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- { 38930, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- { 38960, 0x00001C02 }, /* GL_SELECT */
- { 38970, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
- { 38998, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
- { 39023, 0x00008012 }, /* GL_SEPARABLE_2D */
- { 39039, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
- { 39059, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
- { 39083, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
- { 39110, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
- { 39141, 0x0000150F }, /* GL_SET */
- { 39148, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
- { 39173, 0x00008DFA }, /* GL_SHADER_COMPILER */
- { 39192, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
- { 39213, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
- { 39237, 0x00008B4F }, /* GL_SHADER_TYPE */
- { 39252, 0x00000B54 }, /* GL_SHADE_MODEL */
- { 39267, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
- { 39295, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
- { 39318, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- { 39348, 0x00001601 }, /* GL_SHININESS */
- { 39361, 0x00001402 }, /* GL_SHORT */
- { 39370, 0x00009119 }, /* GL_SIGNALED */
- { 39382, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
- { 39403, 0x000081F9 }, /* GL_SINGLE_COLOR */
- { 39419, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
- { 39439, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
- { 39458, 0x00008C46 }, /* GL_SLUMINANCE */
- { 39472, 0x00008C47 }, /* GL_SLUMINANCE8 */
- { 39487, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
- { 39509, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
- { 39529, 0x00001D01 }, /* GL_SMOOTH */
- { 39539, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
- { 39572, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
- { 39599, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
- { 39632, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
- { 39659, 0x00008588 }, /* GL_SOURCE0_ALPHA */
- { 39676, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
- { 39697, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
- { 39718, 0x00008580 }, /* GL_SOURCE0_RGB */
- { 39733, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
- { 39752, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
- { 39771, 0x00008589 }, /* GL_SOURCE1_ALPHA */
- { 39788, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
- { 39809, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
- { 39830, 0x00008581 }, /* GL_SOURCE1_RGB */
- { 39845, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
- { 39864, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
- { 39883, 0x0000858A }, /* GL_SOURCE2_ALPHA */
- { 39900, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
- { 39921, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
- { 39942, 0x00008582 }, /* GL_SOURCE2_RGB */
- { 39957, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
- { 39976, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
- { 39995, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
- { 40015, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
- { 40033, 0x00001202 }, /* GL_SPECULAR */
- { 40045, 0x00002402 }, /* GL_SPHERE_MAP */
- { 40059, 0x00001206 }, /* GL_SPOT_CUTOFF */
- { 40074, 0x00001204 }, /* GL_SPOT_DIRECTION */
- { 40092, 0x00001205 }, /* GL_SPOT_EXPONENT */
- { 40109, 0x00008588 }, /* GL_SRC0_ALPHA */
- { 40123, 0x00008580 }, /* GL_SRC0_RGB */
- { 40135, 0x00008589 }, /* GL_SRC1_ALPHA */
- { 40149, 0x00008581 }, /* GL_SRC1_RGB */
- { 40161, 0x0000858A }, /* GL_SRC2_ALPHA */
- { 40175, 0x00008582 }, /* GL_SRC2_RGB */
- { 40187, 0x00000302 }, /* GL_SRC_ALPHA */
- { 40200, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
- { 40222, 0x00000300 }, /* GL_SRC_COLOR */
- { 40235, 0x00008C40 }, /* GL_SRGB */
- { 40243, 0x00008C41 }, /* GL_SRGB8 */
- { 40252, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
- { 40268, 0x00008C42 }, /* GL_SRGB_ALPHA */
- { 40282, 0x00000503 }, /* GL_STACK_OVERFLOW */
- { 40300, 0x00000504 }, /* GL_STACK_UNDERFLOW */
- { 40319, 0x000088E6 }, /* GL_STATIC_COPY */
- { 40334, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
- { 40353, 0x000088E4 }, /* GL_STATIC_DRAW */
- { 40368, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
- { 40387, 0x000088E5 }, /* GL_STATIC_READ */
- { 40402, 0x000088E5 }, /* GL_STATIC_READ_ARB */
- { 40421, 0x00001802 }, /* GL_STENCIL */
- { 40432, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
- { 40454, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
- { 40480, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
- { 40506, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
- { 40527, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
- { 40552, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
- { 40573, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
- { 40598, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- { 40630, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
- { 40666, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- { 40698, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
- { 40734, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
- { 40754, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
- { 40781, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
- { 40807, 0x00000D57 }, /* GL_STENCIL_BITS */
- { 40823, 0x00008224 }, /* GL_STENCIL_BUFFER */
- { 40841, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
- { 40863, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
- { 40886, 0x00000B94 }, /* GL_STENCIL_FAIL */
- { 40902, 0x00000B92 }, /* GL_STENCIL_FUNC */
- { 40918, 0x00001901 }, /* GL_STENCIL_INDEX */
- { 40935, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
- { 40953, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
- { 40972, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
- { 40995, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
- { 41017, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
- { 41039, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
- { 41057, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
- { 41079, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
- { 41101, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
- { 41119, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
- { 41141, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
- { 41163, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
- { 41184, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
- { 41211, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
- { 41238, 0x00000B97 }, /* GL_STENCIL_REF */
- { 41253, 0x00000B90 }, /* GL_STENCIL_TEST */
- { 41269, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- { 41298, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
- { 41320, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
- { 41341, 0x00000C33 }, /* GL_STEREO */
- { 41351, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
- { 41375, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
- { 41400, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
- { 41424, 0x000088E2 }, /* GL_STREAM_COPY */
- { 41439, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
- { 41458, 0x000088E0 }, /* GL_STREAM_DRAW */
- { 41473, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
- { 41492, 0x000088E1 }, /* GL_STREAM_READ */
- { 41507, 0x000088E1 }, /* GL_STREAM_READ_ARB */
- { 41526, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
- { 41543, 0x000084E7 }, /* GL_SUBTRACT */
- { 41555, 0x000084E7 }, /* GL_SUBTRACT_ARB */
- { 41571, 0x00009113 }, /* GL_SYNC_CONDITION */
- { 41589, 0x00009116 }, /* GL_SYNC_FENCE */
- { 41603, 0x00009115 }, /* GL_SYNC_FLAGS */
- { 41617, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
- { 41644, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- { 41674, 0x00009114 }, /* GL_SYNC_STATUS */
- { 41689, 0x00002001 }, /* GL_T */
- { 41694, 0x00002A2A }, /* GL_T2F_C3F_V3F */
- { 41709, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
- { 41728, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
- { 41744, 0x00002A2B }, /* GL_T2F_N3F_V3F */
- { 41759, 0x00002A27 }, /* GL_T2F_V3F */
- { 41770, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
- { 41789, 0x00002A28 }, /* GL_T4F_V4F */
- { 41800, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
- { 41823, 0x00001702 }, /* GL_TEXTURE */
- { 41834, 0x000084C0 }, /* GL_TEXTURE0 */
- { 41846, 0x000084C0 }, /* GL_TEXTURE0_ARB */
- { 41862, 0x000084C1 }, /* GL_TEXTURE1 */
- { 41874, 0x000084CA }, /* GL_TEXTURE10 */
- { 41887, 0x000084CA }, /* GL_TEXTURE10_ARB */
- { 41904, 0x000084CB }, /* GL_TEXTURE11 */
- { 41917, 0x000084CB }, /* GL_TEXTURE11_ARB */
- { 41934, 0x000084CC }, /* GL_TEXTURE12 */
- { 41947, 0x000084CC }, /* GL_TEXTURE12_ARB */
- { 41964, 0x000084CD }, /* GL_TEXTURE13 */
- { 41977, 0x000084CD }, /* GL_TEXTURE13_ARB */
- { 41994, 0x000084CE }, /* GL_TEXTURE14 */
- { 42007, 0x000084CE }, /* GL_TEXTURE14_ARB */
- { 42024, 0x000084CF }, /* GL_TEXTURE15 */
- { 42037, 0x000084CF }, /* GL_TEXTURE15_ARB */
- { 42054, 0x000084D0 }, /* GL_TEXTURE16 */
- { 42067, 0x000084D0 }, /* GL_TEXTURE16_ARB */
- { 42084, 0x000084D1 }, /* GL_TEXTURE17 */
- { 42097, 0x000084D1 }, /* GL_TEXTURE17_ARB */
- { 42114, 0x000084D2 }, /* GL_TEXTURE18 */
- { 42127, 0x000084D2 }, /* GL_TEXTURE18_ARB */
- { 42144, 0x000084D3 }, /* GL_TEXTURE19 */
- { 42157, 0x000084D3 }, /* GL_TEXTURE19_ARB */
- { 42174, 0x000084C1 }, /* GL_TEXTURE1_ARB */
- { 42190, 0x000084C2 }, /* GL_TEXTURE2 */
- { 42202, 0x000084D4 }, /* GL_TEXTURE20 */
- { 42215, 0x000084D4 }, /* GL_TEXTURE20_ARB */
- { 42232, 0x000084D5 }, /* GL_TEXTURE21 */
- { 42245, 0x000084D5 }, /* GL_TEXTURE21_ARB */
- { 42262, 0x000084D6 }, /* GL_TEXTURE22 */
- { 42275, 0x000084D6 }, /* GL_TEXTURE22_ARB */
- { 42292, 0x000084D7 }, /* GL_TEXTURE23 */
- { 42305, 0x000084D7 }, /* GL_TEXTURE23_ARB */
- { 42322, 0x000084D8 }, /* GL_TEXTURE24 */
- { 42335, 0x000084D8 }, /* GL_TEXTURE24_ARB */
- { 42352, 0x000084D9 }, /* GL_TEXTURE25 */
- { 42365, 0x000084D9 }, /* GL_TEXTURE25_ARB */
- { 42382, 0x000084DA }, /* GL_TEXTURE26 */
- { 42395, 0x000084DA }, /* GL_TEXTURE26_ARB */
- { 42412, 0x000084DB }, /* GL_TEXTURE27 */
- { 42425, 0x000084DB }, /* GL_TEXTURE27_ARB */
- { 42442, 0x000084DC }, /* GL_TEXTURE28 */
- { 42455, 0x000084DC }, /* GL_TEXTURE28_ARB */
- { 42472, 0x000084DD }, /* GL_TEXTURE29 */
- { 42485, 0x000084DD }, /* GL_TEXTURE29_ARB */
- { 42502, 0x000084C2 }, /* GL_TEXTURE2_ARB */
- { 42518, 0x000084C3 }, /* GL_TEXTURE3 */
- { 42530, 0x000084DE }, /* GL_TEXTURE30 */
- { 42543, 0x000084DE }, /* GL_TEXTURE30_ARB */
- { 42560, 0x000084DF }, /* GL_TEXTURE31 */
- { 42573, 0x000084DF }, /* GL_TEXTURE31_ARB */
- { 42590, 0x000084C3 }, /* GL_TEXTURE3_ARB */
- { 42606, 0x000084C4 }, /* GL_TEXTURE4 */
- { 42618, 0x000084C4 }, /* GL_TEXTURE4_ARB */
- { 42634, 0x000084C5 }, /* GL_TEXTURE5 */
- { 42646, 0x000084C5 }, /* GL_TEXTURE5_ARB */
- { 42662, 0x000084C6 }, /* GL_TEXTURE6 */
- { 42674, 0x000084C6 }, /* GL_TEXTURE6_ARB */
- { 42690, 0x000084C7 }, /* GL_TEXTURE7 */
- { 42702, 0x000084C7 }, /* GL_TEXTURE7_ARB */
- { 42718, 0x000084C8 }, /* GL_TEXTURE8 */
- { 42730, 0x000084C8 }, /* GL_TEXTURE8_ARB */
- { 42746, 0x000084C9 }, /* GL_TEXTURE9 */
- { 42758, 0x000084C9 }, /* GL_TEXTURE9_ARB */
- { 42774, 0x00000DE0 }, /* GL_TEXTURE_1D */
- { 42788, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
- { 42808, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
- { 42832, 0x00000DE1 }, /* GL_TEXTURE_2D */
- { 42846, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
- { 42866, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
- { 42890, 0x0000806F }, /* GL_TEXTURE_3D */
- { 42904, 0x0000806F }, /* GL_TEXTURE_3D_OES */
- { 42922, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
- { 42944, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
- { 42970, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
- { 42992, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
- { 43014, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
- { 43042, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- { 43074, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
- { 43096, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
- { 43124, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- { 43156, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
- { 43178, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
- { 43204, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
- { 43230, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */
- { 43260, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
- { 43288, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
- { 43320, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
- { 43352, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
- { 43381, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- { 43414, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
- { 43446, 0x00040000 }, /* GL_TEXTURE_BIT */
- { 43461, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
- { 43482, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
- { 43507, 0x00001005 }, /* GL_TEXTURE_BORDER */
- { 43525, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
- { 43549, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
- { 43567, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */
- { 43589, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- { 43626, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */
- { 43667, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
- { 43692, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */
- { 43721, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- { 43752, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- { 43782, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- { 43812, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- { 43847, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- { 43878, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 43916, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
- { 43943, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- { 43975, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- { 44009, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
- { 44033, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
- { 44061, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
- { 44085, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
- { 44113, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- { 44146, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
- { 44170, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
- { 44192, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
- { 44214, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
- { 44240, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
- { 44274, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- { 44307, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
- { 44344, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
- { 44372, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
- { 44404, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
- { 44427, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- { 44465, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
- { 44507, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- { 44538, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- { 44566, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- { 44596, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- { 44624, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
- { 44649, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
- { 44669, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
- { 44693, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- { 44724, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
- { 44759, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
- { 44794, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- { 44825, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
- { 44860, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
- { 44895, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- { 44926, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
- { 44961, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
- { 44996, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
- { 45020, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- { 45051, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
- { 45086, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
- { 45121, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- { 45152, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
- { 45187, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
- { 45222, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- { 45253, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
- { 45288, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
- { 45323, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- { 45352, 0x00008071 }, /* GL_TEXTURE_DEPTH */
- { 45369, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
- { 45391, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
- { 45417, 0x00002300 }, /* GL_TEXTURE_ENV */
- { 45432, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
- { 45453, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
- { 45473, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
- { 45499, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
- { 45529, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
- { 45549, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
- { 45573, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
- { 45590, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
- { 45607, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
- { 45624, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
- { 45647, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
- { 45664, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
- { 45689, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
- { 45711, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
- { 45737, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
- { 45755, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
- { 45781, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
- { 45807, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
- { 45837, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
- { 45864, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
- { 45889, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
- { 45909, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
- { 45933, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- { 45960, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- { 45987, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- { 46014, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
- { 46040, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
- { 46070, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
- { 46092, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
- { 46110, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 46150, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- { 46180, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- { 46208, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- { 46236, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- { 46264, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
- { 46285, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
- { 46304, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
- { 46326, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
- { 46345, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
- { 46365, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- { 46395, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- { 46426, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
- { 46447, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
- { 46472, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
- { 46496, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
- { 46516, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
- { 46540, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
- { 46560, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
- { 46583, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
- { 46606, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
- { 46630, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
- { 46658, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- { 46688, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
- { 46713, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- { 46747, 0x00001000 }, /* GL_TEXTURE_WIDTH */
- { 46764, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
- { 46782, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
- { 46804, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
- { 46822, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
- { 46840, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
- { 46859, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
- { 46879, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
- { 46898, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- { 46927, 0x00001000 }, /* GL_TRANSFORM_BIT */
- { 46944, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
- { 46966, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
- { 46996, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- { 47025, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- { 47061, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- { 47098, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- { 47139, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- { 47172, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
- { 47206, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- { 47244, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- { 47280, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- { 47314, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- { 47352, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- { 47387, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- { 47426, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- { 47467, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- { 47512, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- { 47543, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- { 47578, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- { 47619, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- { 47664, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
- { 47690, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
- { 47720, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- { 47752, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- { 47782, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
- { 47816, 0x0000862C }, /* GL_TRANSPOSE_NV */
- { 47832, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- { 47863, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
- { 47898, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- { 47926, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
- { 47958, 0x00000004 }, /* GL_TRIANGLES */
- { 47971, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
- { 47994, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
- { 48021, 0x00000006 }, /* GL_TRIANGLE_FAN */
- { 48037, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
- { 48058, 0x00000005 }, /* GL_TRIANGLE_STRIP */
- { 48076, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
- { 48104, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
- { 48136, 0x00000001 }, /* GL_TRUE */
- { 48144, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
- { 48163, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
- { 48192, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
- { 48212, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
- { 48235, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
- { 48255, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
- { 48276, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
- { 48298, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
- { 48320, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
- { 48340, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
- { 48361, 0x00009118 }, /* GL_UNSIGNALED */
- { 48375, 0x00001401 }, /* GL_UNSIGNED_BYTE */
- { 48392, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- { 48419, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
- { 48442, 0x00001405 }, /* GL_UNSIGNED_INT */
- { 48458, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- { 48490, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
- { 48517, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- { 48548, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
- { 48569, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
- { 48594, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
- { 48618, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
- { 48643, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- { 48674, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
- { 48709, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- { 48737, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
- { 48761, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- { 48789, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
- { 48816, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- { 48849, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
- { 48886, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
- { 48917, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
- { 48944, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- { 48977, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
- { 49014, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
- { 49045, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- { 49077, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
- { 49113, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
- { 49140, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
- { 49171, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
- { 49202, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
- { 49237, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- { 49266, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
- { 49299, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
- { 49320, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
- { 49345, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
- { 49366, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
- { 49391, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
- { 49412, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
- { 49437, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
- { 49460, 0x00001403 }, /* GL_UNSIGNED_SHORT */
- { 49478, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- { 49508, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
- { 49542, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- { 49568, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- { 49598, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
- { 49632, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- { 49658, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
- { 49682, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- { 49710, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- { 49738, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
- { 49765, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- { 49797, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
- { 49828, 0x00008CA2 }, /* GL_UPPER_LEFT */
- { 49842, 0x00002A20 }, /* GL_V2F */
- { 49849, 0x00002A21 }, /* GL_V3F */
- { 49856, 0x00008B83 }, /* GL_VALIDATE_STATUS */
- { 49875, 0x00001F00 }, /* GL_VENDOR */
- { 49885, 0x00001F02 }, /* GL_VERSION */
- { 49896, 0x00008074 }, /* GL_VERTEX_ARRAY */
- { 49912, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
- { 49936, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
- { 49966, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- { 49997, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
- { 50032, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
- { 50056, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
- { 50077, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
- { 50100, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
- { 50121, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- { 50148, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- { 50176, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- { 50204, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- { 50232, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- { 50260, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- { 50288, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- { 50316, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- { 50343, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- { 50370, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- { 50397, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- { 50424, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- { 50451, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- { 50478, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- { 50505, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- { 50532, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- { 50559, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- { 50597, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
- { 50639, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
- { 50674, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- { 50705, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
- { 50740, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- { 50771, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
- { 50806, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- { 50840, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
- { 50878, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- { 50909, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
- { 50944, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- { 50972, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
- { 51004, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- { 51034, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
- { 51068, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- { 51096, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
- { 51128, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
- { 51148, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
- { 51170, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
- { 51199, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
- { 51220, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- { 51249, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
- { 51282, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
- { 51314, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- { 51341, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
- { 51372, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
- { 51402, 0x00008B31 }, /* GL_VERTEX_SHADER */
- { 51419, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
- { 51440, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
- { 51467, 0x00000BA2 }, /* GL_VIEWPORT */
- { 51479, 0x00000800 }, /* GL_VIEWPORT_BIT */
- { 51495, 0x00008A1A }, /* GL_VOLATILE_APPLE */
- { 51513, 0x0000911D }, /* GL_WAIT_FAILED */
- { 51528, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
- { 51548, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- { 51579, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
- { 51614, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
- { 51649, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
- { 51669, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- { 51697, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
- { 51725, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- { 51750, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
- { 51775, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- { 51802, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
- { 51829, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- { 51854, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
- { 51879, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
- { 51903, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
- { 51922, 0x000088B9 }, /* GL_WRITE_ONLY */
- { 51936, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
- { 51954, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
- { 51972, 0x00001506 }, /* GL_XOR */
- { 51979, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
- { 51998, 0x00008757 }, /* GL_YCBCR_MESA */
- { 52012, 0x00000000 }, /* GL_ZERO */
- { 52020, 0x00000D16 }, /* GL_ZOOM_X */
- { 52030, 0x00000D17 }, /* GL_ZOOM_Y */
+ { 9439, 0x00008825 }, /* GL_DRAW_BUFFER0_NV */
+ { 9458, 0x00008826 }, /* GL_DRAW_BUFFER1 */
+ { 9474, 0x0000882F }, /* GL_DRAW_BUFFER10 */
+ { 9491, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
+ { 9512, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
+ { 9533, 0x0000882F }, /* GL_DRAW_BUFFER10_NV */
+ { 9553, 0x00008830 }, /* GL_DRAW_BUFFER11 */
+ { 9570, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
+ { 9591, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
+ { 9612, 0x00008830 }, /* GL_DRAW_BUFFER11_NV */
+ { 9632, 0x00008831 }, /* GL_DRAW_BUFFER12 */
+ { 9649, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
+ { 9670, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
+ { 9691, 0x00008831 }, /* GL_DRAW_BUFFER12_NV */
+ { 9711, 0x00008832 }, /* GL_DRAW_BUFFER13 */
+ { 9728, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
+ { 9749, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
+ { 9770, 0x00008832 }, /* GL_DRAW_BUFFER13_NV */
+ { 9790, 0x00008833 }, /* GL_DRAW_BUFFER14 */
+ { 9807, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
+ { 9828, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
+ { 9849, 0x00008833 }, /* GL_DRAW_BUFFER14_NV */
+ { 9869, 0x00008834 }, /* GL_DRAW_BUFFER15 */
+ { 9886, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
+ { 9907, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
+ { 9928, 0x00008834 }, /* GL_DRAW_BUFFER15_NV */
+ { 9948, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
+ { 9968, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
+ { 9988, 0x00008826 }, /* GL_DRAW_BUFFER1_NV */
+ { 10007, 0x00008827 }, /* GL_DRAW_BUFFER2 */
+ { 10023, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
+ { 10043, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
+ { 10063, 0x00008827 }, /* GL_DRAW_BUFFER2_NV */
+ { 10082, 0x00008828 }, /* GL_DRAW_BUFFER3 */
+ { 10098, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
+ { 10118, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
+ { 10138, 0x00008828 }, /* GL_DRAW_BUFFER3_NV */
+ { 10157, 0x00008829 }, /* GL_DRAW_BUFFER4 */
+ { 10173, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
+ { 10193, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
+ { 10213, 0x00008829 }, /* GL_DRAW_BUFFER4_NV */
+ { 10232, 0x0000882A }, /* GL_DRAW_BUFFER5 */
+ { 10248, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
+ { 10268, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
+ { 10288, 0x0000882A }, /* GL_DRAW_BUFFER5_NV */
+ { 10307, 0x0000882B }, /* GL_DRAW_BUFFER6 */
+ { 10323, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
+ { 10343, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
+ { 10363, 0x0000882B }, /* GL_DRAW_BUFFER6_NV */
+ { 10382, 0x0000882C }, /* GL_DRAW_BUFFER7 */
+ { 10398, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
+ { 10418, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
+ { 10438, 0x0000882C }, /* GL_DRAW_BUFFER7_NV */
+ { 10457, 0x0000882D }, /* GL_DRAW_BUFFER8 */
+ { 10473, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
+ { 10493, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
+ { 10513, 0x0000882D }, /* GL_DRAW_BUFFER8_NV */
+ { 10532, 0x0000882E }, /* GL_DRAW_BUFFER9 */
+ { 10548, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
+ { 10568, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
+ { 10588, 0x0000882E }, /* GL_DRAW_BUFFER9_NV */
+ { 10607, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
+ { 10627, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ { 10655, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
+ { 10687, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
+ { 10711, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
+ { 10731, 0x00000304 }, /* GL_DST_ALPHA */
+ { 10744, 0x00000306 }, /* GL_DST_COLOR */
+ { 10757, 0x0000877A }, /* GL_DU8DV8_ATI */
+ { 10771, 0x00008779 }, /* GL_DUDV_ATI */
+ { 10783, 0x000088EA }, /* GL_DYNAMIC_COPY */
+ { 10799, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
+ { 10819, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
+ { 10835, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
+ { 10855, 0x000088E9 }, /* GL_DYNAMIC_READ */
+ { 10871, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
+ { 10891, 0x00000B43 }, /* GL_EDGE_FLAG */
+ { 10904, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
+ { 10923, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ { 10957, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
+ { 10995, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ { 11022, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ { 11048, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
+ { 11072, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ { 11104, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
+ { 11140, 0x00001600 }, /* GL_EMISSION */
+ { 11152, 0x00002000 }, /* GL_ENABLE_BIT */
+ { 11166, 0x00000202 }, /* GL_EQUAL */
+ { 11175, 0x00001509 }, /* GL_EQUIV */
+ { 11184, 0x00010000 }, /* GL_EVAL_BIT */
+ { 11196, 0x00000800 }, /* GL_EXP */
+ { 11203, 0x00000801 }, /* GL_EXP2 */
+ { 11211, 0x00001F03 }, /* GL_EXTENSIONS */
+ { 11225, 0x00002400 }, /* GL_EYE_LINEAR */
+ { 11239, 0x00002502 }, /* GL_EYE_PLANE */
+ { 11252, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ { 11277, 0x0000855B }, /* GL_EYE_RADIAL_NV */
+ { 11294, 0x00000000 }, /* GL_FALSE */
+ { 11303, 0x00001101 }, /* GL_FASTEST */
+ { 11314, 0x00001C01 }, /* GL_FEEDBACK */
+ { 11326, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
+ { 11353, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
+ { 11377, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
+ { 11401, 0x00001B02 }, /* GL_FILL */
+ { 11409, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
+ { 11436, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
+ { 11467, 0x0000140C }, /* GL_FIXED */
+ { 11476, 0x0000140C }, /* GL_FIXED_OES */
+ { 11489, 0x0000891D }, /* GL_FIXED_ONLY */
+ { 11503, 0x0000891D }, /* GL_FIXED_ONLY_ARB */
+ { 11521, 0x00001D00 }, /* GL_FLAT */
+ { 11529, 0x00001406 }, /* GL_FLOAT */
+ { 11538, 0x00008B5A }, /* GL_FLOAT_MAT2 */
+ { 11552, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
+ { 11570, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
+ { 11586, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
+ { 11602, 0x00008B5B }, /* GL_FLOAT_MAT3 */
+ { 11616, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
+ { 11634, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
+ { 11650, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
+ { 11666, 0x00008B5C }, /* GL_FLOAT_MAT4 */
+ { 11680, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
+ { 11698, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
+ { 11714, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
+ { 11730, 0x00008B50 }, /* GL_FLOAT_VEC2 */
+ { 11744, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
+ { 11762, 0x00008B51 }, /* GL_FLOAT_VEC3 */
+ { 11776, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
+ { 11794, 0x00008B52 }, /* GL_FLOAT_VEC4 */
+ { 11808, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
+ { 11826, 0x00000B60 }, /* GL_FOG */
+ { 11833, 0x00000080 }, /* GL_FOG_BIT */
+ { 11844, 0x00000B66 }, /* GL_FOG_COLOR */
+ { 11857, 0x00008451 }, /* GL_FOG_COORD */
+ { 11870, 0x00008451 }, /* GL_FOG_COORDINATE */
+ { 11888, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
+ { 11912, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ { 11951, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
+ { 11994, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ { 12026, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ { 12057, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ { 12086, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
+ { 12111, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
+ { 12130, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
+ { 12164, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
+ { 12191, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
+ { 12217, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
+ { 12241, 0x00008450 }, /* GL_FOG_COORD_SRC */
+ { 12258, 0x00000B62 }, /* GL_FOG_DENSITY */
+ { 12273, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
+ { 12297, 0x00000B64 }, /* GL_FOG_END */
+ { 12308, 0x00000C54 }, /* GL_FOG_HINT */
+ { 12320, 0x00000B61 }, /* GL_FOG_INDEX */
+ { 12333, 0x00000B65 }, /* GL_FOG_MODE */
+ { 12345, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
+ { 12364, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
+ { 12389, 0x00000B63 }, /* GL_FOG_START */
+ { 12402, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
+ { 12420, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
+ { 12444, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
+ { 12463, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
+ { 12486, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ { 12521, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
+ { 12560, 0x00008D40 }, /* GL_FRAMEBUFFER */
+ { 12575, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ { 12612, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ { 12648, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ { 12689, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ { 12730, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ { 12767, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ { 12804, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ { 12838, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */
+ { 12876, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ { 12914, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
+ { 12956, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
+ { 12998, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ { 13036, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
+ { 13078, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
+ { 13120, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ { 13155, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ { 13194, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
+ { 13243, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
+ { 13292, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ { 13340, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
+ { 13392, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
+ { 13444, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ { 13484, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+ { 13528, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ { 13568, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
+ { 13612, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
+ { 13656, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
+ { 13679, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
+ { 13706, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
+ { 13733, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
+ { 13757, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
+ { 13785, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
+ { 13813, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
+ { 13836, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
+ { 13855, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ { 13892, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
+ { 13933, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
+ { 13974, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
+ { 14011, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ { 14052, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
+ { 14093, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ { 14131, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
+ { 14173, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
+ { 14215, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ { 14266, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ { 14304, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
+ { 14342, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ { 14384, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ { 14424, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */
+ { 14468, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ { 14513, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
+ { 14562, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
+ { 14611, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ { 14649, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
+ { 14691, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ { 14729, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
+ { 14771, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
+ { 14813, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
+ { 14832, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ { 14864, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
+ { 14889, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ { 14916, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
+ { 14947, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
+ { 14978, 0x00000404 }, /* GL_FRONT */
+ { 14987, 0x00000408 }, /* GL_FRONT_AND_BACK */
+ { 15005, 0x00000B46 }, /* GL_FRONT_FACE */
+ { 15019, 0x00000400 }, /* GL_FRONT_LEFT */
+ { 15033, 0x00000401 }, /* GL_FRONT_RIGHT */
+ { 15048, 0x00008006 }, /* GL_FUNC_ADD */
+ { 15060, 0x00008006 }, /* GL_FUNC_ADD_EXT */
+ { 15076, 0x00008006 }, /* GL_FUNC_ADD_OES */
+ { 15092, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
+ { 15117, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
+ { 15146, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
+ { 15175, 0x0000800A }, /* GL_FUNC_SUBTRACT */
+ { 15192, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
+ { 15213, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
+ { 15234, 0x00008191 }, /* GL_GENERATE_MIPMAP */
+ { 15253, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
+ { 15277, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
+ { 15306, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
+ { 15330, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */
+ { 15353, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ { 15380, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */
+ { 15404, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ { 15432, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */
+ { 15451, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */
+ { 15474, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */
+ { 15499, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ { 15528, 0x00000206 }, /* GL_GEQUAL */
+ { 15538, 0x00000204 }, /* GL_GREATER */
+ { 15549, 0x00001904 }, /* GL_GREEN */
+ { 15558, 0x00000D19 }, /* GL_GREEN_BIAS */
+ { 15572, 0x00000D53 }, /* GL_GREEN_BITS */
+ { 15586, 0x00008D95 }, /* GL_GREEN_INTEGER */
+ { 15603, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */
+ { 15624, 0x00000D18 }, /* GL_GREEN_SCALE */
+ { 15639, 0x00008253 }, /* GL_GUILTY_CONTEXT_RESET_ARB */
+ { 15667, 0x0000140B }, /* GL_HALF_FLOAT */
+ { 15681, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
+ { 15699, 0x00008DF2 }, /* GL_HIGH_FLOAT */
+ { 15713, 0x00008DF5 }, /* GL_HIGH_INT */
+ { 15725, 0x00008000 }, /* GL_HINT_BIT */
+ { 15737, 0x00008024 }, /* GL_HISTOGRAM */
+ { 15750, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
+ { 15774, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
+ { 15802, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
+ { 15825, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
+ { 15852, 0x00008024 }, /* GL_HISTOGRAM_EXT */
+ { 15869, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
+ { 15889, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
+ { 15913, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
+ { 15937, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
+ { 15965, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ { 15993, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
+ { 16025, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
+ { 16047, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
+ { 16073, 0x0000802D }, /* GL_HISTOGRAM_SINK */
+ { 16091, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
+ { 16113, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
+ { 16132, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
+ { 16155, 0x0000862A }, /* GL_IDENTITY_NV */
+ { 16170, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
+ { 16190, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ { 16226, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ { 16266, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ { 16300, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ { 16338, 0x00001E02 }, /* GL_INCR */
+ { 16346, 0x00008507 }, /* GL_INCR_WRAP */
+ { 16359, 0x00008507 }, /* GL_INCR_WRAP_EXT */
+ { 16376, 0x00008222 }, /* GL_INDEX */
+ { 16385, 0x00008077 }, /* GL_INDEX_ARRAY */
+ { 16400, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ { 16430, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
+ { 16464, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
+ { 16487, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
+ { 16509, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
+ { 16529, 0x00000D51 }, /* GL_INDEX_BITS */
+ { 16543, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
+ { 16564, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
+ { 16582, 0x00000C30 }, /* GL_INDEX_MODE */
+ { 16596, 0x00000D13 }, /* GL_INDEX_OFFSET */
+ { 16612, 0x00000D12 }, /* GL_INDEX_SHIFT */
+ { 16627, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
+ { 16646, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
+ { 16665, 0x00008254 }, /* GL_INNOCENT_CONTEXT_RESET_ARB */
+ { 16695, 0x00001404 }, /* GL_INT */
+ { 16702, 0x00008049 }, /* GL_INTENSITY */
+ { 16715, 0x0000804C }, /* GL_INTENSITY12 */
+ { 16730, 0x0000804C }, /* GL_INTENSITY12_EXT */
+ { 16749, 0x0000804D }, /* GL_INTENSITY16 */
+ { 16764, 0x00008D8B }, /* GL_INTENSITY16I_EXT */
+ { 16784, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */
+ { 16805, 0x0000804D }, /* GL_INTENSITY16_EXT */
+ { 16824, 0x00008D85 }, /* GL_INTENSITY32I_EXT */
+ { 16844, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */
+ { 16865, 0x0000804A }, /* GL_INTENSITY4 */
+ { 16879, 0x0000804A }, /* GL_INTENSITY4_EXT */
+ { 16897, 0x0000804B }, /* GL_INTENSITY8 */
+ { 16911, 0x00008D91 }, /* GL_INTENSITY8I_EXT */
+ { 16930, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */
+ { 16950, 0x0000804B }, /* GL_INTENSITY8_EXT */
+ { 16968, 0x00008049 }, /* GL_INTENSITY_EXT */
+ { 16985, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */
+ { 17008, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
+ { 17035, 0x00008575 }, /* GL_INTERPOLATE */
+ { 17050, 0x00008575 }, /* GL_INTERPOLATE_ARB */
+ { 17069, 0x00008575 }, /* GL_INTERPOLATE_EXT */
+ { 17088, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
+ { 17110, 0x00008D9F }, /* GL_INT_2_10_10_10_REV */
+ { 17132, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */
+ { 17150, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */
+ { 17174, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */
+ { 17202, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */
+ { 17224, 0x00008DCA }, /* GL_INT_SAMPLER_2D */
+ { 17242, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */
+ { 17266, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */
+ { 17294, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */
+ { 17316, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */
+ { 17339, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */
+ { 17366, 0x00008DCB }, /* GL_INT_SAMPLER_3D */
+ { 17384, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */
+ { 17406, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */
+ { 17428, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */
+ { 17454, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */
+ { 17474, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */
+ { 17498, 0x00008B53 }, /* GL_INT_VEC2 */
+ { 17510, 0x00008B53 }, /* GL_INT_VEC2_ARB */
+ { 17526, 0x00008B54 }, /* GL_INT_VEC3 */
+ { 17538, 0x00008B54 }, /* GL_INT_VEC3_ARB */
+ { 17554, 0x00008B55 }, /* GL_INT_VEC4 */
+ { 17566, 0x00008B55 }, /* GL_INT_VEC4_ARB */
+ { 17582, 0x00000500 }, /* GL_INVALID_ENUM */
+ { 17598, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ { 17631, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
+ { 17668, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
+ { 17705, 0x00000502 }, /* GL_INVALID_OPERATION */
+ { 17726, 0x00000501 }, /* GL_INVALID_VALUE */
+ { 17743, 0x0000862B }, /* GL_INVERSE_NV */
+ { 17757, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
+ { 17781, 0x0000150A }, /* GL_INVERT */
+ { 17791, 0x00001E00 }, /* GL_KEEP */
+ { 17799, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
+ { 17825, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
+ { 17855, 0x00000406 }, /* GL_LEFT */
+ { 17863, 0x00000203 }, /* GL_LEQUAL */
+ { 17873, 0x00000201 }, /* GL_LESS */
+ { 17881, 0x00004000 }, /* GL_LIGHT0 */
+ { 17891, 0x00004001 }, /* GL_LIGHT1 */
+ { 17901, 0x00004002 }, /* GL_LIGHT2 */
+ { 17911, 0x00004003 }, /* GL_LIGHT3 */
+ { 17921, 0x00004004 }, /* GL_LIGHT4 */
+ { 17931, 0x00004005 }, /* GL_LIGHT5 */
+ { 17941, 0x00004006 }, /* GL_LIGHT6 */
+ { 17951, 0x00004007 }, /* GL_LIGHT7 */
+ { 17961, 0x00000B50 }, /* GL_LIGHTING */
+ { 17973, 0x00000040 }, /* GL_LIGHTING_BIT */
+ { 17989, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
+ { 18012, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ { 18041, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
+ { 18074, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ { 18102, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
+ { 18126, 0x00001B01 }, /* GL_LINE */
+ { 18134, 0x00002601 }, /* GL_LINEAR */
+ { 18144, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
+ { 18166, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ { 18196, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ { 18227, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
+ { 18251, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
+ { 18276, 0x00000001 }, /* GL_LINES */
+ { 18285, 0x0000000A }, /* GL_LINES_ADJACENCY */
+ { 18304, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */
+ { 18327, 0x00000004 }, /* GL_LINE_BIT */
+ { 18339, 0x00000002 }, /* GL_LINE_LOOP */
+ { 18352, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
+ { 18372, 0x00000B20 }, /* GL_LINE_SMOOTH */
+ { 18387, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
+ { 18407, 0x00000B24 }, /* GL_LINE_STIPPLE */
+ { 18423, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
+ { 18447, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
+ { 18470, 0x00000003 }, /* GL_LINE_STRIP */
+ { 18484, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */
+ { 18508, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */
+ { 18536, 0x00000702 }, /* GL_LINE_TOKEN */
+ { 18550, 0x00000B21 }, /* GL_LINE_WIDTH */
+ { 18564, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
+ { 18590, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
+ { 18610, 0x00008B82 }, /* GL_LINK_STATUS */
+ { 18625, 0x00000B32 }, /* GL_LIST_BASE */
+ { 18638, 0x00020000 }, /* GL_LIST_BIT */
+ { 18650, 0x00000B33 }, /* GL_LIST_INDEX */
+ { 18664, 0x00000B30 }, /* GL_LIST_MODE */
+ { 18677, 0x00000101 }, /* GL_LOAD */
+ { 18685, 0x00000BF1 }, /* GL_LOGIC_OP */
+ { 18697, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
+ { 18714, 0x00008252 }, /* GL_LOSE_CONTEXT_ON_RESET_ARB */
+ { 18743, 0x00008CA1 }, /* GL_LOWER_LEFT */
+ { 18757, 0x00008DF0 }, /* GL_LOW_FLOAT */
+ { 18770, 0x00008DF3 }, /* GL_LOW_INT */
+ { 18781, 0x00001909 }, /* GL_LUMINANCE */
+ { 18794, 0x00008041 }, /* GL_LUMINANCE12 */
+ { 18809, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
+ { 18832, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
+ { 18859, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
+ { 18881, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
+ { 18907, 0x00008041 }, /* GL_LUMINANCE12_EXT */
+ { 18926, 0x00008042 }, /* GL_LUMINANCE16 */
+ { 18941, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */
+ { 18961, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */
+ { 18982, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
+ { 19005, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
+ { 19032, 0x00008042 }, /* GL_LUMINANCE16_EXT */
+ { 19051, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */
+ { 19071, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */
+ { 19092, 0x0000803F }, /* GL_LUMINANCE4 */
+ { 19106, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
+ { 19127, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
+ { 19152, 0x0000803F }, /* GL_LUMINANCE4_EXT */
+ { 19170, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
+ { 19191, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
+ { 19216, 0x00008040 }, /* GL_LUMINANCE8 */
+ { 19230, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */
+ { 19249, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */
+ { 19269, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
+ { 19290, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
+ { 19315, 0x00008040 }, /* GL_LUMINANCE8_EXT */
+ { 19333, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
+ { 19352, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */
+ { 19378, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ { 19405, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */
+ { 19431, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ { 19458, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */
+ { 19483, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ { 19509, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ { 19540, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */
+ { 19565, 0x0000821B }, /* GL_MAJOR_VERSION */
+ { 19582, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
+ { 19598, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
+ { 19618, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
+ { 19640, 0x00000D91 }, /* GL_MAP1_INDEX */
+ { 19654, 0x00000D92 }, /* GL_MAP1_NORMAL */
+ { 19669, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
+ { 19693, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
+ { 19717, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
+ { 19741, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
+ { 19765, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
+ { 19782, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
+ { 19799, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ { 19827, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ { 19856, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ { 19885, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ { 19914, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ { 19943, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ { 19972, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ { 20001, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ { 20029, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ { 20057, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ { 20085, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ { 20113, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ { 20141, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ { 20169, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ { 20197, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ { 20225, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ { 20253, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
+ { 20269, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
+ { 20289, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
+ { 20311, 0x00000DB1 }, /* GL_MAP2_INDEX */
+ { 20325, 0x00000DB2 }, /* GL_MAP2_NORMAL */
+ { 20340, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
+ { 20364, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
+ { 20388, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
+ { 20412, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
+ { 20436, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
+ { 20453, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
+ { 20470, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ { 20498, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ { 20527, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ { 20556, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ { 20585, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ { 20614, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ { 20643, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ { 20672, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ { 20700, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ { 20728, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ { 20756, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ { 20784, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ { 20812, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ { 20840, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
+ { 20868, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ { 20896, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ { 20924, 0x00000D10 }, /* GL_MAP_COLOR */
+ { 20937, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
+ { 20963, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
+ { 20992, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
+ { 21020, 0x00000001 }, /* GL_MAP_READ_BIT */
+ { 21036, 0x00000D11 }, /* GL_MAP_STENCIL */
+ { 21051, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
+ { 21077, 0x00000002 }, /* GL_MAP_WRITE_BIT */
+ { 21094, 0x000088C0 }, /* GL_MATRIX0_ARB */
+ { 21109, 0x00008630 }, /* GL_MATRIX0_NV */
+ { 21123, 0x000088CA }, /* GL_MATRIX10_ARB */
+ { 21139, 0x000088CB }, /* GL_MATRIX11_ARB */
+ { 21155, 0x000088CC }, /* GL_MATRIX12_ARB */
+ { 21171, 0x000088CD }, /* GL_MATRIX13_ARB */
+ { 21187, 0x000088CE }, /* GL_MATRIX14_ARB */
+ { 21203, 0x000088CF }, /* GL_MATRIX15_ARB */
+ { 21219, 0x000088D0 }, /* GL_MATRIX16_ARB */
+ { 21235, 0x000088D1 }, /* GL_MATRIX17_ARB */
+ { 21251, 0x000088D2 }, /* GL_MATRIX18_ARB */
+ { 21267, 0x000088D3 }, /* GL_MATRIX19_ARB */
+ { 21283, 0x000088C1 }, /* GL_MATRIX1_ARB */
+ { 21298, 0x00008631 }, /* GL_MATRIX1_NV */
+ { 21312, 0x000088D4 }, /* GL_MATRIX20_ARB */
+ { 21328, 0x000088D5 }, /* GL_MATRIX21_ARB */
+ { 21344, 0x000088D6 }, /* GL_MATRIX22_ARB */
+ { 21360, 0x000088D7 }, /* GL_MATRIX23_ARB */
+ { 21376, 0x000088D8 }, /* GL_MATRIX24_ARB */
+ { 21392, 0x000088D9 }, /* GL_MATRIX25_ARB */
+ { 21408, 0x000088DA }, /* GL_MATRIX26_ARB */
+ { 21424, 0x000088DB }, /* GL_MATRIX27_ARB */
+ { 21440, 0x000088DC }, /* GL_MATRIX28_ARB */
+ { 21456, 0x000088DD }, /* GL_MATRIX29_ARB */
+ { 21472, 0x000088C2 }, /* GL_MATRIX2_ARB */
+ { 21487, 0x00008632 }, /* GL_MATRIX2_NV */
+ { 21501, 0x000088DE }, /* GL_MATRIX30_ARB */
+ { 21517, 0x000088DF }, /* GL_MATRIX31_ARB */
+ { 21533, 0x000088C3 }, /* GL_MATRIX3_ARB */
+ { 21548, 0x00008633 }, /* GL_MATRIX3_NV */
+ { 21562, 0x000088C4 }, /* GL_MATRIX4_ARB */
+ { 21577, 0x00008634 }, /* GL_MATRIX4_NV */
+ { 21591, 0x000088C5 }, /* GL_MATRIX5_ARB */
+ { 21606, 0x00008635 }, /* GL_MATRIX5_NV */
+ { 21620, 0x000088C6 }, /* GL_MATRIX6_ARB */
+ { 21635, 0x00008636 }, /* GL_MATRIX6_NV */
+ { 21649, 0x000088C7 }, /* GL_MATRIX7_ARB */
+ { 21664, 0x00008637 }, /* GL_MATRIX7_NV */
+ { 21678, 0x000088C8 }, /* GL_MATRIX8_ARB */
+ { 21693, 0x000088C9 }, /* GL_MATRIX9_ARB */
+ { 21708, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ { 21734, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ { 21775, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
+ { 21801, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ { 21835, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
+ { 21869, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ { 21900, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
+ { 21931, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ { 21964, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
+ { 21997, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ { 22028, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
+ { 22059, 0x00000BA0 }, /* GL_MATRIX_MODE */
+ { 22074, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
+ { 22096, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
+ { 22118, 0x00008008 }, /* GL_MAX */
+ { 22125, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
+ { 22148, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
+ { 22175, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ { 22203, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
+ { 22235, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ { 22261, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ { 22294, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ { 22320, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 22354, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */
+ { 22376, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
+ { 22395, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
+ { 22420, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
+ { 22449, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ { 22481, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 22517, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ { 22553, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
+ { 22593, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
+ { 22619, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
+ { 22649, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
+ { 22674, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
+ { 22703, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ { 22732, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
+ { 22765, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
+ { 22798, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
+ { 22818, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
+ { 22842, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
+ { 22866, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_NV */
+ { 22889, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
+ { 22913, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
+ { 22938, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
+ { 22956, 0x00008008 }, /* GL_MAX_EXT */
+ { 22967, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ { 23000, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ { 23035, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
+ { 23074, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ { 23106, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ { 23139, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ { 23173, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ { 23205, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */
+ { 23241, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ { 23277, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */
+ { 23317, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ { 23357, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */
+ { 23401, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ { 23436, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */
+ { 23475, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ { 23514, 0x00000D31 }, /* GL_MAX_LIGHTS */
+ { 23528, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
+ { 23548, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ { 23586, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ { 23615, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
+ { 23639, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
+ { 23667, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
+ { 23695, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
+ { 23718, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 23755, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 23791, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ { 23818, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ { 23847, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ { 23881, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+ { 23917, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ { 23944, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ { 23976, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ { 24012, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ { 24041, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ { 24070, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ { 24098, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ { 24136, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 24180, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 24223, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 24257, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 24296, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 24333, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 24371, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 24414, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 24457, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ { 24487, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ { 24518, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ { 24546, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */
+ { 24578, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 24614, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 24650, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ { 24680, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ { 24710, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+ { 24744, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
+ { 24777, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
+ { 24802, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
+ { 24831, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
+ { 24860, 0x00008D57 }, /* GL_MAX_SAMPLES */
+ { 24875, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
+ { 24894, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ { 24921, 0x00008504 }, /* GL_MAX_SHININESS_NV */
+ { 24941, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
+ { 24965, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ { 24992, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */
+ { 25023, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
+ { 25045, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
+ { 25071, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ { 25098, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
+ { 25129, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
+ { 25153, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
+ { 25181, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 25215, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
+ { 25235, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ { 25262, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
+ { 25283, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
+ { 25308, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
+ { 25333, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+ { 25368, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ { 25417, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
+ { 25470, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ { 25513, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
+ { 25560, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ { 25606, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
+ { 25656, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */
+ { 25682, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
+ { 25704, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
+ { 25730, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
+ { 25753, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
+ { 25775, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
+ { 25801, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ { 25833, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ { 25867, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+ { 25905, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ { 25938, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
+ { 25975, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ { 26005, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
+ { 26029, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
+ { 26053, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ { 26090, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
+ { 26111, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
+ { 26127, 0x00008DF4 }, /* GL_MEDIUM_INT */
+ { 26141, 0x00008007 }, /* GL_MIN */
+ { 26148, 0x0000802E }, /* GL_MINMAX */
+ { 26158, 0x0000802E }, /* GL_MINMAX_EXT */
+ { 26172, 0x0000802F }, /* GL_MINMAX_FORMAT */
+ { 26189, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
+ { 26210, 0x00008030 }, /* GL_MINMAX_SINK */
+ { 26225, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
+ { 26244, 0x0000821C }, /* GL_MINOR_VERSION */
+ { 26261, 0x00008007 }, /* GL_MIN_EXT */
+ { 26272, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ { 26300, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */
+ { 26332, 0x00008370 }, /* GL_MIRRORED_REPEAT */
+ { 26351, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
+ { 26374, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
+ { 26397, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
+ { 26417, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
+ { 26437, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ { 26467, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
+ { 26495, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ { 26523, 0x00001700 }, /* GL_MODELVIEW */
+ { 26536, 0x00001700 }, /* GL_MODELVIEW0_ARB */
+ { 26554, 0x0000872A }, /* GL_MODELVIEW10_ARB */
+ { 26573, 0x0000872B }, /* GL_MODELVIEW11_ARB */
+ { 26592, 0x0000872C }, /* GL_MODELVIEW12_ARB */
+ { 26611, 0x0000872D }, /* GL_MODELVIEW13_ARB */
+ { 26630, 0x0000872E }, /* GL_MODELVIEW14_ARB */
+ { 26649, 0x0000872F }, /* GL_MODELVIEW15_ARB */
+ { 26668, 0x00008730 }, /* GL_MODELVIEW16_ARB */
+ { 26687, 0x00008731 }, /* GL_MODELVIEW17_ARB */
+ { 26706, 0x00008732 }, /* GL_MODELVIEW18_ARB */
+ { 26725, 0x00008733 }, /* GL_MODELVIEW19_ARB */
+ { 26744, 0x0000850A }, /* GL_MODELVIEW1_ARB */
+ { 26762, 0x00008734 }, /* GL_MODELVIEW20_ARB */
+ { 26781, 0x00008735 }, /* GL_MODELVIEW21_ARB */
+ { 26800, 0x00008736 }, /* GL_MODELVIEW22_ARB */
+ { 26819, 0x00008737 }, /* GL_MODELVIEW23_ARB */
+ { 26838, 0x00008738 }, /* GL_MODELVIEW24_ARB */
+ { 26857, 0x00008739 }, /* GL_MODELVIEW25_ARB */
+ { 26876, 0x0000873A }, /* GL_MODELVIEW26_ARB */
+ { 26895, 0x0000873B }, /* GL_MODELVIEW27_ARB */
+ { 26914, 0x0000873C }, /* GL_MODELVIEW28_ARB */
+ { 26933, 0x0000873D }, /* GL_MODELVIEW29_ARB */
+ { 26952, 0x00008722 }, /* GL_MODELVIEW2_ARB */
+ { 26970, 0x0000873E }, /* GL_MODELVIEW30_ARB */
+ { 26989, 0x0000873F }, /* GL_MODELVIEW31_ARB */
+ { 27008, 0x00008723 }, /* GL_MODELVIEW3_ARB */
+ { 27026, 0x00008724 }, /* GL_MODELVIEW4_ARB */
+ { 27044, 0x00008725 }, /* GL_MODELVIEW5_ARB */
+ { 27062, 0x00008726 }, /* GL_MODELVIEW6_ARB */
+ { 27080, 0x00008727 }, /* GL_MODELVIEW7_ARB */
+ { 27098, 0x00008728 }, /* GL_MODELVIEW8_ARB */
+ { 27116, 0x00008729 }, /* GL_MODELVIEW9_ARB */
+ { 27134, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
+ { 27154, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 27196, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
+ { 27223, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
+ { 27248, 0x00002100 }, /* GL_MODULATE */
+ { 27260, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
+ { 27280, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
+ { 27307, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
+ { 27332, 0x00000103 }, /* GL_MULT */
+ { 27340, 0x0000809D }, /* GL_MULTISAMPLE */
+ { 27355, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
+ { 27375, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
+ { 27394, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
+ { 27413, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
+ { 27437, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
+ { 27460, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ { 27490, 0x00002A25 }, /* GL_N3F_V3F */
+ { 27501, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
+ { 27521, 0x0000150E }, /* GL_NAND */
+ { 27529, 0x00002600 }, /* GL_NEAREST */
+ { 27540, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ { 27571, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ { 27603, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
+ { 27628, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
+ { 27654, 0x00000200 }, /* GL_NEVER */
+ { 27663, 0x00001102 }, /* GL_NICEST */
+ { 27673, 0x00000000 }, /* GL_NONE */
+ { 27681, 0x00000000 }, /* GL_NONE_OES */
+ { 27693, 0x00001505 }, /* GL_NOOP */
+ { 27701, 0x00001508 }, /* GL_NOR */
+ { 27708, 0x00000BA1 }, /* GL_NORMALIZE */
+ { 27721, 0x00008075 }, /* GL_NORMAL_ARRAY */
+ { 27737, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ { 27768, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
+ { 27803, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
+ { 27827, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
+ { 27850, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
+ { 27871, 0x00008511 }, /* GL_NORMAL_MAP */
+ { 27885, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
+ { 27903, 0x00008511 }, /* GL_NORMAL_MAP_NV */
+ { 27920, 0x00008511 }, /* GL_NORMAL_MAP_OES */
+ { 27938, 0x00000205 }, /* GL_NOTEQUAL */
+ { 27950, 0x00000000 }, /* GL_NO_ERROR */
+ { 27962, 0x00008261 }, /* GL_NO_RESET_NOTIFICATION_ARB */
+ { 27991, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ { 28025, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
+ { 28063, 0x0000821D }, /* GL_NUM_EXTENSIONS */
+ { 28081, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS */
+ { 28111, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ { 28145, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
+ { 28174, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+ { 28206, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+ { 28248, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+ { 28278, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+ { 28318, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+ { 28349, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+ { 28378, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+ { 28406, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+ { 28436, 0x00002401 }, /* GL_OBJECT_LINEAR */
+ { 28453, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+ { 28479, 0x00002501 }, /* GL_OBJECT_PLANE */
+ { 28495, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+ { 28530, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+ { 28552, 0x00009112 }, /* GL_OBJECT_TYPE */
+ { 28567, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+ { 28586, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+ { 28616, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+ { 28637, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+ { 28665, 0x00000001 }, /* GL_ONE */
+ { 28672, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ { 28700, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+ { 28732, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ { 28760, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+ { 28792, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+ { 28815, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+ { 28838, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+ { 28861, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+ { 28884, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+ { 28902, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+ { 28924, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+ { 28946, 0x00008590 }, /* GL_OPERAND0_RGB */
+ { 28962, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+ { 28982, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+ { 29002, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+ { 29020, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+ { 29042, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+ { 29064, 0x00008591 }, /* GL_OPERAND1_RGB */
+ { 29080, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+ { 29100, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+ { 29120, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+ { 29138, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+ { 29160, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+ { 29182, 0x00008592 }, /* GL_OPERAND2_RGB */
+ { 29198, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+ { 29218, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+ { 29238, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+ { 29259, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+ { 29278, 0x00001507 }, /* GL_OR */
+ { 29284, 0x00000A01 }, /* GL_ORDER */
+ { 29293, 0x0000150D }, /* GL_OR_INVERTED */
+ { 29308, 0x0000150B }, /* GL_OR_REVERSE */
+ { 29322, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+ { 29339, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+ { 29357, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+ { 29378, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+ { 29398, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+ { 29416, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+ { 29435, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+ { 29455, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+ { 29475, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+ { 29493, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+ { 29512, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+ { 29537, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+ { 29561, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+ { 29582, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+ { 29604, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+ { 29626, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+ { 29651, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+ { 29675, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+ { 29696, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+ { 29718, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+ { 29740, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+ { 29762, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ { 29793, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+ { 29813, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ { 29838, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+ { 29858, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ { 29883, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+ { 29903, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ { 29928, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+ { 29948, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ { 29973, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+ { 29993, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ { 30018, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+ { 30038, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ { 30063, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+ { 30083, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ { 30108, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+ { 30128, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ { 30153, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+ { 30173, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ { 30198, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+ { 30218, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ { 30243, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+ { 30261, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
+ { 30282, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ { 30311, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+ { 30344, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+ { 30369, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
+ { 30392, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ { 30423, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+ { 30458, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+ { 30485, 0x00001B00 }, /* GL_POINT */
+ { 30494, 0x00000000 }, /* GL_POINTS */
+ { 30504, 0x00000002 }, /* GL_POINT_BIT */
+ { 30517, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+ { 30547, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+ { 30581, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+ { 30615, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+ { 30650, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ { 30679, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+ { 30712, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+ { 30745, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+ { 30779, 0x00000B11 }, /* GL_POINT_SIZE */
+ { 30793, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ { 30832, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
+ { 30856, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ { 30888, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ { 30919, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ { 30948, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+ { 30974, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+ { 30992, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+ { 31014, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+ { 31036, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+ { 31059, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+ { 31077, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+ { 31099, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+ { 31121, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+ { 31144, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+ { 31164, 0x00000B10 }, /* GL_POINT_SMOOTH */
+ { 31180, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+ { 31201, 0x00008861 }, /* GL_POINT_SPRITE */
+ { 31217, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+ { 31237, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ { 31266, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+ { 31285, 0x00008861 }, /* GL_POINT_SPRITE_OES */
+ { 31305, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+ { 31331, 0x00000701 }, /* GL_POINT_TOKEN */
+ { 31346, 0x00000009 }, /* GL_POLYGON */
+ { 31357, 0x00000008 }, /* GL_POLYGON_BIT */
+ { 31372, 0x00000B40 }, /* GL_POLYGON_MODE */
+ { 31388, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+ { 31411, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+ { 31436, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+ { 31459, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+ { 31482, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+ { 31506, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+ { 31530, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+ { 31548, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+ { 31571, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+ { 31590, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+ { 31613, 0x00000703 }, /* GL_POLYGON_TOKEN */
+ { 31630, 0x00001203 }, /* GL_POSITION */
+ { 31642, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ { 31674, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+ { 31710, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ { 31743, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+ { 31780, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ { 31811, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+ { 31846, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ { 31878, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+ { 31914, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 31947, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ { 31979, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+ { 32015, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ { 32048, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+ { 32085, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ { 32115, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+ { 32149, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ { 32180, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+ { 32215, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ { 32246, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+ { 32281, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ { 32313, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+ { 32349, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ { 32379, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+ { 32413, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ { 32444, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+ { 32479, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ { 32511, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ { 32542, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+ { 32577, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ { 32609, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+ { 32645, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+ { 32674, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+ { 32707, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+ { 32737, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+ { 32771, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ { 32810, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ { 32843, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ { 32883, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ { 32917, 0x00008578 }, /* GL_PREVIOUS */
+ { 32929, 0x00008578 }, /* GL_PREVIOUS_ARB */
+ { 32945, 0x00008578 }, /* GL_PREVIOUS_EXT */
+ { 32961, 0x00008577 }, /* GL_PRIMARY_COLOR */
+ { 32978, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+ { 32999, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+ { 33020, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
+ { 33044, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
+ { 33072, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
+ { 33093, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
+ { 33120, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ { 33150, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
+ { 33174, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 33207, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 33239, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+ { 33262, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS */
+ { 33288, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ { 33318, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH */
+ { 33343, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
+ { 33372, 0x00008257 }, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
+ { 33407, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+ { 33430, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ { 33460, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+ { 33489, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+ { 33517, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+ { 33539, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ { 33567, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ { 33595, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+ { 33617, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+ { 33638, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 33678, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 33717, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 33747, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 33782, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 33815, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 33849, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 33888, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 33927, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+ { 33949, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+ { 33975, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+ { 33999, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
+ { 34021, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
+ { 34047, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+ { 34070, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+ { 34092, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+ { 34113, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+ { 34134, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+ { 34161, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 34193, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 34225, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ { 34260, 0x00001701 }, /* GL_PROJECTION */
+ { 34274, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+ { 34295, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 34338, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+ { 34364, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
+ { 34384, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
+ { 34408, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+ { 34429, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+ { 34448, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+ { 34471, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 34510, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ { 34548, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+ { 34568, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ { 34594, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ { 34624, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+ { 34648, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+ { 34668, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ { 34694, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ { 34724, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+ { 34748, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+ { 34768, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ { 34801, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ { 34827, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+ { 34857, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
+ { 34884, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ { 34915, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+ { 34945, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
+ { 34964, 0x00002003 }, /* GL_Q */
+ { 34969, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+ { 34994, 0x00000007 }, /* GL_QUADS */
+ { 35003, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ { 35047, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
+ { 35095, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+ { 35112, 0x00000008 }, /* GL_QUAD_STRIP */
+ { 35126, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
+ { 35153, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ { 35183, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
+ { 35207, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
+ { 35234, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+ { 35256, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+ { 35282, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
+ { 35299, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
+ { 35319, 0x00008866 }, /* GL_QUERY_RESULT */
+ { 35335, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+ { 35355, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+ { 35381, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+ { 35411, 0x00008E13 }, /* GL_QUERY_WAIT */
+ { 35425, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
+ { 35442, 0x00002002 }, /* GL_R */
+ { 35447, 0x00008C3A }, /* GL_R11F_G11F_B10F */
+ { 35465, 0x00008F98 }, /* GL_R16_SNORM */
+ { 35478, 0x00002A10 }, /* GL_R3_G3_B2 */
+ { 35490, 0x00008F94 }, /* GL_R8_SNORM */
+ { 35502, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
+ { 35524, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
+ { 35550, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ { 35583, 0x00000C02 }, /* GL_READ_BUFFER */
+ { 35598, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
+ { 35618, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
+ { 35646, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
+ { 35678, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
+ { 35702, 0x000088B8 }, /* GL_READ_ONLY */
+ { 35715, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+ { 35732, 0x000088BA }, /* GL_READ_WRITE */
+ { 35746, 0x000088BA }, /* GL_READ_WRITE_ARB */
+ { 35764, 0x00001903 }, /* GL_RED */
+ { 35771, 0x00008016 }, /* GL_REDUCE */
+ { 35781, 0x00008016 }, /* GL_REDUCE_EXT */
+ { 35795, 0x00000D15 }, /* GL_RED_BIAS */
+ { 35807, 0x00000D52 }, /* GL_RED_BITS */
+ { 35819, 0x00008D94 }, /* GL_RED_INTEGER */
+ { 35834, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
+ { 35853, 0x00000D14 }, /* GL_RED_SCALE */
+ { 35866, 0x00008F90 }, /* GL_RED_SNORM */
+ { 35879, 0x00008512 }, /* GL_REFLECTION_MAP */
+ { 35897, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+ { 35919, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+ { 35940, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
+ { 35962, 0x00008A19 }, /* GL_RELEASED_APPLE */
+ { 35980, 0x00001C00 }, /* GL_RENDER */
+ { 35990, 0x00008D41 }, /* GL_RENDERBUFFER */
+ { 36006, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ { 36033, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
+ { 36064, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
+ { 36088, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+ { 36116, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
+ { 36144, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
+ { 36170, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
+ { 36200, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ { 36227, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
+ { 36258, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+ { 36278, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
+ { 36305, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
+ { 36336, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
+ { 36359, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+ { 36386, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
+ { 36413, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ { 36445, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+ { 36481, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ { 36517, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
+ { 36537, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
+ { 36562, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
+ { 36591, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
+ { 36615, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
+ { 36643, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ { 36672, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
+ { 36705, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
+ { 36727, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+ { 36753, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
+ { 36779, 0x00001F01 }, /* GL_RENDERER */
+ { 36791, 0x00000C40 }, /* GL_RENDER_MODE */
+ { 36806, 0x00002901 }, /* GL_REPEAT */
+ { 36816, 0x00001E01 }, /* GL_REPLACE */
+ { 36827, 0x00008062 }, /* GL_REPLACE_EXT */
+ { 36842, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+ { 36865, 0x0000803A }, /* GL_RESCALE_NORMAL */
+ { 36883, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+ { 36905, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
+ { 36940, 0x00008A1B }, /* GL_RETAINED_APPLE */
+ { 36958, 0x00000102 }, /* GL_RETURN */
+ { 36968, 0x00008F99 }, /* GL_RG16_SNORM */
+ { 36982, 0x00008F95 }, /* GL_RG8_SNORM */
+ { 36995, 0x00001907 }, /* GL_RGB */
+ { 37002, 0x00008052 }, /* GL_RGB10 */
+ { 37011, 0x00008059 }, /* GL_RGB10_A2 */
+ { 37023, 0x00008059 }, /* GL_RGB10_A2_EXT */
+ { 37039, 0x00008052 }, /* GL_RGB10_EXT */
+ { 37052, 0x00008053 }, /* GL_RGB12 */
+ { 37061, 0x00008053 }, /* GL_RGB12_EXT */
+ { 37074, 0x00008054 }, /* GL_RGB16 */
+ { 37083, 0x0000881B }, /* GL_RGB16F */
+ { 37093, 0x00008D89 }, /* GL_RGB16I */
+ { 37103, 0x00008D89 }, /* GL_RGB16I_EXT */
+ { 37117, 0x00008D77 }, /* GL_RGB16UI */
+ { 37128, 0x00008D77 }, /* GL_RGB16UI_EXT */
+ { 37143, 0x00008054 }, /* GL_RGB16_EXT */
+ { 37156, 0x00008F9A }, /* GL_RGB16_SNORM */
+ { 37171, 0x0000804E }, /* GL_RGB2_EXT */
+ { 37183, 0x00008815 }, /* GL_RGB32F */
+ { 37193, 0x00008D83 }, /* GL_RGB32I */
+ { 37203, 0x00008D83 }, /* GL_RGB32I_EXT */
+ { 37217, 0x00008D71 }, /* GL_RGB32UI */
+ { 37228, 0x00008D71 }, /* GL_RGB32UI_EXT */
+ { 37243, 0x0000804F }, /* GL_RGB4 */
+ { 37251, 0x0000804F }, /* GL_RGB4_EXT */
+ { 37263, 0x000083A1 }, /* GL_RGB4_S3TC */
+ { 37276, 0x00008050 }, /* GL_RGB5 */
+ { 37284, 0x00008D62 }, /* GL_RGB565 */
+ { 37294, 0x00008D62 }, /* GL_RGB565_OES */
+ { 37308, 0x00008057 }, /* GL_RGB5_A1 */
+ { 37319, 0x00008057 }, /* GL_RGB5_A1_EXT */
+ { 37334, 0x00008057 }, /* GL_RGB5_A1_OES */
+ { 37349, 0x00008050 }, /* GL_RGB5_EXT */
+ { 37361, 0x00008051 }, /* GL_RGB8 */
+ { 37369, 0x00008D8F }, /* GL_RGB8I */
+ { 37378, 0x00008D8F }, /* GL_RGB8I_EXT */
+ { 37391, 0x00008D7D }, /* GL_RGB8UI */
+ { 37401, 0x00008D7D }, /* GL_RGB8UI_EXT */
+ { 37415, 0x00008051 }, /* GL_RGB8_EXT */
+ { 37427, 0x00008051 }, /* GL_RGB8_OES */
+ { 37439, 0x00008F96 }, /* GL_RGB8_SNORM */
+ { 37453, 0x00008C3D }, /* GL_RGB9_E5 */
+ { 37464, 0x00001908 }, /* GL_RGBA */
+ { 37472, 0x0000805A }, /* GL_RGBA12 */
+ { 37482, 0x0000805A }, /* GL_RGBA12_EXT */
+ { 37496, 0x0000805B }, /* GL_RGBA16 */
+ { 37506, 0x0000881A }, /* GL_RGBA16F */
+ { 37517, 0x00008D88 }, /* GL_RGBA16I */
+ { 37528, 0x00008D88 }, /* GL_RGBA16I_EXT */
+ { 37543, 0x00008D76 }, /* GL_RGBA16UI */
+ { 37555, 0x00008D76 }, /* GL_RGBA16UI_EXT */
+ { 37571, 0x0000805B }, /* GL_RGBA16_EXT */
+ { 37585, 0x00008F9B }, /* GL_RGBA16_SNORM */
+ { 37601, 0x00008055 }, /* GL_RGBA2 */
+ { 37610, 0x00008055 }, /* GL_RGBA2_EXT */
+ { 37623, 0x00008814 }, /* GL_RGBA32F */
+ { 37634, 0x00008D82 }, /* GL_RGBA32I */
+ { 37645, 0x00008D82 }, /* GL_RGBA32I_EXT */
+ { 37660, 0x00008D70 }, /* GL_RGBA32UI */
+ { 37672, 0x00008D70 }, /* GL_RGBA32UI_EXT */
+ { 37688, 0x00008056 }, /* GL_RGBA4 */
+ { 37697, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+ { 37716, 0x00008056 }, /* GL_RGBA4_EXT */
+ { 37729, 0x00008056 }, /* GL_RGBA4_OES */
+ { 37742, 0x000083A3 }, /* GL_RGBA4_S3TC */
+ { 37756, 0x00008058 }, /* GL_RGBA8 */
+ { 37765, 0x00008D8E }, /* GL_RGBA8I */
+ { 37775, 0x00008D8E }, /* GL_RGBA8I_EXT */
+ { 37789, 0x00008D7C }, /* GL_RGBA8UI */
+ { 37800, 0x00008D7C }, /* GL_RGBA8UI_EXT */
+ { 37815, 0x00008058 }, /* GL_RGBA8_EXT */
+ { 37828, 0x00008058 }, /* GL_RGBA8_OES */
+ { 37841, 0x00008F97 }, /* GL_RGBA8_SNORM */
+ { 37856, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+ { 37874, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */
+ { 37897, 0x00008D99 }, /* GL_RGBA_INTEGER */
+ { 37913, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
+ { 37933, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
+ { 37958, 0x00000C31 }, /* GL_RGBA_MODE */
+ { 37971, 0x000083A2 }, /* GL_RGBA_S3TC */
+ { 37984, 0x00008F93 }, /* GL_RGBA_SNORM */
+ { 37998, 0x00008D98 }, /* GL_RGB_INTEGER */
+ { 38013, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
+ { 38032, 0x000083A0 }, /* GL_RGB_S3TC */
+ { 38044, 0x00008573 }, /* GL_RGB_SCALE */
+ { 38057, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+ { 38074, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+ { 38091, 0x00008F92 }, /* GL_RGB_SNORM */
+ { 38104, 0x00008F91 }, /* GL_RG_SNORM */
+ { 38116, 0x00000407 }, /* GL_RIGHT */
+ { 38125, 0x00002000 }, /* GL_S */
+ { 38130, 0x00008B5D }, /* GL_SAMPLER_1D */
+ { 38144, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
+ { 38164, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
+ { 38188, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ { 38215, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
+ { 38246, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
+ { 38267, 0x00008B5E }, /* GL_SAMPLER_2D */
+ { 38281, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
+ { 38301, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
+ { 38325, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ { 38352, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
+ { 38383, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
+ { 38402, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
+ { 38428, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
+ { 38449, 0x00008B5F }, /* GL_SAMPLER_3D */
+ { 38463, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
+ { 38481, 0x00008919 }, /* GL_SAMPLER_BINDING */
+ { 38500, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
+ { 38518, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
+ { 38540, 0x00008B60 }, /* GL_SAMPLER_CUBE */
+ { 38556, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
+ { 38579, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
+ { 38606, 0x000080A9 }, /* GL_SAMPLES */
+ { 38617, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+ { 38633, 0x000080A9 }, /* GL_SAMPLES_ARB */
+ { 38648, 0x00008914 }, /* GL_SAMPLES_PASSED */
+ { 38666, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+ { 38688, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ { 38716, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+ { 38748, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+ { 38771, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+ { 38798, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+ { 38816, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+ { 38839, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+ { 38861, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+ { 38880, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+ { 38903, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+ { 38929, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+ { 38959, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+ { 38984, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+ { 39013, 0x00080000 }, /* GL_SCISSOR_BIT */
+ { 39028, 0x00000C10 }, /* GL_SCISSOR_BOX */
+ { 39043, 0x00000C11 }, /* GL_SCISSOR_TEST */
+ { 39059, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+ { 39084, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ { 39124, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 39168, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ { 39201, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ { 39231, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ { 39263, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ { 39293, 0x00001C02 }, /* GL_SELECT */
+ { 39303, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+ { 39331, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+ { 39356, 0x00008012 }, /* GL_SEPARABLE_2D */
+ { 39372, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
+ { 39392, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
+ { 39416, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+ { 39443, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+ { 39474, 0x0000150F }, /* GL_SET */
+ { 39481, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
+ { 39506, 0x00008DFA }, /* GL_SHADER_COMPILER */
+ { 39525, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+ { 39546, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
+ { 39570, 0x00008B4F }, /* GL_SHADER_TYPE */
+ { 39585, 0x00000B54 }, /* GL_SHADE_MODEL */
+ { 39600, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
+ { 39628, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+ { 39651, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ { 39681, 0x00001601 }, /* GL_SHININESS */
+ { 39694, 0x00001402 }, /* GL_SHORT */
+ { 39703, 0x00009119 }, /* GL_SIGNALED */
+ { 39715, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
+ { 39736, 0x000081F9 }, /* GL_SINGLE_COLOR */
+ { 39752, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+ { 39772, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+ { 39791, 0x00008C46 }, /* GL_SLUMINANCE */
+ { 39805, 0x00008C47 }, /* GL_SLUMINANCE8 */
+ { 39820, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
+ { 39842, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
+ { 39862, 0x00001D01 }, /* GL_SMOOTH */
+ { 39872, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+ { 39905, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+ { 39932, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+ { 39965, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+ { 39992, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+ { 40009, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+ { 40030, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+ { 40051, 0x00008580 }, /* GL_SOURCE0_RGB */
+ { 40066, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+ { 40085, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+ { 40104, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+ { 40121, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+ { 40142, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+ { 40163, 0x00008581 }, /* GL_SOURCE1_RGB */
+ { 40178, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+ { 40197, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+ { 40216, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+ { 40233, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+ { 40254, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+ { 40275, 0x00008582 }, /* GL_SOURCE2_RGB */
+ { 40290, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+ { 40309, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+ { 40328, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+ { 40348, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+ { 40366, 0x00001202 }, /* GL_SPECULAR */
+ { 40378, 0x00002402 }, /* GL_SPHERE_MAP */
+ { 40392, 0x00001206 }, /* GL_SPOT_CUTOFF */
+ { 40407, 0x00001204 }, /* GL_SPOT_DIRECTION */
+ { 40425, 0x00001205 }, /* GL_SPOT_EXPONENT */
+ { 40442, 0x00008588 }, /* GL_SRC0_ALPHA */
+ { 40456, 0x00008580 }, /* GL_SRC0_RGB */
+ { 40468, 0x00008589 }, /* GL_SRC1_ALPHA */
+ { 40482, 0x00008581 }, /* GL_SRC1_RGB */
+ { 40494, 0x0000858A }, /* GL_SRC2_ALPHA */
+ { 40508, 0x00008582 }, /* GL_SRC2_RGB */
+ { 40520, 0x00000302 }, /* GL_SRC_ALPHA */
+ { 40533, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+ { 40555, 0x00000300 }, /* GL_SRC_COLOR */
+ { 40568, 0x00008C40 }, /* GL_SRGB */
+ { 40576, 0x00008C41 }, /* GL_SRGB8 */
+ { 40585, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
+ { 40601, 0x00008C42 }, /* GL_SRGB_ALPHA */
+ { 40615, 0x00000503 }, /* GL_STACK_OVERFLOW */
+ { 40633, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+ { 40652, 0x000088E6 }, /* GL_STATIC_COPY */
+ { 40667, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+ { 40686, 0x000088E4 }, /* GL_STATIC_DRAW */
+ { 40701, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+ { 40720, 0x000088E5 }, /* GL_STATIC_READ */
+ { 40735, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+ { 40754, 0x00001802 }, /* GL_STENCIL */
+ { 40765, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
+ { 40787, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+ { 40813, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
+ { 40839, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
+ { 40860, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
+ { 40885, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
+ { 40906, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
+ { 40931, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ { 40963, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
+ { 40999, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ { 41031, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
+ { 41067, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
+ { 41087, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
+ { 41114, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
+ { 41140, 0x00000D57 }, /* GL_STENCIL_BITS */
+ { 41156, 0x00008224 }, /* GL_STENCIL_BUFFER */
+ { 41174, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+ { 41196, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+ { 41219, 0x00000B94 }, /* GL_STENCIL_FAIL */
+ { 41235, 0x00000B92 }, /* GL_STENCIL_FUNC */
+ { 41251, 0x00001901 }, /* GL_STENCIL_INDEX */
+ { 41268, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
+ { 41286, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
+ { 41305, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+ { 41328, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+ { 41350, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
+ { 41372, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
+ { 41390, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+ { 41412, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
+ { 41434, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
+ { 41452, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+ { 41474, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
+ { 41496, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+ { 41517, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ { 41544, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+ { 41571, 0x00000B97 }, /* GL_STENCIL_REF */
+ { 41586, 0x00000B90 }, /* GL_STENCIL_TEST */
+ { 41602, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ { 41631, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+ { 41653, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+ { 41674, 0x00000C33 }, /* GL_STEREO */
+ { 41684, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
+ { 41708, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
+ { 41733, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
+ { 41757, 0x000088E2 }, /* GL_STREAM_COPY */
+ { 41772, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+ { 41791, 0x000088E0 }, /* GL_STREAM_DRAW */
+ { 41806, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+ { 41825, 0x000088E1 }, /* GL_STREAM_READ */
+ { 41840, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+ { 41859, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+ { 41876, 0x000084E7 }, /* GL_SUBTRACT */
+ { 41888, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+ { 41904, 0x00009113 }, /* GL_SYNC_CONDITION */
+ { 41922, 0x00009116 }, /* GL_SYNC_FENCE */
+ { 41936, 0x00009115 }, /* GL_SYNC_FLAGS */
+ { 41950, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
+ { 41977, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ { 42007, 0x00009114 }, /* GL_SYNC_STATUS */
+ { 42022, 0x00002001 }, /* GL_T */
+ { 42027, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+ { 42042, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+ { 42061, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+ { 42077, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+ { 42092, 0x00002A27 }, /* GL_T2F_V3F */
+ { 42103, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+ { 42122, 0x00002A28 }, /* GL_T4F_V4F */
+ { 42133, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+ { 42156, 0x00001702 }, /* GL_TEXTURE */
+ { 42167, 0x000084C0 }, /* GL_TEXTURE0 */
+ { 42179, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+ { 42195, 0x000084C1 }, /* GL_TEXTURE1 */
+ { 42207, 0x000084CA }, /* GL_TEXTURE10 */
+ { 42220, 0x000084CA }, /* GL_TEXTURE10_ARB */
+ { 42237, 0x000084CB }, /* GL_TEXTURE11 */
+ { 42250, 0x000084CB }, /* GL_TEXTURE11_ARB */
+ { 42267, 0x000084CC }, /* GL_TEXTURE12 */
+ { 42280, 0x000084CC }, /* GL_TEXTURE12_ARB */
+ { 42297, 0x000084CD }, /* GL_TEXTURE13 */
+ { 42310, 0x000084CD }, /* GL_TEXTURE13_ARB */
+ { 42327, 0x000084CE }, /* GL_TEXTURE14 */
+ { 42340, 0x000084CE }, /* GL_TEXTURE14_ARB */
+ { 42357, 0x000084CF }, /* GL_TEXTURE15 */
+ { 42370, 0x000084CF }, /* GL_TEXTURE15_ARB */
+ { 42387, 0x000084D0 }, /* GL_TEXTURE16 */
+ { 42400, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+ { 42417, 0x000084D1 }, /* GL_TEXTURE17 */
+ { 42430, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+ { 42447, 0x000084D2 }, /* GL_TEXTURE18 */
+ { 42460, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+ { 42477, 0x000084D3 }, /* GL_TEXTURE19 */
+ { 42490, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+ { 42507, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+ { 42523, 0x000084C2 }, /* GL_TEXTURE2 */
+ { 42535, 0x000084D4 }, /* GL_TEXTURE20 */
+ { 42548, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+ { 42565, 0x000084D5 }, /* GL_TEXTURE21 */
+ { 42578, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+ { 42595, 0x000084D6 }, /* GL_TEXTURE22 */
+ { 42608, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+ { 42625, 0x000084D7 }, /* GL_TEXTURE23 */
+ { 42638, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+ { 42655, 0x000084D8 }, /* GL_TEXTURE24 */
+ { 42668, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+ { 42685, 0x000084D9 }, /* GL_TEXTURE25 */
+ { 42698, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+ { 42715, 0x000084DA }, /* GL_TEXTURE26 */
+ { 42728, 0x000084DA }, /* GL_TEXTURE26_ARB */
+ { 42745, 0x000084DB }, /* GL_TEXTURE27 */
+ { 42758, 0x000084DB }, /* GL_TEXTURE27_ARB */
+ { 42775, 0x000084DC }, /* GL_TEXTURE28 */
+ { 42788, 0x000084DC }, /* GL_TEXTURE28_ARB */
+ { 42805, 0x000084DD }, /* GL_TEXTURE29 */
+ { 42818, 0x000084DD }, /* GL_TEXTURE29_ARB */
+ { 42835, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+ { 42851, 0x000084C3 }, /* GL_TEXTURE3 */
+ { 42863, 0x000084DE }, /* GL_TEXTURE30 */
+ { 42876, 0x000084DE }, /* GL_TEXTURE30_ARB */
+ { 42893, 0x000084DF }, /* GL_TEXTURE31 */
+ { 42906, 0x000084DF }, /* GL_TEXTURE31_ARB */
+ { 42923, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+ { 42939, 0x000084C4 }, /* GL_TEXTURE4 */
+ { 42951, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+ { 42967, 0x000084C5 }, /* GL_TEXTURE5 */
+ { 42979, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+ { 42995, 0x000084C6 }, /* GL_TEXTURE6 */
+ { 43007, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+ { 43023, 0x000084C7 }, /* GL_TEXTURE7 */
+ { 43035, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+ { 43051, 0x000084C8 }, /* GL_TEXTURE8 */
+ { 43063, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+ { 43079, 0x000084C9 }, /* GL_TEXTURE9 */
+ { 43091, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+ { 43107, 0x00000DE0 }, /* GL_TEXTURE_1D */
+ { 43121, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
+ { 43141, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
+ { 43165, 0x00000DE1 }, /* GL_TEXTURE_2D */
+ { 43179, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
+ { 43199, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
+ { 43223, 0x0000806F }, /* GL_TEXTURE_3D */
+ { 43237, 0x0000806F }, /* GL_TEXTURE_3D_OES */
+ { 43255, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+ { 43277, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+ { 43303, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+ { 43325, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+ { 43347, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ { 43375, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ { 43407, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+ { 43429, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ { 43457, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ { 43489, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+ { 43511, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
+ { 43537, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
+ { 43563, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */
+ { 43593, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ { 43621, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+ { 43653, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
+ { 43685, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
+ { 43714, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ { 43747, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+ { 43779, 0x00040000 }, /* GL_TEXTURE_BIT */
+ { 43794, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+ { 43815, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+ { 43840, 0x00001005 }, /* GL_TEXTURE_BORDER */
+ { 43858, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+ { 43882, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
+ { 43900, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */
+ { 43922, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ { 43959, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */
+ { 44000, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
+ { 44025, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */
+ { 44054, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ { 44085, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ { 44115, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ { 44145, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ { 44180, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ { 44211, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 44249, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ { 44276, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ { 44308, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ { 44342, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+ { 44366, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+ { 44394, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+ { 44418, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+ { 44446, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ { 44479, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+ { 44503, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+ { 44525, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+ { 44547, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+ { 44573, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+ { 44607, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ { 44640, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+ { 44677, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+ { 44705, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+ { 44737, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+ { 44760, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ { 44798, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+ { 44840, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ { 44871, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ { 44899, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ { 44929, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ { 44957, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
+ { 44982, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+ { 45002, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+ { 45026, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ { 45057, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+ { 45092, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
+ { 45127, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ { 45158, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+ { 45193, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
+ { 45228, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ { 45259, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+ { 45294, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
+ { 45329, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
+ { 45353, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ { 45384, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+ { 45419, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
+ { 45454, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ { 45485, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+ { 45520, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
+ { 45555, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ { 45586, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+ { 45621, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
+ { 45656, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ { 45685, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+ { 45702, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+ { 45724, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+ { 45750, 0x00002300 }, /* GL_TEXTURE_ENV */
+ { 45765, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+ { 45786, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+ { 45806, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+ { 45832, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
+ { 45862, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+ { 45882, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
+ { 45906, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+ { 45923, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+ { 45940, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+ { 45957, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
+ { 45980, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+ { 45997, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ { 46022, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+ { 46044, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+ { 46070, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+ { 46088, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ { 46114, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+ { 46140, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+ { 46170, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+ { 46197, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ { 46222, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+ { 46242, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+ { 46266, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ { 46293, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ { 46320, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ { 46347, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+ { 46373, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+ { 46403, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+ { 46425, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+ { 46443, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 46483, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 46513, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ { 46541, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ { 46569, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ { 46597, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+ { 46618, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+ { 46637, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+ { 46659, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+ { 46678, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+ { 46698, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ { 46728, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ { 46759, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
+ { 46780, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+ { 46805, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+ { 46829, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+ { 46849, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+ { 46873, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+ { 46893, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
+ { 46916, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+ { 46939, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
+ { 46963, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
+ { 46991, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ { 47021, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+ { 47046, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ { 47080, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+ { 47097, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+ { 47115, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
+ { 47137, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+ { 47155, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+ { 47173, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
+ { 47192, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
+ { 47212, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+ { 47231, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ { 47260, 0x00001000 }, /* GL_TRANSFORM_BIT */
+ { 47277, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
+ { 47299, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ { 47329, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ { 47358, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ { 47394, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ { 47431, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ { 47472, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ { 47505, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ { 47539, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ { 47577, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ { 47613, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ { 47647, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ { 47685, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ { 47720, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ { 47759, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ { 47800, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ { 47845, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ { 47876, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ { 47911, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ { 47952, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ { 47997, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+ { 48023, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+ { 48053, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ { 48085, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ { 48115, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+ { 48149, 0x0000862C }, /* GL_TRANSPOSE_NV */
+ { 48165, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ { 48196, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+ { 48231, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ { 48259, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+ { 48291, 0x00000004 }, /* GL_TRIANGLES */
+ { 48304, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
+ { 48327, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
+ { 48354, 0x00000006 }, /* GL_TRIANGLE_FAN */
+ { 48370, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+ { 48391, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+ { 48409, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ { 48437, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
+ { 48469, 0x00000001 }, /* GL_TRUE */
+ { 48477, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
+ { 48496, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
+ { 48525, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+ { 48545, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+ { 48568, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+ { 48588, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+ { 48609, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+ { 48631, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+ { 48653, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+ { 48673, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+ { 48694, 0x00009118 }, /* GL_UNSIGNALED */
+ { 48708, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+ { 48725, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ { 48752, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+ { 48775, 0x00001405 }, /* GL_UNSIGNED_INT */
+ { 48791, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ { 48823, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+ { 48850, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ { 48881, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
+ { 48902, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
+ { 48927, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+ { 48951, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
+ { 48976, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ { 49007, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
+ { 49042, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ { 49070, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+ { 49094, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ { 49122, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ { 49149, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ { 49182, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
+ { 49219, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
+ { 49250, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ { 49277, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ { 49310, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
+ { 49347, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
+ { 49378, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ { 49410, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
+ { 49446, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ { 49473, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
+ { 49504, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ { 49535, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
+ { 49570, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ { 49599, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
+ { 49632, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
+ { 49653, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
+ { 49678, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
+ { 49699, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
+ { 49724, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
+ { 49745, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
+ { 49770, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
+ { 49793, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+ { 49811, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ { 49841, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
+ { 49875, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ { 49901, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ { 49931, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
+ { 49965, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ { 49991, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+ { 50015, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ { 50043, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ { 50071, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+ { 50098, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ { 50130, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+ { 50161, 0x00008CA2 }, /* GL_UPPER_LEFT */
+ { 50175, 0x00002A20 }, /* GL_V2F */
+ { 50182, 0x00002A21 }, /* GL_V3F */
+ { 50189, 0x00008B83 }, /* GL_VALIDATE_STATUS */
+ { 50208, 0x00001F00 }, /* GL_VENDOR */
+ { 50218, 0x00001F02 }, /* GL_VERSION */
+ { 50229, 0x00008074 }, /* GL_VERTEX_ARRAY */
+ { 50245, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+ { 50269, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+ { 50299, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ { 50330, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+ { 50365, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+ { 50389, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+ { 50410, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+ { 50433, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+ { 50454, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ { 50481, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ { 50509, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ { 50537, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ { 50565, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ { 50593, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ { 50621, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ { 50649, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ { 50676, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ { 50703, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ { 50730, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ { 50757, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ { 50784, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ { 50811, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ { 50838, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ { 50865, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ { 50892, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ { 50930, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+ { 50972, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ { 51007, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ { 51038, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+ { 51073, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ { 51104, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
+ { 51139, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ { 51173, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+ { 51211, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ { 51242, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+ { 51277, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ { 51305, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+ { 51337, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ { 51367, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+ { 51401, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ { 51429, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+ { 51461, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+ { 51481, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+ { 51503, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ { 51532, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+ { 51553, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ { 51582, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+ { 51615, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+ { 51647, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ { 51674, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+ { 51705, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+ { 51735, 0x00008B31 }, /* GL_VERTEX_SHADER */
+ { 51752, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+ { 51773, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+ { 51800, 0x00000BA2 }, /* GL_VIEWPORT */
+ { 51812, 0x00000800 }, /* GL_VIEWPORT_BIT */
+ { 51828, 0x00008A1A }, /* GL_VOLATILE_APPLE */
+ { 51846, 0x0000911D }, /* GL_WAIT_FAILED */
+ { 51861, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+ { 51881, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ { 51912, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+ { 51947, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
+ { 51982, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
+ { 52002, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ { 52030, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
+ { 52058, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ { 52083, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
+ { 52108, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ { 52135, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
+ { 52162, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ { 52187, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
+ { 52212, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+ { 52236, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+ { 52255, 0x000088B9 }, /* GL_WRITE_ONLY */
+ { 52269, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+ { 52287, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
+ { 52305, 0x00001506 }, /* GL_XOR */
+ { 52312, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+ { 52331, 0x00008757 }, /* GL_YCBCR_MESA */
+ { 52345, 0x00000000 }, /* GL_ZERO */
+ { 52353, 0x00000D16 }, /* GL_ZOOM_X */
+ { 52363, 0x00000D17 }, /* GL_ZOOM_Y */
};
static const unsigned reduced_enums[1564] =
{
- 539, /* GL_FALSE */
- 835, /* GL_LINES */
- 839, /* GL_LINE_LOOP */
- 846, /* GL_LINE_STRIP */
- 2157, /* GL_TRIANGLES */
- 2162, /* GL_TRIANGLE_STRIP */
- 2160, /* GL_TRIANGLE_FAN */
- 1522, /* GL_QUADS */
- 1526, /* GL_QUAD_STRIP */
- 1390, /* GL_POLYGON */
- 836, /* GL_LINES_ADJACENCY */
- 847, /* GL_LINE_STRIP_ADJACENCY */
- 2158, /* GL_TRIANGLES_ADJACENCY */
- 2163, /* GL_TRIANGLE_STRIP_ADJACENCY */
- 1402, /* GL_POLYGON_STIPPLE_BIT */
- 1345, /* GL_PIXEL_MODE_BIT */
- 822, /* GL_LIGHTING_BIT */
- 573, /* GL_FOG_BIT */
+ 555, /* GL_FALSE */
+ 851, /* GL_LINES */
+ 855, /* GL_LINE_LOOP */
+ 862, /* GL_LINE_STRIP */
+ 2174, /* GL_TRIANGLES */
+ 2179, /* GL_TRIANGLE_STRIP */
+ 2177, /* GL_TRIANGLE_FAN */
+ 1539, /* GL_QUADS */
+ 1543, /* GL_QUAD_STRIP */
+ 1407, /* GL_POLYGON */
+ 852, /* GL_LINES_ADJACENCY */
+ 863, /* GL_LINE_STRIP_ADJACENCY */
+ 2175, /* GL_TRIANGLES_ADJACENCY */
+ 2180, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ 1419, /* GL_POLYGON_STIPPLE_BIT */
+ 1362, /* GL_PIXEL_MODE_BIT */
+ 838, /* GL_LIGHTING_BIT */
+ 589, /* GL_FOG_BIT */
8, /* GL_ACCUM */
- 858, /* GL_LOAD */
- 1612, /* GL_RETURN */
- 1210, /* GL_MULT */
+ 874, /* GL_LOAD */
+ 1629, /* GL_RETURN */
+ 1227, /* GL_MULT */
24, /* GL_ADD */
- 1226, /* GL_NEVER */
- 812, /* GL_LESS */
- 529, /* GL_EQUAL */
- 811, /* GL_LEQUAL */
- 696, /* GL_GREATER */
- 1243, /* GL_NOTEQUAL */
- 695, /* GL_GEQUAL */
+ 1243, /* GL_NEVER */
+ 828, /* GL_LESS */
+ 545, /* GL_EQUAL */
+ 827, /* GL_LEQUAL */
+ 712, /* GL_GREATER */
+ 1260, /* GL_NOTEQUAL */
+ 711, /* GL_GEQUAL */
55, /* GL_ALWAYS */
- 1821, /* GL_SRC_COLOR */
- 1278, /* GL_ONE_MINUS_SRC_COLOR */
- 1819, /* GL_SRC_ALPHA */
- 1277, /* GL_ONE_MINUS_SRC_ALPHA */
- 508, /* GL_DST_ALPHA */
- 1275, /* GL_ONE_MINUS_DST_ALPHA */
- 509, /* GL_DST_COLOR */
- 1276, /* GL_ONE_MINUS_DST_COLOR */
- 1820, /* GL_SRC_ALPHA_SATURATE */
- 672, /* GL_FRONT_LEFT */
- 673, /* GL_FRONT_RIGHT */
+ 1838, /* GL_SRC_COLOR */
+ 1295, /* GL_ONE_MINUS_SRC_COLOR */
+ 1836, /* GL_SRC_ALPHA */
+ 1294, /* GL_ONE_MINUS_SRC_ALPHA */
+ 524, /* GL_DST_ALPHA */
+ 1292, /* GL_ONE_MINUS_DST_ALPHA */
+ 525, /* GL_DST_COLOR */
+ 1293, /* GL_ONE_MINUS_DST_COLOR */
+ 1837, /* GL_SRC_ALPHA_SATURATE */
+ 688, /* GL_FRONT_LEFT */
+ 689, /* GL_FRONT_RIGHT */
77, /* GL_BACK_LEFT */
78, /* GL_BACK_RIGHT */
- 669, /* GL_FRONT */
+ 685, /* GL_FRONT */
76, /* GL_BACK */
- 810, /* GL_LEFT */
- 1702, /* GL_RIGHT */
- 670, /* GL_FRONT_AND_BACK */
+ 826, /* GL_LEFT */
+ 1719, /* GL_RIGHT */
+ 686, /* GL_FRONT_AND_BACK */
71, /* GL_AUX0 */
72, /* GL_AUX1 */
73, /* GL_AUX2 */
74, /* GL_AUX3 */
- 798, /* GL_INVALID_ENUM */
- 803, /* GL_INVALID_VALUE */
- 802, /* GL_INVALID_OPERATION */
- 1826, /* GL_STACK_OVERFLOW */
- 1827, /* GL_STACK_UNDERFLOW */
- 1303, /* GL_OUT_OF_MEMORY */
- 799, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ 814, /* GL_INVALID_ENUM */
+ 819, /* GL_INVALID_VALUE */
+ 818, /* GL_INVALID_OPERATION */
+ 1843, /* GL_STACK_OVERFLOW */
+ 1844, /* GL_STACK_UNDERFLOW */
+ 1320, /* GL_OUT_OF_MEMORY */
+ 815, /* GL_INVALID_FRAMEBUFFER_OPERATION */
0, /* GL_2D */
2, /* GL_3D */
3, /* GL_3D_COLOR */
4, /* GL_3D_COLOR_TEXTURE */
6, /* GL_4D_COLOR_TEXTURE */
- 1323, /* GL_PASS_THROUGH_TOKEN */
- 1389, /* GL_POINT_TOKEN */
- 849, /* GL_LINE_TOKEN */
- 1403, /* GL_POLYGON_TOKEN */
+ 1340, /* GL_PASS_THROUGH_TOKEN */
+ 1406, /* GL_POINT_TOKEN */
+ 865, /* GL_LINE_TOKEN */
+ 1420, /* GL_POLYGON_TOKEN */
87, /* GL_BITMAP_TOKEN */
- 507, /* GL_DRAW_PIXEL_TOKEN */
+ 523, /* GL_DRAW_PIXEL_TOKEN */
353, /* GL_COPY_PIXEL_TOKEN */
- 840, /* GL_LINE_RESET_TOKEN */
- 532, /* GL_EXP */
- 533, /* GL_EXP2 */
+ 856, /* GL_LINE_RESET_TOKEN */
+ 548, /* GL_EXP */
+ 549, /* GL_EXP2 */
390, /* GL_CW */
154, /* GL_CCW */
187, /* GL_COEFF */
- 1300, /* GL_ORDER */
+ 1317, /* GL_ORDER */
444, /* GL_DOMAIN */
363, /* GL_CURRENT_COLOR */
366, /* GL_CURRENT_INDEX */
@@ -4771,67 +4805,67 @@ static const unsigned reduced_enums[1564] =
381, /* GL_CURRENT_RASTER_POSITION */
382, /* GL_CURRENT_RASTER_POSITION_VALID */
379, /* GL_CURRENT_RASTER_DISTANCE */
- 1381, /* GL_POINT_SMOOTH */
- 1365, /* GL_POINT_SIZE */
- 1380, /* GL_POINT_SIZE_RANGE */
- 1371, /* GL_POINT_SIZE_GRANULARITY */
- 841, /* GL_LINE_SMOOTH */
- 850, /* GL_LINE_WIDTH */
- 852, /* GL_LINE_WIDTH_RANGE */
- 851, /* GL_LINE_WIDTH_GRANULARITY */
- 843, /* GL_LINE_STIPPLE */
- 844, /* GL_LINE_STIPPLE_PATTERN */
- 845, /* GL_LINE_STIPPLE_REPEAT */
- 857, /* GL_LIST_MODE */
- 1065, /* GL_MAX_LIST_NESTING */
- 854, /* GL_LIST_BASE */
- 856, /* GL_LIST_INDEX */
- 1392, /* GL_POLYGON_MODE */
- 1399, /* GL_POLYGON_SMOOTH */
- 1401, /* GL_POLYGON_STIPPLE */
- 518, /* GL_EDGE_FLAG */
+ 1398, /* GL_POINT_SMOOTH */
+ 1382, /* GL_POINT_SIZE */
+ 1397, /* GL_POINT_SIZE_RANGE */
+ 1388, /* GL_POINT_SIZE_GRANULARITY */
+ 857, /* GL_LINE_SMOOTH */
+ 866, /* GL_LINE_WIDTH */
+ 868, /* GL_LINE_WIDTH_RANGE */
+ 867, /* GL_LINE_WIDTH_GRANULARITY */
+ 859, /* GL_LINE_STIPPLE */
+ 860, /* GL_LINE_STIPPLE_PATTERN */
+ 861, /* GL_LINE_STIPPLE_REPEAT */
+ 873, /* GL_LIST_MODE */
+ 1082, /* GL_MAX_LIST_NESTING */
+ 870, /* GL_LIST_BASE */
+ 872, /* GL_LIST_INDEX */
+ 1409, /* GL_POLYGON_MODE */
+ 1416, /* GL_POLYGON_SMOOTH */
+ 1418, /* GL_POLYGON_STIPPLE */
+ 534, /* GL_EDGE_FLAG */
356, /* GL_CULL_FACE */
357, /* GL_CULL_FACE_MODE */
- 671, /* GL_FRONT_FACE */
- 821, /* GL_LIGHTING */
- 826, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- 827, /* GL_LIGHT_MODEL_TWO_SIDE */
- 823, /* GL_LIGHT_MODEL_AMBIENT */
- 1768, /* GL_SHADE_MODEL */
+ 687, /* GL_FRONT_FACE */
+ 837, /* GL_LIGHTING */
+ 842, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ 843, /* GL_LIGHT_MODEL_TWO_SIDE */
+ 839, /* GL_LIGHT_MODEL_AMBIENT */
+ 1785, /* GL_SHADE_MODEL */
235, /* GL_COLOR_MATERIAL_FACE */
236, /* GL_COLOR_MATERIAL_PARAMETER */
234, /* GL_COLOR_MATERIAL */
- 572, /* GL_FOG */
- 594, /* GL_FOG_INDEX */
- 590, /* GL_FOG_DENSITY */
- 598, /* GL_FOG_START */
- 592, /* GL_FOG_END */
- 595, /* GL_FOG_MODE */
- 574, /* GL_FOG_COLOR */
+ 588, /* GL_FOG */
+ 610, /* GL_FOG_INDEX */
+ 606, /* GL_FOG_DENSITY */
+ 614, /* GL_FOG_START */
+ 608, /* GL_FOG_END */
+ 611, /* GL_FOG_MODE */
+ 590, /* GL_FOG_COLOR */
429, /* GL_DEPTH_RANGE */
438, /* GL_DEPTH_TEST */
441, /* GL_DEPTH_WRITEMASK */
414, /* GL_DEPTH_CLEAR_VALUE */
428, /* GL_DEPTH_FUNC */
12, /* GL_ACCUM_CLEAR_VALUE */
- 1871, /* GL_STENCIL_TEST */
- 1852, /* GL_STENCIL_CLEAR_VALUE */
- 1854, /* GL_STENCIL_FUNC */
- 1873, /* GL_STENCIL_VALUE_MASK */
- 1853, /* GL_STENCIL_FAIL */
- 1868, /* GL_STENCIL_PASS_DEPTH_FAIL */
- 1869, /* GL_STENCIL_PASS_DEPTH_PASS */
- 1870, /* GL_STENCIL_REF */
- 1874, /* GL_STENCIL_WRITEMASK */
- 1015, /* GL_MATRIX_MODE */
- 1232, /* GL_NORMALIZE */
- 2290, /* GL_VIEWPORT */
- 1205, /* GL_MODELVIEW_STACK_DEPTH */
- 1496, /* GL_PROJECTION_STACK_DEPTH */
- 2111, /* GL_TEXTURE_STACK_DEPTH */
- 1202, /* GL_MODELVIEW_MATRIX */
- 1494, /* GL_PROJECTION_MATRIX */
- 2091, /* GL_TEXTURE_MATRIX */
+ 1888, /* GL_STENCIL_TEST */
+ 1869, /* GL_STENCIL_CLEAR_VALUE */
+ 1871, /* GL_STENCIL_FUNC */
+ 1890, /* GL_STENCIL_VALUE_MASK */
+ 1870, /* GL_STENCIL_FAIL */
+ 1885, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ 1886, /* GL_STENCIL_PASS_DEPTH_PASS */
+ 1887, /* GL_STENCIL_REF */
+ 1891, /* GL_STENCIL_WRITEMASK */
+ 1031, /* GL_MATRIX_MODE */
+ 1249, /* GL_NORMALIZE */
+ 2307, /* GL_VIEWPORT */
+ 1222, /* GL_MODELVIEW_STACK_DEPTH */
+ 1513, /* GL_PROJECTION_STACK_DEPTH */
+ 2128, /* GL_TEXTURE_STACK_DEPTH */
+ 1219, /* GL_MODELVIEW_MATRIX */
+ 1511, /* GL_PROJECTION_MATRIX */
+ 2108, /* GL_TEXTURE_MATRIX */
69, /* GL_ATTRIB_STACK_DEPTH */
169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
51, /* GL_ALPHA_TEST */
@@ -4841,267 +4875,267 @@ static const unsigned reduced_enums[1564] =
91, /* GL_BLEND_DST */
105, /* GL_BLEND_SRC */
88, /* GL_BLEND */
- 860, /* GL_LOGIC_OP_MODE */
- 745, /* GL_INDEX_LOGIC_OP */
+ 876, /* GL_LOGIC_OP_MODE */
+ 761, /* GL_INDEX_LOGIC_OP */
233, /* GL_COLOR_LOGIC_OP */
75, /* GL_AUX_BUFFERS */
454, /* GL_DRAW_BUFFER */
- 1549, /* GL_READ_BUFFER */
- 1745, /* GL_SCISSOR_BOX */
- 1746, /* GL_SCISSOR_TEST */
- 744, /* GL_INDEX_CLEAR_VALUE */
- 749, /* GL_INDEX_WRITEMASK */
+ 1566, /* GL_READ_BUFFER */
+ 1762, /* GL_SCISSOR_BOX */
+ 1763, /* GL_SCISSOR_TEST */
+ 760, /* GL_INDEX_CLEAR_VALUE */
+ 765, /* GL_INDEX_WRITEMASK */
230, /* GL_COLOR_CLEAR_VALUE */
272, /* GL_COLOR_WRITEMASK */
- 746, /* GL_INDEX_MODE */
- 1691, /* GL_RGBA_MODE */
+ 762, /* GL_INDEX_MODE */
+ 1708, /* GL_RGBA_MODE */
453, /* GL_DOUBLEBUFFER */
- 1875, /* GL_STEREO */
- 1603, /* GL_RENDER_MODE */
- 1324, /* GL_PERSPECTIVE_CORRECTION_HINT */
- 1382, /* GL_POINT_SMOOTH_HINT */
- 842, /* GL_LINE_SMOOTH_HINT */
- 1400, /* GL_POLYGON_SMOOTH_HINT */
- 593, /* GL_FOG_HINT */
- 2071, /* GL_TEXTURE_GEN_S */
- 2073, /* GL_TEXTURE_GEN_T */
- 2070, /* GL_TEXTURE_GEN_R */
- 2069, /* GL_TEXTURE_GEN_Q */
- 1337, /* GL_PIXEL_MAP_I_TO_I */
- 1343, /* GL_PIXEL_MAP_S_TO_S */
- 1339, /* GL_PIXEL_MAP_I_TO_R */
- 1335, /* GL_PIXEL_MAP_I_TO_G */
- 1333, /* GL_PIXEL_MAP_I_TO_B */
- 1331, /* GL_PIXEL_MAP_I_TO_A */
- 1341, /* GL_PIXEL_MAP_R_TO_R */
- 1329, /* GL_PIXEL_MAP_G_TO_G */
- 1327, /* GL_PIXEL_MAP_B_TO_B */
- 1325, /* GL_PIXEL_MAP_A_TO_A */
- 1338, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- 1344, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- 1340, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- 1336, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- 1334, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- 1332, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- 1342, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- 1330, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- 1328, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- 1326, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- 2175, /* GL_UNPACK_SWAP_BYTES */
- 2170, /* GL_UNPACK_LSB_FIRST */
- 2171, /* GL_UNPACK_ROW_LENGTH */
- 2174, /* GL_UNPACK_SKIP_ROWS */
- 2173, /* GL_UNPACK_SKIP_PIXELS */
- 2168, /* GL_UNPACK_ALIGNMENT */
- 1312, /* GL_PACK_SWAP_BYTES */
- 1307, /* GL_PACK_LSB_FIRST */
- 1308, /* GL_PACK_ROW_LENGTH */
- 1311, /* GL_PACK_SKIP_ROWS */
- 1310, /* GL_PACK_SKIP_PIXELS */
- 1304, /* GL_PACK_ALIGNMENT */
- 956, /* GL_MAP_COLOR */
- 961, /* GL_MAP_STENCIL */
- 748, /* GL_INDEX_SHIFT */
- 747, /* GL_INDEX_OFFSET */
- 1565, /* GL_RED_SCALE */
- 1561, /* GL_RED_BIAS */
- 2316, /* GL_ZOOM_X */
- 2317, /* GL_ZOOM_Y */
- 702, /* GL_GREEN_SCALE */
- 698, /* GL_GREEN_BIAS */
+ 1892, /* GL_STEREO */
+ 1620, /* GL_RENDER_MODE */
+ 1341, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ 1399, /* GL_POINT_SMOOTH_HINT */
+ 858, /* GL_LINE_SMOOTH_HINT */
+ 1417, /* GL_POLYGON_SMOOTH_HINT */
+ 609, /* GL_FOG_HINT */
+ 2088, /* GL_TEXTURE_GEN_S */
+ 2090, /* GL_TEXTURE_GEN_T */
+ 2087, /* GL_TEXTURE_GEN_R */
+ 2086, /* GL_TEXTURE_GEN_Q */
+ 1354, /* GL_PIXEL_MAP_I_TO_I */
+ 1360, /* GL_PIXEL_MAP_S_TO_S */
+ 1356, /* GL_PIXEL_MAP_I_TO_R */
+ 1352, /* GL_PIXEL_MAP_I_TO_G */
+ 1350, /* GL_PIXEL_MAP_I_TO_B */
+ 1348, /* GL_PIXEL_MAP_I_TO_A */
+ 1358, /* GL_PIXEL_MAP_R_TO_R */
+ 1346, /* GL_PIXEL_MAP_G_TO_G */
+ 1344, /* GL_PIXEL_MAP_B_TO_B */
+ 1342, /* GL_PIXEL_MAP_A_TO_A */
+ 1355, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ 1361, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ 1357, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ 1353, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ 1351, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ 1349, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ 1359, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ 1347, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ 1345, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ 1343, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ 2192, /* GL_UNPACK_SWAP_BYTES */
+ 2187, /* GL_UNPACK_LSB_FIRST */
+ 2188, /* GL_UNPACK_ROW_LENGTH */
+ 2191, /* GL_UNPACK_SKIP_ROWS */
+ 2190, /* GL_UNPACK_SKIP_PIXELS */
+ 2185, /* GL_UNPACK_ALIGNMENT */
+ 1329, /* GL_PACK_SWAP_BYTES */
+ 1324, /* GL_PACK_LSB_FIRST */
+ 1325, /* GL_PACK_ROW_LENGTH */
+ 1328, /* GL_PACK_SKIP_ROWS */
+ 1327, /* GL_PACK_SKIP_PIXELS */
+ 1321, /* GL_PACK_ALIGNMENT */
+ 972, /* GL_MAP_COLOR */
+ 977, /* GL_MAP_STENCIL */
+ 764, /* GL_INDEX_SHIFT */
+ 763, /* GL_INDEX_OFFSET */
+ 1582, /* GL_RED_SCALE */
+ 1578, /* GL_RED_BIAS */
+ 2333, /* GL_ZOOM_X */
+ 2334, /* GL_ZOOM_Y */
+ 718, /* GL_GREEN_SCALE */
+ 714, /* GL_GREEN_BIAS */
115, /* GL_BLUE_SCALE */
111, /* GL_BLUE_BIAS */
50, /* GL_ALPHA_SCALE */
47, /* GL_ALPHA_BIAS */
430, /* GL_DEPTH_SCALE */
406, /* GL_DEPTH_BIAS */
- 1047, /* GL_MAX_EVAL_ORDER */
- 1064, /* GL_MAX_LIGHTS */
- 1027, /* GL_MAX_CLIP_DISTANCES */
- 1120, /* GL_MAX_TEXTURE_SIZE */
- 1071, /* GL_MAX_PIXEL_MAP_TABLE */
- 1023, /* GL_MAX_ATTRIB_STACK_DEPTH */
- 1067, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- 1068, /* GL_MAX_NAME_STACK_DEPTH */
- 1099, /* GL_MAX_PROJECTION_STACK_DEPTH */
- 1121, /* GL_MAX_TEXTURE_STACK_DEPTH */
- 1147, /* GL_MAX_VIEWPORT_DIMS */
- 1024, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- 1885, /* GL_SUBPIXEL_BITS */
- 743, /* GL_INDEX_BITS */
- 1562, /* GL_RED_BITS */
- 699, /* GL_GREEN_BITS */
+ 1064, /* GL_MAX_EVAL_ORDER */
+ 1081, /* GL_MAX_LIGHTS */
+ 1043, /* GL_MAX_CLIP_DISTANCES */
+ 1137, /* GL_MAX_TEXTURE_SIZE */
+ 1088, /* GL_MAX_PIXEL_MAP_TABLE */
+ 1039, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ 1084, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ 1085, /* GL_MAX_NAME_STACK_DEPTH */
+ 1116, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ 1138, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ 1164, /* GL_MAX_VIEWPORT_DIMS */
+ 1040, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ 1902, /* GL_SUBPIXEL_BITS */
+ 759, /* GL_INDEX_BITS */
+ 1579, /* GL_RED_BITS */
+ 715, /* GL_GREEN_BITS */
112, /* GL_BLUE_BITS */
48, /* GL_ALPHA_BITS */
407, /* GL_DEPTH_BITS */
- 1849, /* GL_STENCIL_BITS */
+ 1866, /* GL_STENCIL_BITS */
14, /* GL_ACCUM_RED_BITS */
13, /* GL_ACCUM_GREEN_BITS */
10, /* GL_ACCUM_BLUE_BITS */
9, /* GL_ACCUM_ALPHA_BITS */
- 1219, /* GL_NAME_STACK_DEPTH */
+ 1236, /* GL_NAME_STACK_DEPTH */
70, /* GL_AUTO_NORMAL */
- 902, /* GL_MAP1_COLOR_4 */
- 905, /* GL_MAP1_INDEX */
- 906, /* GL_MAP1_NORMAL */
- 907, /* GL_MAP1_TEXTURE_COORD_1 */
- 908, /* GL_MAP1_TEXTURE_COORD_2 */
- 909, /* GL_MAP1_TEXTURE_COORD_3 */
- 910, /* GL_MAP1_TEXTURE_COORD_4 */
- 911, /* GL_MAP1_VERTEX_3 */
- 912, /* GL_MAP1_VERTEX_4 */
- 929, /* GL_MAP2_COLOR_4 */
- 932, /* GL_MAP2_INDEX */
- 933, /* GL_MAP2_NORMAL */
- 934, /* GL_MAP2_TEXTURE_COORD_1 */
- 935, /* GL_MAP2_TEXTURE_COORD_2 */
- 936, /* GL_MAP2_TEXTURE_COORD_3 */
- 937, /* GL_MAP2_TEXTURE_COORD_4 */
- 938, /* GL_MAP2_VERTEX_3 */
- 939, /* GL_MAP2_VERTEX_4 */
- 903, /* GL_MAP1_GRID_DOMAIN */
- 904, /* GL_MAP1_GRID_SEGMENTS */
- 930, /* GL_MAP2_GRID_DOMAIN */
- 931, /* GL_MAP2_GRID_SEGMENTS */
- 1968, /* GL_TEXTURE_1D */
- 1971, /* GL_TEXTURE_2D */
- 542, /* GL_FEEDBACK_BUFFER_POINTER */
- 543, /* GL_FEEDBACK_BUFFER_SIZE */
- 544, /* GL_FEEDBACK_BUFFER_TYPE */
- 1755, /* GL_SELECTION_BUFFER_POINTER */
- 1756, /* GL_SELECTION_BUFFER_SIZE */
- 2117, /* GL_TEXTURE_WIDTH */
- 2077, /* GL_TEXTURE_HEIGHT */
- 2021, /* GL_TEXTURE_COMPONENTS */
- 1999, /* GL_TEXTURE_BORDER_COLOR */
- 1998, /* GL_TEXTURE_BORDER */
+ 918, /* GL_MAP1_COLOR_4 */
+ 921, /* GL_MAP1_INDEX */
+ 922, /* GL_MAP1_NORMAL */
+ 923, /* GL_MAP1_TEXTURE_COORD_1 */
+ 924, /* GL_MAP1_TEXTURE_COORD_2 */
+ 925, /* GL_MAP1_TEXTURE_COORD_3 */
+ 926, /* GL_MAP1_TEXTURE_COORD_4 */
+ 927, /* GL_MAP1_VERTEX_3 */
+ 928, /* GL_MAP1_VERTEX_4 */
+ 945, /* GL_MAP2_COLOR_4 */
+ 948, /* GL_MAP2_INDEX */
+ 949, /* GL_MAP2_NORMAL */
+ 950, /* GL_MAP2_TEXTURE_COORD_1 */
+ 951, /* GL_MAP2_TEXTURE_COORD_2 */
+ 952, /* GL_MAP2_TEXTURE_COORD_3 */
+ 953, /* GL_MAP2_TEXTURE_COORD_4 */
+ 954, /* GL_MAP2_VERTEX_3 */
+ 955, /* GL_MAP2_VERTEX_4 */
+ 919, /* GL_MAP1_GRID_DOMAIN */
+ 920, /* GL_MAP1_GRID_SEGMENTS */
+ 946, /* GL_MAP2_GRID_DOMAIN */
+ 947, /* GL_MAP2_GRID_SEGMENTS */
+ 1985, /* GL_TEXTURE_1D */
+ 1988, /* GL_TEXTURE_2D */
+ 558, /* GL_FEEDBACK_BUFFER_POINTER */
+ 559, /* GL_FEEDBACK_BUFFER_SIZE */
+ 560, /* GL_FEEDBACK_BUFFER_TYPE */
+ 1772, /* GL_SELECTION_BUFFER_POINTER */
+ 1773, /* GL_SELECTION_BUFFER_SIZE */
+ 2134, /* GL_TEXTURE_WIDTH */
+ 2094, /* GL_TEXTURE_HEIGHT */
+ 2038, /* GL_TEXTURE_COMPONENTS */
+ 2016, /* GL_TEXTURE_BORDER_COLOR */
+ 2015, /* GL_TEXTURE_BORDER */
445, /* GL_DONT_CARE */
- 540, /* GL_FASTEST */
- 1227, /* GL_NICEST */
+ 556, /* GL_FASTEST */
+ 1244, /* GL_NICEST */
56, /* GL_AMBIENT */
442, /* GL_DIFFUSE */
- 1808, /* GL_SPECULAR */
- 1404, /* GL_POSITION */
- 1811, /* GL_SPOT_DIRECTION */
- 1812, /* GL_SPOT_EXPONENT */
- 1810, /* GL_SPOT_CUTOFF */
+ 1825, /* GL_SPECULAR */
+ 1421, /* GL_POSITION */
+ 1828, /* GL_SPOT_DIRECTION */
+ 1829, /* GL_SPOT_EXPONENT */
+ 1827, /* GL_SPOT_CUTOFF */
320, /* GL_CONSTANT_ATTENUATION */
- 830, /* GL_LINEAR_ATTENUATION */
- 1521, /* GL_QUADRATIC_ATTENUATION */
+ 846, /* GL_LINEAR_ATTENUATION */
+ 1538, /* GL_QUADRATIC_ATTENUATION */
287, /* GL_COMPILE */
288, /* GL_COMPILE_AND_EXECUTE */
149, /* GL_BYTE */
- 2177, /* GL_UNSIGNED_BYTE */
- 1773, /* GL_SHORT */
- 2216, /* GL_UNSIGNED_SHORT */
- 752, /* GL_INT */
- 2180, /* GL_UNSIGNED_INT */
- 553, /* GL_FLOAT */
+ 2194, /* GL_UNSIGNED_BYTE */
+ 1790, /* GL_SHORT */
+ 2233, /* GL_UNSIGNED_SHORT */
+ 768, /* GL_INT */
+ 2197, /* GL_UNSIGNED_INT */
+ 569, /* GL_FLOAT */
1, /* GL_2_BYTES */
5, /* GL_3_BYTES */
7, /* GL_4_BYTES */
452, /* GL_DOUBLE */
- 704, /* GL_HALF_FLOAT */
- 548, /* GL_FIXED */
+ 720, /* GL_HALF_FLOAT */
+ 564, /* GL_FIXED */
165, /* GL_CLEAR */
58, /* GL_AND */
60, /* GL_AND_REVERSE */
351, /* GL_COPY */
59, /* GL_AND_INVERTED */
- 1230, /* GL_NOOP */
- 2312, /* GL_XOR */
- 1299, /* GL_OR */
- 1231, /* GL_NOR */
- 530, /* GL_EQUIV */
- 806, /* GL_INVERT */
- 1302, /* GL_OR_REVERSE */
+ 1247, /* GL_NOOP */
+ 2329, /* GL_XOR */
+ 1316, /* GL_OR */
+ 1248, /* GL_NOR */
+ 546, /* GL_EQUIV */
+ 822, /* GL_INVERT */
+ 1319, /* GL_OR_REVERSE */
352, /* GL_COPY_INVERTED */
- 1301, /* GL_OR_INVERTED */
- 1220, /* GL_NAND */
- 1762, /* GL_SET */
- 527, /* GL_EMISSION */
- 1772, /* GL_SHININESS */
+ 1318, /* GL_OR_INVERTED */
+ 1237, /* GL_NAND */
+ 1779, /* GL_SET */
+ 543, /* GL_EMISSION */
+ 1789, /* GL_SHININESS */
57, /* GL_AMBIENT_AND_DIFFUSE */
232, /* GL_COLOR_INDEXES */
- 1169, /* GL_MODELVIEW */
- 1493, /* GL_PROJECTION */
- 1903, /* GL_TEXTURE */
+ 1186, /* GL_MODELVIEW */
+ 1510, /* GL_PROJECTION */
+ 1920, /* GL_TEXTURE */
188, /* GL_COLOR */
399, /* GL_DEPTH */
- 1834, /* GL_STENCIL */
+ 1851, /* GL_STENCIL */
231, /* GL_COLOR_INDEX */
- 1855, /* GL_STENCIL_INDEX */
+ 1872, /* GL_STENCIL_INDEX */
415, /* GL_DEPTH_COMPONENT */
- 1558, /* GL_RED */
- 697, /* GL_GREEN */
+ 1575, /* GL_RED */
+ 713, /* GL_GREEN */
110, /* GL_BLUE */
32, /* GL_ALPHA */
- 1615, /* GL_RGB */
- 1655, /* GL_RGBA */
- 865, /* GL_LUMINANCE */
- 892, /* GL_LUMINANCE_ALPHA */
+ 1632, /* GL_RGB */
+ 1672, /* GL_RGBA */
+ 881, /* GL_LUMINANCE */
+ 908, /* GL_LUMINANCE_ALPHA */
86, /* GL_BITMAP */
- 1354, /* GL_POINT */
- 828, /* GL_LINE */
- 545, /* GL_FILL */
- 1572, /* GL_RENDER */
- 541, /* GL_FEEDBACK */
- 1754, /* GL_SELECT */
- 552, /* GL_FLAT */
- 1783, /* GL_SMOOTH */
- 807, /* GL_KEEP */
- 1605, /* GL_REPLACE */
- 733, /* GL_INCR */
+ 1371, /* GL_POINT */
+ 844, /* GL_LINE */
+ 561, /* GL_FILL */
+ 1589, /* GL_RENDER */
+ 557, /* GL_FEEDBACK */
+ 1771, /* GL_SELECT */
+ 568, /* GL_FLAT */
+ 1800, /* GL_SMOOTH */
+ 823, /* GL_KEEP */
+ 1622, /* GL_REPLACE */
+ 749, /* GL_INCR */
395, /* GL_DECR */
- 2233, /* GL_VENDOR */
- 1602, /* GL_RENDERER */
- 2234, /* GL_VERSION */
- 534, /* GL_EXTENSIONS */
- 1703, /* GL_S */
- 1894, /* GL_T */
- 1541, /* GL_R */
- 1520, /* GL_Q */
- 1206, /* GL_MODULATE */
+ 2250, /* GL_VENDOR */
+ 1619, /* GL_RENDERER */
+ 2251, /* GL_VERSION */
+ 550, /* GL_EXTENSIONS */
+ 1720, /* GL_S */
+ 1911, /* GL_T */
+ 1558, /* GL_R */
+ 1537, /* GL_Q */
+ 1223, /* GL_MODULATE */
394, /* GL_DECAL */
- 2064, /* GL_TEXTURE_ENV_MODE */
- 2063, /* GL_TEXTURE_ENV_COLOR */
- 2062, /* GL_TEXTURE_ENV */
- 535, /* GL_EYE_LINEAR */
- 1260, /* GL_OBJECT_LINEAR */
- 1809, /* GL_SPHERE_MAP */
- 2067, /* GL_TEXTURE_GEN_MODE */
- 1262, /* GL_OBJECT_PLANE */
- 536, /* GL_EYE_PLANE */
- 1221, /* GL_NEAREST */
- 829, /* GL_LINEAR */
- 1225, /* GL_NEAREST_MIPMAP_NEAREST */
- 834, /* GL_LINEAR_MIPMAP_NEAREST */
- 1224, /* GL_NEAREST_MIPMAP_LINEAR */
- 833, /* GL_LINEAR_MIPMAP_LINEAR */
- 2090, /* GL_TEXTURE_MAG_FILTER */
- 2099, /* GL_TEXTURE_MIN_FILTER */
- 2120, /* GL_TEXTURE_WRAP_S */
- 2121, /* GL_TEXTURE_WRAP_T */
+ 2081, /* GL_TEXTURE_ENV_MODE */
+ 2080, /* GL_TEXTURE_ENV_COLOR */
+ 2079, /* GL_TEXTURE_ENV */
+ 551, /* GL_EYE_LINEAR */
+ 1277, /* GL_OBJECT_LINEAR */
+ 1826, /* GL_SPHERE_MAP */
+ 2084, /* GL_TEXTURE_GEN_MODE */
+ 1279, /* GL_OBJECT_PLANE */
+ 552, /* GL_EYE_PLANE */
+ 1238, /* GL_NEAREST */
+ 845, /* GL_LINEAR */
+ 1242, /* GL_NEAREST_MIPMAP_NEAREST */
+ 850, /* GL_LINEAR_MIPMAP_NEAREST */
+ 1241, /* GL_NEAREST_MIPMAP_LINEAR */
+ 849, /* GL_LINEAR_MIPMAP_LINEAR */
+ 2107, /* GL_TEXTURE_MAG_FILTER */
+ 2116, /* GL_TEXTURE_MIN_FILTER */
+ 2137, /* GL_TEXTURE_WRAP_S */
+ 2138, /* GL_TEXTURE_WRAP_T */
155, /* GL_CLAMP */
- 1604, /* GL_REPEAT */
- 1398, /* GL_POLYGON_OFFSET_UNITS */
- 1397, /* GL_POLYGON_OFFSET_POINT */
- 1396, /* GL_POLYGON_OFFSET_LINE */
- 1544, /* GL_R3_G3_B2 */
- 2230, /* GL_V2F */
- 2231, /* GL_V3F */
+ 1621, /* GL_REPEAT */
+ 1415, /* GL_POLYGON_OFFSET_UNITS */
+ 1414, /* GL_POLYGON_OFFSET_POINT */
+ 1413, /* GL_POLYGON_OFFSET_LINE */
+ 1561, /* GL_R3_G3_B2 */
+ 2247, /* GL_V2F */
+ 2248, /* GL_V3F */
152, /* GL_C4UB_V2F */
153, /* GL_C4UB_V3F */
150, /* GL_C3F_V3F */
- 1218, /* GL_N3F_V3F */
+ 1235, /* GL_N3F_V3F */
151, /* GL_C4F_N3F_V3F */
- 1899, /* GL_T2F_V3F */
- 1901, /* GL_T4F_V4F */
- 1897, /* GL_T2F_C4UB_V3F */
- 1895, /* GL_T2F_C3F_V3F */
- 1898, /* GL_T2F_N3F_V3F */
- 1896, /* GL_T2F_C4F_N3F_V3F */
- 1900, /* GL_T4F_C4F_N3F_V4F */
+ 1916, /* GL_T2F_V3F */
+ 1918, /* GL_T4F_V4F */
+ 1914, /* GL_T2F_C4UB_V3F */
+ 1912, /* GL_T2F_C3F_V3F */
+ 1915, /* GL_T2F_N3F_V3F */
+ 1913, /* GL_T2F_C4F_N3F_V3F */
+ 1917, /* GL_T4F_C4F_N3F_V4F */
172, /* GL_CLIP_DISTANCE0 */
173, /* GL_CLIP_DISTANCE1 */
174, /* GL_CLIP_DISTANCE2 */
@@ -5110,184 +5144,184 @@ static const unsigned reduced_enums[1564] =
177, /* GL_CLIP_DISTANCE5 */
178, /* GL_CLIP_DISTANCE6 */
179, /* GL_CLIP_DISTANCE7 */
- 813, /* GL_LIGHT0 */
- 814, /* GL_LIGHT1 */
- 815, /* GL_LIGHT2 */
- 816, /* GL_LIGHT3 */
- 817, /* GL_LIGHT4 */
- 818, /* GL_LIGHT5 */
- 819, /* GL_LIGHT6 */
- 820, /* GL_LIGHT7 */
- 708, /* GL_HINT_BIT */
+ 829, /* GL_LIGHT0 */
+ 830, /* GL_LIGHT1 */
+ 831, /* GL_LIGHT2 */
+ 832, /* GL_LIGHT3 */
+ 833, /* GL_LIGHT4 */
+ 834, /* GL_LIGHT5 */
+ 835, /* GL_LIGHT6 */
+ 836, /* GL_LIGHT7 */
+ 724, /* GL_HINT_BIT */
322, /* GL_CONSTANT_COLOR */
- 1273, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ 1290, /* GL_ONE_MINUS_CONSTANT_COLOR */
317, /* GL_CONSTANT_ALPHA */
- 1271, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ 1288, /* GL_ONE_MINUS_CONSTANT_ALPHA */
89, /* GL_BLEND_COLOR */
- 674, /* GL_FUNC_ADD */
- 1150, /* GL_MIN */
- 1018, /* GL_MAX */
+ 690, /* GL_FUNC_ADD */
+ 1167, /* GL_MIN */
+ 1034, /* GL_MAX */
96, /* GL_BLEND_EQUATION */
- 680, /* GL_FUNC_SUBTRACT */
- 677, /* GL_FUNC_REVERSE_SUBTRACT */
+ 696, /* GL_FUNC_SUBTRACT */
+ 693, /* GL_FUNC_REVERSE_SUBTRACT */
331, /* GL_CONVOLUTION_1D */
332, /* GL_CONVOLUTION_2D */
- 1757, /* GL_SEPARABLE_2D */
+ 1774, /* GL_SEPARABLE_2D */
335, /* GL_CONVOLUTION_BORDER_MODE */
339, /* GL_CONVOLUTION_FILTER_SCALE */
337, /* GL_CONVOLUTION_FILTER_BIAS */
- 1559, /* GL_REDUCE */
+ 1576, /* GL_REDUCE */
341, /* GL_CONVOLUTION_FORMAT */
345, /* GL_CONVOLUTION_WIDTH */
343, /* GL_CONVOLUTION_HEIGHT */
- 1037, /* GL_MAX_CONVOLUTION_WIDTH */
- 1035, /* GL_MAX_CONVOLUTION_HEIGHT */
- 1437, /* GL_POST_CONVOLUTION_RED_SCALE */
- 1433, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- 1428, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- 1424, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- 1435, /* GL_POST_CONVOLUTION_RED_BIAS */
- 1431, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- 1426, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- 1422, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- 709, /* GL_HISTOGRAM */
- 1500, /* GL_PROXY_HISTOGRAM */
- 725, /* GL_HISTOGRAM_WIDTH */
- 715, /* GL_HISTOGRAM_FORMAT */
- 721, /* GL_HISTOGRAM_RED_SIZE */
- 717, /* GL_HISTOGRAM_GREEN_SIZE */
- 712, /* GL_HISTOGRAM_BLUE_SIZE */
- 710, /* GL_HISTOGRAM_ALPHA_SIZE */
- 719, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- 723, /* GL_HISTOGRAM_SINK */
- 1151, /* GL_MINMAX */
- 1153, /* GL_MINMAX_FORMAT */
- 1155, /* GL_MINMAX_SINK */
- 1902, /* GL_TABLE_TOO_LARGE_EXT */
- 2179, /* GL_UNSIGNED_BYTE_3_3_2 */
- 2219, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- 2222, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- 2191, /* GL_UNSIGNED_INT_8_8_8_8 */
- 2182, /* GL_UNSIGNED_INT_10_10_10_2 */
- 1395, /* GL_POLYGON_OFFSET_FILL */
- 1394, /* GL_POLYGON_OFFSET_FACTOR */
- 1393, /* GL_POLYGON_OFFSET_BIAS */
- 1608, /* GL_RESCALE_NORMAL */
+ 1053, /* GL_MAX_CONVOLUTION_WIDTH */
+ 1051, /* GL_MAX_CONVOLUTION_HEIGHT */
+ 1454, /* GL_POST_CONVOLUTION_RED_SCALE */
+ 1450, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ 1445, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ 1441, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ 1452, /* GL_POST_CONVOLUTION_RED_BIAS */
+ 1448, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ 1443, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ 1439, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ 725, /* GL_HISTOGRAM */
+ 1517, /* GL_PROXY_HISTOGRAM */
+ 741, /* GL_HISTOGRAM_WIDTH */
+ 731, /* GL_HISTOGRAM_FORMAT */
+ 737, /* GL_HISTOGRAM_RED_SIZE */
+ 733, /* GL_HISTOGRAM_GREEN_SIZE */
+ 728, /* GL_HISTOGRAM_BLUE_SIZE */
+ 726, /* GL_HISTOGRAM_ALPHA_SIZE */
+ 735, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ 739, /* GL_HISTOGRAM_SINK */
+ 1168, /* GL_MINMAX */
+ 1170, /* GL_MINMAX_FORMAT */
+ 1172, /* GL_MINMAX_SINK */
+ 1919, /* GL_TABLE_TOO_LARGE_EXT */
+ 2196, /* GL_UNSIGNED_BYTE_3_3_2 */
+ 2236, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ 2239, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ 2208, /* GL_UNSIGNED_INT_8_8_8_8 */
+ 2199, /* GL_UNSIGNED_INT_10_10_10_2 */
+ 1412, /* GL_POLYGON_OFFSET_FILL */
+ 1411, /* GL_POLYGON_OFFSET_FACTOR */
+ 1410, /* GL_POLYGON_OFFSET_BIAS */
+ 1625, /* GL_RESCALE_NORMAL */
41, /* GL_ALPHA4 */
43, /* GL_ALPHA8 */
33, /* GL_ALPHA12 */
35, /* GL_ALPHA16 */
- 880, /* GL_LUMINANCE4 */
- 886, /* GL_LUMINANCE8 */
- 866, /* GL_LUMINANCE12 */
- 872, /* GL_LUMINANCE16 */
- 881, /* GL_LUMINANCE4_ALPHA4 */
- 884, /* GL_LUMINANCE6_ALPHA2 */
- 889, /* GL_LUMINANCE8_ALPHA8 */
- 869, /* GL_LUMINANCE12_ALPHA4 */
- 867, /* GL_LUMINANCE12_ALPHA12 */
- 875, /* GL_LUMINANCE16_ALPHA16 */
- 753, /* GL_INTENSITY */
- 762, /* GL_INTENSITY4 */
- 764, /* GL_INTENSITY8 */
- 754, /* GL_INTENSITY12 */
- 756, /* GL_INTENSITY16 */
- 1630, /* GL_RGB2_EXT */
- 1636, /* GL_RGB4 */
- 1639, /* GL_RGB5 */
- 1646, /* GL_RGB8 */
- 1616, /* GL_RGB10 */
- 1620, /* GL_RGB12 */
- 1622, /* GL_RGB16 */
- 1666, /* GL_RGBA2 */
- 1673, /* GL_RGBA4 */
- 1642, /* GL_RGB5_A1 */
- 1678, /* GL_RGBA8 */
- 1617, /* GL_RGB10_A2 */
- 1656, /* GL_RGBA12 */
- 1658, /* GL_RGBA16 */
- 2107, /* GL_TEXTURE_RED_SIZE */
- 2075, /* GL_TEXTURE_GREEN_SIZE */
- 1996, /* GL_TEXTURE_BLUE_SIZE */
- 1976, /* GL_TEXTURE_ALPHA_SIZE */
- 2088, /* GL_TEXTURE_LUMINANCE_SIZE */
- 2079, /* GL_TEXTURE_INTENSITY_SIZE */
- 1606, /* GL_REPLACE_EXT */
- 1504, /* GL_PROXY_TEXTURE_1D */
- 1508, /* GL_PROXY_TEXTURE_2D */
- 2115, /* GL_TEXTURE_TOO_LARGE_EXT */
- 2101, /* GL_TEXTURE_PRIORITY */
- 2109, /* GL_TEXTURE_RESIDENT */
- 1979, /* GL_TEXTURE_BINDING_1D */
- 1982, /* GL_TEXTURE_BINDING_2D */
- 1985, /* GL_TEXTURE_BINDING_3D */
- 1309, /* GL_PACK_SKIP_IMAGES */
- 1305, /* GL_PACK_IMAGE_HEIGHT */
- 2172, /* GL_UNPACK_SKIP_IMAGES */
- 2169, /* GL_UNPACK_IMAGE_HEIGHT */
- 1974, /* GL_TEXTURE_3D */
- 1512, /* GL_PROXY_TEXTURE_3D */
- 2059, /* GL_TEXTURE_DEPTH */
- 2118, /* GL_TEXTURE_WRAP_R */
- 1019, /* GL_MAX_3D_TEXTURE_SIZE */
- 2235, /* GL_VERTEX_ARRAY */
- 1233, /* GL_NORMAL_ARRAY */
+ 896, /* GL_LUMINANCE4 */
+ 902, /* GL_LUMINANCE8 */
+ 882, /* GL_LUMINANCE12 */
+ 888, /* GL_LUMINANCE16 */
+ 897, /* GL_LUMINANCE4_ALPHA4 */
+ 900, /* GL_LUMINANCE6_ALPHA2 */
+ 905, /* GL_LUMINANCE8_ALPHA8 */
+ 885, /* GL_LUMINANCE12_ALPHA4 */
+ 883, /* GL_LUMINANCE12_ALPHA12 */
+ 891, /* GL_LUMINANCE16_ALPHA16 */
+ 769, /* GL_INTENSITY */
+ 778, /* GL_INTENSITY4 */
+ 780, /* GL_INTENSITY8 */
+ 770, /* GL_INTENSITY12 */
+ 772, /* GL_INTENSITY16 */
+ 1647, /* GL_RGB2_EXT */
+ 1653, /* GL_RGB4 */
+ 1656, /* GL_RGB5 */
+ 1663, /* GL_RGB8 */
+ 1633, /* GL_RGB10 */
+ 1637, /* GL_RGB12 */
+ 1639, /* GL_RGB16 */
+ 1683, /* GL_RGBA2 */
+ 1690, /* GL_RGBA4 */
+ 1659, /* GL_RGB5_A1 */
+ 1695, /* GL_RGBA8 */
+ 1634, /* GL_RGB10_A2 */
+ 1673, /* GL_RGBA12 */
+ 1675, /* GL_RGBA16 */
+ 2124, /* GL_TEXTURE_RED_SIZE */
+ 2092, /* GL_TEXTURE_GREEN_SIZE */
+ 2013, /* GL_TEXTURE_BLUE_SIZE */
+ 1993, /* GL_TEXTURE_ALPHA_SIZE */
+ 2105, /* GL_TEXTURE_LUMINANCE_SIZE */
+ 2096, /* GL_TEXTURE_INTENSITY_SIZE */
+ 1623, /* GL_REPLACE_EXT */
+ 1521, /* GL_PROXY_TEXTURE_1D */
+ 1525, /* GL_PROXY_TEXTURE_2D */
+ 2132, /* GL_TEXTURE_TOO_LARGE_EXT */
+ 2118, /* GL_TEXTURE_PRIORITY */
+ 2126, /* GL_TEXTURE_RESIDENT */
+ 1996, /* GL_TEXTURE_BINDING_1D */
+ 1999, /* GL_TEXTURE_BINDING_2D */
+ 2002, /* GL_TEXTURE_BINDING_3D */
+ 1326, /* GL_PACK_SKIP_IMAGES */
+ 1322, /* GL_PACK_IMAGE_HEIGHT */
+ 2189, /* GL_UNPACK_SKIP_IMAGES */
+ 2186, /* GL_UNPACK_IMAGE_HEIGHT */
+ 1991, /* GL_TEXTURE_3D */
+ 1529, /* GL_PROXY_TEXTURE_3D */
+ 2076, /* GL_TEXTURE_DEPTH */
+ 2135, /* GL_TEXTURE_WRAP_R */
+ 1035, /* GL_MAX_3D_TEXTURE_SIZE */
+ 2252, /* GL_VERTEX_ARRAY */
+ 1250, /* GL_NORMAL_ARRAY */
189, /* GL_COLOR_ARRAY */
- 737, /* GL_INDEX_ARRAY */
- 2029, /* GL_TEXTURE_COORD_ARRAY */
- 519, /* GL_EDGE_FLAG_ARRAY */
- 2241, /* GL_VERTEX_ARRAY_SIZE */
- 2243, /* GL_VERTEX_ARRAY_TYPE */
- 2242, /* GL_VERTEX_ARRAY_STRIDE */
- 1238, /* GL_NORMAL_ARRAY_TYPE */
- 1237, /* GL_NORMAL_ARRAY_STRIDE */
+ 753, /* GL_INDEX_ARRAY */
+ 2046, /* GL_TEXTURE_COORD_ARRAY */
+ 535, /* GL_EDGE_FLAG_ARRAY */
+ 2258, /* GL_VERTEX_ARRAY_SIZE */
+ 2260, /* GL_VERTEX_ARRAY_TYPE */
+ 2259, /* GL_VERTEX_ARRAY_STRIDE */
+ 1255, /* GL_NORMAL_ARRAY_TYPE */
+ 1254, /* GL_NORMAL_ARRAY_STRIDE */
193, /* GL_COLOR_ARRAY_SIZE */
195, /* GL_COLOR_ARRAY_TYPE */
194, /* GL_COLOR_ARRAY_STRIDE */
- 742, /* GL_INDEX_ARRAY_TYPE */
- 741, /* GL_INDEX_ARRAY_STRIDE */
- 2033, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- 2035, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- 2034, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- 523, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- 2240, /* GL_VERTEX_ARRAY_POINTER */
- 1236, /* GL_NORMAL_ARRAY_POINTER */
+ 758, /* GL_INDEX_ARRAY_TYPE */
+ 757, /* GL_INDEX_ARRAY_STRIDE */
+ 2050, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ 2052, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ 2051, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ 539, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ 2257, /* GL_VERTEX_ARRAY_POINTER */
+ 1253, /* GL_NORMAL_ARRAY_POINTER */
192, /* GL_COLOR_ARRAY_POINTER */
- 740, /* GL_INDEX_ARRAY_POINTER */
- 2032, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- 522, /* GL_EDGE_FLAG_ARRAY_POINTER */
- 1211, /* GL_MULTISAMPLE */
- 1731, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- 1733, /* GL_SAMPLE_ALPHA_TO_ONE */
- 1738, /* GL_SAMPLE_COVERAGE */
- 1735, /* GL_SAMPLE_BUFFERS */
- 1726, /* GL_SAMPLES */
- 1742, /* GL_SAMPLE_COVERAGE_VALUE */
- 1740, /* GL_SAMPLE_COVERAGE_INVERT */
+ 756, /* GL_INDEX_ARRAY_POINTER */
+ 2049, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ 538, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ 1228, /* GL_MULTISAMPLE */
+ 1748, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ 1750, /* GL_SAMPLE_ALPHA_TO_ONE */
+ 1755, /* GL_SAMPLE_COVERAGE */
+ 1752, /* GL_SAMPLE_BUFFERS */
+ 1743, /* GL_SAMPLES */
+ 1759, /* GL_SAMPLE_COVERAGE_VALUE */
+ 1757, /* GL_SAMPLE_COVERAGE_INVERT */
237, /* GL_COLOR_MATRIX */
239, /* GL_COLOR_MATRIX_STACK_DEPTH */
- 1031, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- 1420, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- 1416, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- 1411, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- 1407, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- 1418, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- 1414, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- 1409, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- 1405, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- 2012, /* GL_TEXTURE_COLOR_TABLE_SGI */
- 1513, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- 2014, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ 1047, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ 1437, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ 1433, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ 1428, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ 1424, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ 1435, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ 1431, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ 1426, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ 1422, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ 2029, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ 1530, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ 2031, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
94, /* GL_BLEND_DST_RGB */
108, /* GL_BLEND_SRC_RGB */
92, /* GL_BLEND_DST_ALPHA */
106, /* GL_BLEND_SRC_ALPHA */
243, /* GL_COLOR_TABLE */
- 1430, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- 1413, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- 1499, /* GL_PROXY_COLOR_TABLE */
- 1503, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- 1502, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1447, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ 1430, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1516, /* GL_PROXY_COLOR_TABLE */
+ 1520, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ 1519, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
267, /* GL_COLOR_TABLE_SCALE */
247, /* GL_COLOR_TABLE_BIAS */
252, /* GL_COLOR_TABLE_FORMAT */
@@ -5300,398 +5334,398 @@ static const unsigned reduced_enums[1564] =
258, /* GL_COLOR_TABLE_INTENSITY_SIZE */
79, /* GL_BGR */
80, /* GL_BGRA */
- 1046, /* GL_MAX_ELEMENTS_VERTICES */
- 1045, /* GL_MAX_ELEMENTS_INDICES */
- 2078, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ 1063, /* GL_MAX_ELEMENTS_VERTICES */
+ 1062, /* GL_MAX_ELEMENTS_INDICES */
+ 2095, /* GL_TEXTURE_INDEX_SIZE_EXT */
186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- 1376, /* GL_POINT_SIZE_MIN */
- 1372, /* GL_POINT_SIZE_MAX */
- 1361, /* GL_POINT_FADE_THRESHOLD_SIZE */
- 1357, /* GL_POINT_DISTANCE_ATTENUATION */
+ 1393, /* GL_POINT_SIZE_MIN */
+ 1389, /* GL_POINT_SIZE_MAX */
+ 1378, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ 1374, /* GL_POINT_DISTANCE_ATTENUATION */
159, /* GL_CLAMP_TO_BORDER */
162, /* GL_CLAMP_TO_EDGE */
- 2100, /* GL_TEXTURE_MIN_LOD */
- 2098, /* GL_TEXTURE_MAX_LOD */
- 1978, /* GL_TEXTURE_BASE_LEVEL */
- 2097, /* GL_TEXTURE_MAX_LEVEL */
- 728, /* GL_IGNORE_BORDER_HP */
+ 2117, /* GL_TEXTURE_MIN_LOD */
+ 2115, /* GL_TEXTURE_MAX_LOD */
+ 1995, /* GL_TEXTURE_BASE_LEVEL */
+ 2114, /* GL_TEXTURE_MAX_LEVEL */
+ 744, /* GL_IGNORE_BORDER_HP */
321, /* GL_CONSTANT_BORDER_HP */
- 1607, /* GL_REPLICATE_BORDER_HP */
+ 1624, /* GL_REPLICATE_BORDER_HP */
333, /* GL_CONVOLUTION_BORDER_COLOR */
- 1268, /* GL_OCCLUSION_TEST_HP */
- 1269, /* GL_OCCLUSION_TEST_RESULT_HP */
- 831, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- 2006, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- 2008, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- 2010, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- 2011, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 2009, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- 2007, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- 1025, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- 1026, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1440, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- 1442, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- 1439, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- 1441, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- 2086, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- 2087, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- 2085, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- 683, /* GL_GENERATE_MIPMAP */
- 684, /* GL_GENERATE_MIPMAP_HINT */
- 596, /* GL_FOG_OFFSET_SGIX */
- 597, /* GL_FOG_OFFSET_VALUE_SGIX */
- 2020, /* GL_TEXTURE_COMPARE_SGIX */
- 2019, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- 2082, /* GL_TEXTURE_LEQUAL_R_SGIX */
- 2074, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ 1285, /* GL_OCCLUSION_TEST_HP */
+ 1286, /* GL_OCCLUSION_TEST_RESULT_HP */
+ 847, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ 2023, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ 2025, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ 2027, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ 2028, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 2026, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ 2024, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ 1041, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ 1042, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1457, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ 1459, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ 1456, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ 1458, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ 2103, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ 2104, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ 2102, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ 699, /* GL_GENERATE_MIPMAP */
+ 700, /* GL_GENERATE_MIPMAP_HINT */
+ 612, /* GL_FOG_OFFSET_SGIX */
+ 613, /* GL_FOG_OFFSET_VALUE_SGIX */
+ 2037, /* GL_TEXTURE_COMPARE_SGIX */
+ 2036, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ 2099, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ 2091, /* GL_TEXTURE_GEQUAL_R_SGIX */
416, /* GL_DEPTH_COMPONENT16 */
420, /* GL_DEPTH_COMPONENT24 */
424, /* GL_DEPTH_COMPONENT32 */
358, /* GL_CULL_VERTEX_EXT */
360, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
359, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- 2308, /* GL_WRAP_BORDER_SUN */
- 2013, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- 824, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- 1776, /* GL_SINGLE_COLOR */
- 1760, /* GL_SEPARATE_SPECULAR_COLOR */
- 1771, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- 608, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- 609, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- 620, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- 611, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- 607, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- 606, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- 610, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- 621, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- 638, /* GL_FRAMEBUFFER_DEFAULT */
- 665, /* GL_FRAMEBUFFER_UNDEFINED */
+ 2325, /* GL_WRAP_BORDER_SUN */
+ 2030, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ 840, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ 1793, /* GL_SINGLE_COLOR */
+ 1777, /* GL_SEPARATE_SPECULAR_COLOR */
+ 1788, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ 624, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ 625, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ 636, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ 627, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ 623, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ 622, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ 626, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ 637, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ 654, /* GL_FRAMEBUFFER_DEFAULT */
+ 681, /* GL_FRAMEBUFFER_UNDEFINED */
432, /* GL_DEPTH_STENCIL_ATTACHMENT */
- 901, /* GL_MAJOR_VERSION */
- 1157, /* GL_MINOR_VERSION */
- 1248, /* GL_NUM_EXTENSIONS */
+ 917, /* GL_MAJOR_VERSION */
+ 1174, /* GL_MINOR_VERSION */
+ 1265, /* GL_NUM_EXTENSIONS */
327, /* GL_CONTEXT_FLAGS */
- 736, /* GL_INDEX */
+ 752, /* GL_INDEX */
410, /* GL_DEPTH_BUFFER */
- 1850, /* GL_STENCIL_BUFFER */
+ 1867, /* GL_STENCIL_BUFFER */
298, /* GL_COMPRESSED_RED */
299, /* GL_COMPRESSED_RG */
- 861, /* GL_LOSE_CONTEXT_ON_RESET_ARB */
- 703, /* GL_GUILTY_CONTEXT_RESET_ARB */
- 751, /* GL_INNOCENT_CONTEXT_RESET_ARB */
- 2167, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
- 1610, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
- 1462, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
- 1245, /* GL_NO_RESET_NOTIFICATION_ARB */
- 2178, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- 2223, /* GL_UNSIGNED_SHORT_5_6_5 */
- 2224, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- 2220, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- 2217, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- 2192, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- 2188, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- 2095, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- 2096, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- 2094, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- 1161, /* GL_MIRRORED_REPEAT */
- 1696, /* GL_RGB_S3TC */
- 1638, /* GL_RGB4_S3TC */
- 1692, /* GL_RGBA_S3TC */
- 1677, /* GL_RGBA4_S3TC */
- 1686, /* GL_RGBA_DXT5_S3TC */
- 1674, /* GL_RGBA4_DXT5_S3TC */
+ 877, /* GL_LOSE_CONTEXT_ON_RESET_ARB */
+ 719, /* GL_GUILTY_CONTEXT_RESET_ARB */
+ 767, /* GL_INNOCENT_CONTEXT_RESET_ARB */
+ 2184, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
+ 1627, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
+ 1479, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
+ 1262, /* GL_NO_RESET_NOTIFICATION_ARB */
+ 2195, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ 2240, /* GL_UNSIGNED_SHORT_5_6_5 */
+ 2241, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ 2237, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ 2234, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ 2209, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ 2205, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ 2112, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ 2113, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ 2111, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ 1178, /* GL_MIRRORED_REPEAT */
+ 1713, /* GL_RGB_S3TC */
+ 1655, /* GL_RGB4_S3TC */
+ 1709, /* GL_RGBA_S3TC */
+ 1694, /* GL_RGBA4_S3TC */
+ 1703, /* GL_RGBA_DXT5_S3TC */
+ 1691, /* GL_RGBA4_DXT5_S3TC */
309, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
304, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
305, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
306, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- 1223, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- 1222, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- 832, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- 583, /* GL_FOG_COORDINATE_SOURCE */
- 575, /* GL_FOG_COORD */
- 599, /* GL_FRAGMENT_DEPTH */
+ 1240, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ 1239, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ 848, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ 599, /* GL_FOG_COORDINATE_SOURCE */
+ 591, /* GL_FOG_COORD */
+ 615, /* GL_FRAGMENT_DEPTH */
364, /* GL_CURRENT_FOG_COORD */
- 582, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- 581, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- 580, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- 577, /* GL_FOG_COORDINATE_ARRAY */
+ 598, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ 597, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ 596, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ 593, /* GL_FOG_COORDINATE_ARRAY */
241, /* GL_COLOR_SUM */
385, /* GL_CURRENT_SECONDARY_COLOR */
- 1751, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- 1753, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- 1752, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- 1750, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- 1747, /* GL_SECONDARY_COLOR_ARRAY */
+ 1768, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ 1770, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ 1769, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ 1767, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ 1764, /* GL_SECONDARY_COLOR_ARRAY */
383, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
29, /* GL_ALIASED_POINT_SIZE_RANGE */
28, /* GL_ALIASED_LINE_WIDTH_RANGE */
- 1904, /* GL_TEXTURE0 */
- 1906, /* GL_TEXTURE1 */
- 1928, /* GL_TEXTURE2 */
- 1950, /* GL_TEXTURE3 */
- 1956, /* GL_TEXTURE4 */
- 1958, /* GL_TEXTURE5 */
- 1960, /* GL_TEXTURE6 */
- 1962, /* GL_TEXTURE7 */
- 1964, /* GL_TEXTURE8 */
- 1966, /* GL_TEXTURE9 */
- 1907, /* GL_TEXTURE10 */
- 1909, /* GL_TEXTURE11 */
- 1911, /* GL_TEXTURE12 */
- 1913, /* GL_TEXTURE13 */
- 1915, /* GL_TEXTURE14 */
- 1917, /* GL_TEXTURE15 */
- 1919, /* GL_TEXTURE16 */
- 1921, /* GL_TEXTURE17 */
- 1923, /* GL_TEXTURE18 */
- 1925, /* GL_TEXTURE19 */
- 1929, /* GL_TEXTURE20 */
- 1931, /* GL_TEXTURE21 */
- 1933, /* GL_TEXTURE22 */
- 1935, /* GL_TEXTURE23 */
- 1937, /* GL_TEXTURE24 */
- 1939, /* GL_TEXTURE25 */
- 1941, /* GL_TEXTURE26 */
- 1943, /* GL_TEXTURE27 */
- 1945, /* GL_TEXTURE28 */
- 1947, /* GL_TEXTURE29 */
- 1951, /* GL_TEXTURE30 */
- 1953, /* GL_TEXTURE31 */
+ 1921, /* GL_TEXTURE0 */
+ 1923, /* GL_TEXTURE1 */
+ 1945, /* GL_TEXTURE2 */
+ 1967, /* GL_TEXTURE3 */
+ 1973, /* GL_TEXTURE4 */
+ 1975, /* GL_TEXTURE5 */
+ 1977, /* GL_TEXTURE6 */
+ 1979, /* GL_TEXTURE7 */
+ 1981, /* GL_TEXTURE8 */
+ 1983, /* GL_TEXTURE9 */
+ 1924, /* GL_TEXTURE10 */
+ 1926, /* GL_TEXTURE11 */
+ 1928, /* GL_TEXTURE12 */
+ 1930, /* GL_TEXTURE13 */
+ 1932, /* GL_TEXTURE14 */
+ 1934, /* GL_TEXTURE15 */
+ 1936, /* GL_TEXTURE16 */
+ 1938, /* GL_TEXTURE17 */
+ 1940, /* GL_TEXTURE18 */
+ 1942, /* GL_TEXTURE19 */
+ 1946, /* GL_TEXTURE20 */
+ 1948, /* GL_TEXTURE21 */
+ 1950, /* GL_TEXTURE22 */
+ 1952, /* GL_TEXTURE23 */
+ 1954, /* GL_TEXTURE24 */
+ 1956, /* GL_TEXTURE25 */
+ 1958, /* GL_TEXTURE26 */
+ 1960, /* GL_TEXTURE27 */
+ 1962, /* GL_TEXTURE28 */
+ 1964, /* GL_TEXTURE29 */
+ 1968, /* GL_TEXTURE30 */
+ 1970, /* GL_TEXTURE31 */
19, /* GL_ACTIVE_TEXTURE */
166, /* GL_CLIENT_ACTIVE_TEXTURE */
- 1122, /* GL_MAX_TEXTURE_UNITS */
- 2150, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- 2153, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- 2155, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- 2147, /* GL_TRANSPOSE_COLOR_MATRIX */
- 1886, /* GL_SUBTRACT */
- 1103, /* GL_MAX_RENDERBUFFER_SIZE */
+ 1139, /* GL_MAX_TEXTURE_UNITS */
+ 2167, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ 2170, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ 2172, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ 2164, /* GL_TRANSPOSE_COLOR_MATRIX */
+ 1903, /* GL_SUBTRACT */
+ 1120, /* GL_MAX_RENDERBUFFER_SIZE */
290, /* GL_COMPRESSED_ALPHA */
294, /* GL_COMPRESSED_LUMINANCE */
295, /* GL_COMPRESSED_LUMINANCE_ALPHA */
292, /* GL_COMPRESSED_INTENSITY */
300, /* GL_COMPRESSED_RGB */
301, /* GL_COMPRESSED_RGBA */
- 2027, /* GL_TEXTURE_COMPRESSION_HINT */
- 2104, /* GL_TEXTURE_RECTANGLE */
- 1992, /* GL_TEXTURE_BINDING_RECTANGLE */
- 1516, /* GL_PROXY_TEXTURE_RECTANGLE */
- 1100, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
+ 2044, /* GL_TEXTURE_COMPRESSION_HINT */
+ 2121, /* GL_TEXTURE_RECTANGLE */
+ 2009, /* GL_TEXTURE_BINDING_RECTANGLE */
+ 1533, /* GL_PROXY_TEXTURE_RECTANGLE */
+ 1117, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
431, /* GL_DEPTH_STENCIL */
- 2184, /* GL_UNSIGNED_INT_24_8 */
- 1117, /* GL_MAX_TEXTURE_LOD_BIAS */
- 2093, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- 1119, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- 2065, /* GL_TEXTURE_FILTER_CONTROL */
- 2083, /* GL_TEXTURE_LOD_BIAS */
+ 2201, /* GL_UNSIGNED_INT_24_8 */
+ 1134, /* GL_MAX_TEXTURE_LOD_BIAS */
+ 2110, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ 1136, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ 2082, /* GL_TEXTURE_FILTER_CONTROL */
+ 2100, /* GL_TEXTURE_LOD_BIAS */
274, /* GL_COMBINE4 */
- 1109, /* GL_MAX_SHININESS_NV */
- 1110, /* GL_MAX_SPOT_EXPONENT_NV */
- 734, /* GL_INCR_WRAP */
+ 1126, /* GL_MAX_SHININESS_NV */
+ 1127, /* GL_MAX_SPOT_EXPONENT_NV */
+ 750, /* GL_INCR_WRAP */
396, /* GL_DECR_WRAP */
- 1181, /* GL_MODELVIEW1_ARB */
- 1239, /* GL_NORMAL_MAP */
- 1567, /* GL_REFLECTION_MAP */
- 2037, /* GL_TEXTURE_CUBE_MAP */
- 1989, /* GL_TEXTURE_BINDING_CUBE_MAP */
- 2049, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- 2039, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- 2052, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- 2042, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- 2055, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- 2045, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- 1514, /* GL_PROXY_TEXTURE_CUBE_MAP */
- 1039, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- 1217, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- 1454, /* GL_PRIMITIVE_RESTART_NV */
- 1453, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- 591, /* GL_FOG_DISTANCE_MODE_NV */
- 538, /* GL_EYE_RADIAL_NV */
- 537, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ 1198, /* GL_MODELVIEW1_ARB */
+ 1256, /* GL_NORMAL_MAP */
+ 1584, /* GL_REFLECTION_MAP */
+ 2054, /* GL_TEXTURE_CUBE_MAP */
+ 2006, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ 2066, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ 2056, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ 2069, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ 2059, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ 2072, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ 2062, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ 1531, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ 1055, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ 1234, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ 1471, /* GL_PRIMITIVE_RESTART_NV */
+ 1470, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ 607, /* GL_FOG_DISTANCE_MODE_NV */
+ 554, /* GL_EYE_RADIAL_NV */
+ 553, /* GL_EYE_PLANE_ABSOLUTE_NV */
273, /* GL_COMBINE */
280, /* GL_COMBINE_RGB */
275, /* GL_COMBINE_ALPHA */
- 1697, /* GL_RGB_SCALE */
+ 1714, /* GL_RGB_SCALE */
25, /* GL_ADD_SIGNED */
- 771, /* GL_INTERPOLATE */
+ 787, /* GL_INTERPOLATE */
316, /* GL_CONSTANT */
- 1446, /* GL_PRIMARY_COLOR */
- 1443, /* GL_PREVIOUS */
- 1791, /* GL_SOURCE0_RGB */
- 1797, /* GL_SOURCE1_RGB */
- 1803, /* GL_SOURCE2_RGB */
- 1807, /* GL_SOURCE3_RGB_NV */
- 1788, /* GL_SOURCE0_ALPHA */
- 1794, /* GL_SOURCE1_ALPHA */
- 1800, /* GL_SOURCE2_ALPHA */
- 1806, /* GL_SOURCE3_ALPHA_NV */
- 1282, /* GL_OPERAND0_RGB */
- 1288, /* GL_OPERAND1_RGB */
- 1294, /* GL_OPERAND2_RGB */
- 1298, /* GL_OPERAND3_RGB_NV */
- 1279, /* GL_OPERAND0_ALPHA */
- 1285, /* GL_OPERAND1_ALPHA */
- 1291, /* GL_OPERAND2_ALPHA */
- 1297, /* GL_OPERAND3_ALPHA_NV */
+ 1463, /* GL_PRIMARY_COLOR */
+ 1460, /* GL_PREVIOUS */
+ 1808, /* GL_SOURCE0_RGB */
+ 1814, /* GL_SOURCE1_RGB */
+ 1820, /* GL_SOURCE2_RGB */
+ 1824, /* GL_SOURCE3_RGB_NV */
+ 1805, /* GL_SOURCE0_ALPHA */
+ 1811, /* GL_SOURCE1_ALPHA */
+ 1817, /* GL_SOURCE2_ALPHA */
+ 1823, /* GL_SOURCE3_ALPHA_NV */
+ 1299, /* GL_OPERAND0_RGB */
+ 1305, /* GL_OPERAND1_RGB */
+ 1311, /* GL_OPERAND2_RGB */
+ 1315, /* GL_OPERAND3_RGB_NV */
+ 1296, /* GL_OPERAND0_ALPHA */
+ 1302, /* GL_OPERAND1_ALPHA */
+ 1308, /* GL_OPERAND2_ALPHA */
+ 1314, /* GL_OPERAND3_ALPHA_NV */
137, /* GL_BUFFER_OBJECT_APPLE */
- 2236, /* GL_VERTEX_ARRAY_BINDING */
- 2102, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- 2103, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- 2313, /* GL_YCBCR_422_APPLE */
- 2225, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- 2227, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- 2114, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- 1877, /* GL_STORAGE_PRIVATE_APPLE */
- 1876, /* GL_STORAGE_CACHED_APPLE */
- 1878, /* GL_STORAGE_SHARED_APPLE */
- 1778, /* GL_SLICE_ACCUM_SUN */
- 1525, /* GL_QUAD_MESH_SUN */
- 2161, /* GL_TRIANGLE_MESH_SUN */
- 2278, /* GL_VERTEX_PROGRAM_ARB */
- 2289, /* GL_VERTEX_STATE_PROGRAM_NV */
- 2263, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- 2271, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- 2273, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- 2275, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ 2253, /* GL_VERTEX_ARRAY_BINDING */
+ 2119, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ 2120, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ 2330, /* GL_YCBCR_422_APPLE */
+ 2242, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ 2244, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ 2131, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ 1894, /* GL_STORAGE_PRIVATE_APPLE */
+ 1893, /* GL_STORAGE_CACHED_APPLE */
+ 1895, /* GL_STORAGE_SHARED_APPLE */
+ 1795, /* GL_SLICE_ACCUM_SUN */
+ 1542, /* GL_QUAD_MESH_SUN */
+ 2178, /* GL_TRIANGLE_MESH_SUN */
+ 2295, /* GL_VERTEX_PROGRAM_ARB */
+ 2306, /* GL_VERTEX_STATE_PROGRAM_NV */
+ 2280, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ 2288, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ 2290, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ 2292, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
387, /* GL_CURRENT_VERTEX_ATTRIB */
- 1470, /* GL_PROGRAM_LENGTH_ARB */
- 1486, /* GL_PROGRAM_STRING_ARB */
- 1204, /* GL_MODELVIEW_PROJECTION_NV */
- 727, /* GL_IDENTITY_NV */
- 804, /* GL_INVERSE_NV */
- 2152, /* GL_TRANSPOSE_NV */
- 805, /* GL_INVERSE_TRANSPOSE_NV */
- 1084, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- 1083, /* GL_MAX_PROGRAM_MATRICES_ARB */
- 965, /* GL_MATRIX0_NV */
- 977, /* GL_MATRIX1_NV */
- 989, /* GL_MATRIX2_NV */
- 993, /* GL_MATRIX3_NV */
- 995, /* GL_MATRIX4_NV */
- 997, /* GL_MATRIX5_NV */
- 999, /* GL_MATRIX6_NV */
- 1001, /* GL_MATRIX7_NV */
+ 1487, /* GL_PROGRAM_LENGTH_ARB */
+ 1503, /* GL_PROGRAM_STRING_ARB */
+ 1221, /* GL_MODELVIEW_PROJECTION_NV */
+ 743, /* GL_IDENTITY_NV */
+ 820, /* GL_INVERSE_NV */
+ 2169, /* GL_TRANSPOSE_NV */
+ 821, /* GL_INVERSE_TRANSPOSE_NV */
+ 1101, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ 1100, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ 981, /* GL_MATRIX0_NV */
+ 993, /* GL_MATRIX1_NV */
+ 1005, /* GL_MATRIX2_NV */
+ 1009, /* GL_MATRIX3_NV */
+ 1011, /* GL_MATRIX4_NV */
+ 1013, /* GL_MATRIX5_NV */
+ 1015, /* GL_MATRIX6_NV */
+ 1017, /* GL_MATRIX7_NV */
370, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
367, /* GL_CURRENT_MATRIX_ARB */
- 1483, /* GL_PROGRAM_POINT_SIZE */
- 2284, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- 1482, /* GL_PROGRAM_PARAMETER_NV */
- 2269, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- 1488, /* GL_PROGRAM_TARGET_NV */
- 1485, /* GL_PROGRAM_RESIDENT_NV */
- 2124, /* GL_TRACK_MATRIX_NV */
- 2125, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- 2279, /* GL_VERTEX_PROGRAM_BINDING_NV */
- 1464, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ 1500, /* GL_PROGRAM_POINT_SIZE */
+ 2301, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ 1499, /* GL_PROGRAM_PARAMETER_NV */
+ 2286, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ 1505, /* GL_PROGRAM_TARGET_NV */
+ 1502, /* GL_PROGRAM_RESIDENT_NV */
+ 2141, /* GL_TRACK_MATRIX_NV */
+ 2142, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ 2296, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ 1481, /* GL_PROGRAM_ERROR_POSITION_ARB */
412, /* GL_DEPTH_CLAMP */
- 2244, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- 2251, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- 2252, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- 2253, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- 2254, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- 2255, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- 2256, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- 2257, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- 2258, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- 2259, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- 2245, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- 2246, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- 2247, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- 2248, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- 2249, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- 2250, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- 913, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- 920, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- 921, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- 922, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- 923, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- 924, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- 925, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- 926, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- 927, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- 928, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- 914, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- 915, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- 916, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- 917, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- 918, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- 919, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- 940, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- 947, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- 948, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- 949, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- 950, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- 951, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- 952, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- 1463, /* GL_PROGRAM_BINDING_ARB */
- 954, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- 955, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- 941, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- 942, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- 943, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- 944, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- 945, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- 946, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- 2025, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- 2022, /* GL_TEXTURE_COMPRESSED */
- 1246, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ 2261, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ 2268, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ 2269, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ 2270, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ 2271, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ 2272, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ 2273, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ 2274, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ 2275, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ 2276, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ 2262, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ 2263, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ 2264, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ 2265, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ 2266, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ 2267, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ 929, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ 936, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ 937, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ 938, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ 939, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ 940, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ 941, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ 942, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ 943, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ 944, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ 930, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ 931, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ 932, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ 933, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ 934, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ 935, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ 956, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ 963, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ 964, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ 965, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ 966, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ 967, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ 968, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ 1480, /* GL_PROGRAM_BINDING_ARB */
+ 970, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ 971, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ 957, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ 958, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ 959, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ 960, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ 961, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ 962, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ 2042, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ 2039, /* GL_TEXTURE_COMPRESSED */
+ 1263, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
314, /* GL_COMPRESSED_TEXTURE_FORMATS */
- 1144, /* GL_MAX_VERTEX_UNITS_ARB */
+ 1161, /* GL_MAX_VERTEX_UNITS_ARB */
23, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- 2307, /* GL_WEIGHT_SUM_UNITY_ARB */
- 2277, /* GL_VERTEX_BLEND_ARB */
+ 2324, /* GL_WEIGHT_SUM_UNITY_ARB */
+ 2294, /* GL_VERTEX_BLEND_ARB */
389, /* GL_CURRENT_WEIGHT_ARB */
- 2305, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- 2303, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- 2301, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- 2299, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- 2294, /* GL_WEIGHT_ARRAY_ARB */
+ 2322, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ 2320, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ 2318, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ 2316, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ 2311, /* GL_WEIGHT_ARRAY_ARB */
446, /* GL_DOT3_RGB */
447, /* GL_DOT3_RGBA */
308, /* GL_COMPRESSED_RGB_FXT1_3DFX */
303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- 1212, /* GL_MULTISAMPLE_3DFX */
- 1736, /* GL_SAMPLE_BUFFERS_3DFX */
- 1727, /* GL_SAMPLES_3DFX */
- 1192, /* GL_MODELVIEW2_ARB */
- 1195, /* GL_MODELVIEW3_ARB */
- 1196, /* GL_MODELVIEW4_ARB */
- 1197, /* GL_MODELVIEW5_ARB */
- 1198, /* GL_MODELVIEW6_ARB */
- 1199, /* GL_MODELVIEW7_ARB */
- 1200, /* GL_MODELVIEW8_ARB */
- 1201, /* GL_MODELVIEW9_ARB */
- 1171, /* GL_MODELVIEW10_ARB */
- 1172, /* GL_MODELVIEW11_ARB */
- 1173, /* GL_MODELVIEW12_ARB */
- 1174, /* GL_MODELVIEW13_ARB */
- 1175, /* GL_MODELVIEW14_ARB */
- 1176, /* GL_MODELVIEW15_ARB */
- 1177, /* GL_MODELVIEW16_ARB */
- 1178, /* GL_MODELVIEW17_ARB */
- 1179, /* GL_MODELVIEW18_ARB */
- 1180, /* GL_MODELVIEW19_ARB */
- 1182, /* GL_MODELVIEW20_ARB */
- 1183, /* GL_MODELVIEW21_ARB */
- 1184, /* GL_MODELVIEW22_ARB */
- 1185, /* GL_MODELVIEW23_ARB */
- 1186, /* GL_MODELVIEW24_ARB */
- 1187, /* GL_MODELVIEW25_ARB */
- 1188, /* GL_MODELVIEW26_ARB */
- 1189, /* GL_MODELVIEW27_ARB */
- 1190, /* GL_MODELVIEW28_ARB */
- 1191, /* GL_MODELVIEW29_ARB */
- 1193, /* GL_MODELVIEW30_ARB */
- 1194, /* GL_MODELVIEW31_ARB */
+ 1229, /* GL_MULTISAMPLE_3DFX */
+ 1753, /* GL_SAMPLE_BUFFERS_3DFX */
+ 1744, /* GL_SAMPLES_3DFX */
+ 1209, /* GL_MODELVIEW2_ARB */
+ 1212, /* GL_MODELVIEW3_ARB */
+ 1213, /* GL_MODELVIEW4_ARB */
+ 1214, /* GL_MODELVIEW5_ARB */
+ 1215, /* GL_MODELVIEW6_ARB */
+ 1216, /* GL_MODELVIEW7_ARB */
+ 1217, /* GL_MODELVIEW8_ARB */
+ 1218, /* GL_MODELVIEW9_ARB */
+ 1188, /* GL_MODELVIEW10_ARB */
+ 1189, /* GL_MODELVIEW11_ARB */
+ 1190, /* GL_MODELVIEW12_ARB */
+ 1191, /* GL_MODELVIEW13_ARB */
+ 1192, /* GL_MODELVIEW14_ARB */
+ 1193, /* GL_MODELVIEW15_ARB */
+ 1194, /* GL_MODELVIEW16_ARB */
+ 1195, /* GL_MODELVIEW17_ARB */
+ 1196, /* GL_MODELVIEW18_ARB */
+ 1197, /* GL_MODELVIEW19_ARB */
+ 1199, /* GL_MODELVIEW20_ARB */
+ 1200, /* GL_MODELVIEW21_ARB */
+ 1201, /* GL_MODELVIEW22_ARB */
+ 1202, /* GL_MODELVIEW23_ARB */
+ 1203, /* GL_MODELVIEW24_ARB */
+ 1204, /* GL_MODELVIEW25_ARB */
+ 1205, /* GL_MODELVIEW26_ARB */
+ 1206, /* GL_MODELVIEW27_ARB */
+ 1207, /* GL_MODELVIEW28_ARB */
+ 1208, /* GL_MODELVIEW29_ARB */
+ 1210, /* GL_MODELVIEW30_ARB */
+ 1211, /* GL_MODELVIEW31_ARB */
451, /* GL_DOT3_RGB_EXT */
- 1460, /* GL_PROGRAM_BINARY_LENGTH */
- 1165, /* GL_MIRROR_CLAMP_EXT */
- 1168, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- 1207, /* GL_MODULATE_ADD_ATI */
- 1208, /* GL_MODULATE_SIGNED_ADD_ATI */
- 1209, /* GL_MODULATE_SUBTRACT_ATI */
- 2314, /* GL_YCBCR_MESA */
- 1306, /* GL_PACK_INVERT_MESA */
+ 1477, /* GL_PROGRAM_BINARY_LENGTH */
+ 1182, /* GL_MIRROR_CLAMP_EXT */
+ 1185, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ 1224, /* GL_MODULATE_ADD_ATI */
+ 1225, /* GL_MODULATE_SIGNED_ADD_ATI */
+ 1226, /* GL_MODULATE_SUBTRACT_ATI */
+ 2331, /* GL_YCBCR_MESA */
+ 1323, /* GL_PACK_INVERT_MESA */
392, /* GL_DEBUG_OBJECT_MESA */
393, /* GL_DEBUG_PRINT_MESA */
391, /* GL_DEBUG_ASSERT_MESA */
@@ -5701,354 +5735,354 @@ static const unsigned reduced_enums[1564] =
146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
144, /* GL_BUMP_NUM_TEX_UNITS_ATI */
148, /* GL_BUMP_TEX_UNITS_ATI */
- 511, /* GL_DUDV_ATI */
- 510, /* GL_DU8DV8_ATI */
+ 527, /* GL_DUDV_ATI */
+ 526, /* GL_DU8DV8_ATI */
143, /* GL_BUMP_ENVMAP_ATI */
147, /* GL_BUMP_TARGET_ATI */
- 1249, /* GL_NUM_PROGRAM_BINARY_FORMATS */
- 1458, /* GL_PROGRAM_BINARY_FORMATS */
- 1840, /* GL_STENCIL_BACK_FUNC */
- 1838, /* GL_STENCIL_BACK_FAIL */
- 1842, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- 1844, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- 600, /* GL_FRAGMENT_PROGRAM_ARB */
- 1456, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1491, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1490, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1473, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1479, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1478, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 1073, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1098, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1097, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1086, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1092, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1091, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 1668, /* GL_RGBA32F */
- 1631, /* GL_RGB32F */
- 1659, /* GL_RGBA16F */
- 1623, /* GL_RGB16F */
- 1687, /* GL_RGBA_FLOAT_MODE_ARB */
- 1042, /* GL_MAX_DRAW_BUFFERS */
+ 1266, /* GL_NUM_PROGRAM_BINARY_FORMATS */
+ 1475, /* GL_PROGRAM_BINARY_FORMATS */
+ 1857, /* GL_STENCIL_BACK_FUNC */
+ 1855, /* GL_STENCIL_BACK_FAIL */
+ 1859, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ 1861, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ 616, /* GL_FRAGMENT_PROGRAM_ARB */
+ 1473, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1508, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1507, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1490, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1496, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1495, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1090, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1115, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1114, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1103, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1109, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1108, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1685, /* GL_RGBA32F */
+ 1648, /* GL_RGB32F */
+ 1676, /* GL_RGBA16F */
+ 1640, /* GL_RGB16F */
+ 1704, /* GL_RGBA_FLOAT_MODE_ARB */
+ 1058, /* GL_MAX_DRAW_BUFFERS */
455, /* GL_DRAW_BUFFER0 */
- 458, /* GL_DRAW_BUFFER1 */
- 479, /* GL_DRAW_BUFFER2 */
- 482, /* GL_DRAW_BUFFER3 */
- 485, /* GL_DRAW_BUFFER4 */
- 488, /* GL_DRAW_BUFFER5 */
- 491, /* GL_DRAW_BUFFER6 */
- 494, /* GL_DRAW_BUFFER7 */
- 497, /* GL_DRAW_BUFFER8 */
- 500, /* GL_DRAW_BUFFER9 */
- 459, /* GL_DRAW_BUFFER10 */
- 462, /* GL_DRAW_BUFFER11 */
- 465, /* GL_DRAW_BUFFER12 */
- 468, /* GL_DRAW_BUFFER13 */
- 471, /* GL_DRAW_BUFFER14 */
- 474, /* GL_DRAW_BUFFER15 */
+ 459, /* GL_DRAW_BUFFER1 */
+ 487, /* GL_DRAW_BUFFER2 */
+ 491, /* GL_DRAW_BUFFER3 */
+ 495, /* GL_DRAW_BUFFER4 */
+ 499, /* GL_DRAW_BUFFER5 */
+ 503, /* GL_DRAW_BUFFER6 */
+ 507, /* GL_DRAW_BUFFER7 */
+ 511, /* GL_DRAW_BUFFER8 */
+ 515, /* GL_DRAW_BUFFER9 */
+ 460, /* GL_DRAW_BUFFER10 */
+ 464, /* GL_DRAW_BUFFER11 */
+ 468, /* GL_DRAW_BUFFER12 */
+ 472, /* GL_DRAW_BUFFER13 */
+ 476, /* GL_DRAW_BUFFER14 */
+ 480, /* GL_DRAW_BUFFER15 */
97, /* GL_BLEND_EQUATION_ALPHA */
- 1016, /* GL_MATRIX_PALETTE_ARB */
- 1066, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- 1069, /* GL_MAX_PALETTE_MATRICES_ARB */
+ 1032, /* GL_MATRIX_PALETTE_ARB */
+ 1083, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ 1086, /* GL_MAX_PALETTE_MATRICES_ARB */
373, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- 1004, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ 1020, /* GL_MATRIX_INDEX_ARRAY_ARB */
368, /* GL_CURRENT_MATRIX_INDEX_ARB */
- 1009, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- 1013, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- 1011, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- 1007, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- 2060, /* GL_TEXTURE_DEPTH_SIZE */
+ 1025, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ 1029, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ 1027, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ 1023, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ 2077, /* GL_TEXTURE_DEPTH_SIZE */
439, /* GL_DEPTH_TEXTURE_MODE */
- 2017, /* GL_TEXTURE_COMPARE_MODE */
- 2015, /* GL_TEXTURE_COMPARE_FUNC */
+ 2034, /* GL_TEXTURE_COMPARE_MODE */
+ 2032, /* GL_TEXTURE_COMPARE_FUNC */
284, /* GL_COMPARE_REF_TO_TEXTURE */
- 1383, /* GL_POINT_SPRITE */
+ 1400, /* GL_POINT_SPRITE */
347, /* GL_COORD_REPLACE */
- 1388, /* GL_POINT_SPRITE_R_MODE_NV */
- 1531, /* GL_QUERY_COUNTER_BITS */
+ 1405, /* GL_POINT_SPRITE_R_MODE_NV */
+ 1548, /* GL_QUERY_COUNTER_BITS */
376, /* GL_CURRENT_QUERY */
- 1535, /* GL_QUERY_RESULT */
- 1537, /* GL_QUERY_RESULT_AVAILABLE */
- 1136, /* GL_MAX_VERTEX_ATTRIBS */
- 2267, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ 1552, /* GL_QUERY_RESULT */
+ 1554, /* GL_QUERY_RESULT_AVAILABLE */
+ 1153, /* GL_MAX_VERTEX_ATTRIBS */
+ 2284, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
437, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
436, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- 1113, /* GL_MAX_TEXTURE_COORDS */
- 1115, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- 1466, /* GL_PROGRAM_ERROR_STRING_ARB */
- 1468, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- 1467, /* GL_PROGRAM_FORMAT_ARB */
- 2116, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ 1130, /* GL_MAX_TEXTURE_COORDS */
+ 1132, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ 1483, /* GL_PROGRAM_ERROR_STRING_ARB */
+ 1485, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ 1484, /* GL_PROGRAM_FORMAT_ARB */
+ 2133, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
409, /* GL_DEPTH_BOUNDS_TEST_EXT */
408, /* GL_DEPTH_BOUNDS_EXT */
61, /* GL_ARRAY_BUFFER */
- 524, /* GL_ELEMENT_ARRAY_BUFFER */
+ 540, /* GL_ELEMENT_ARRAY_BUFFER */
62, /* GL_ARRAY_BUFFER_BINDING */
- 525, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- 2238, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- 1234, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ 541, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ 2255, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ 1251, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
190, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- 738, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- 2030, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- 520, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- 1748, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- 578, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- 2295, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- 2260, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- 1469, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- 1079, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- 1475, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1088, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1489, /* GL_PROGRAM_TEMPORARIES_ARB */
- 1094, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- 1477, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1090, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1481, /* GL_PROGRAM_PARAMETERS_ARB */
- 1093, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- 1476, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1089, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1457, /* GL_PROGRAM_ATTRIBS_ARB */
- 1074, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- 1474, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1087, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1455, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1072, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1472, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 1085, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 1080, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- 1076, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- 1492, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- 2149, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- 1554, /* GL_READ_ONLY */
- 2309, /* GL_WRITE_ONLY */
- 1556, /* GL_READ_WRITE */
+ 754, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ 2047, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ 536, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ 1765, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ 594, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ 2312, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ 2277, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ 1486, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ 1096, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ 1492, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1105, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1506, /* GL_PROGRAM_TEMPORARIES_ARB */
+ 1111, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ 1494, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1107, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1498, /* GL_PROGRAM_PARAMETERS_ARB */
+ 1110, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ 1493, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1106, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1474, /* GL_PROGRAM_ATTRIBS_ARB */
+ 1091, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ 1491, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1104, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1472, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1089, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1489, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1102, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1097, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ 1093, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ 1509, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ 2166, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ 1571, /* GL_READ_ONLY */
+ 2326, /* GL_WRITE_ONLY */
+ 1573, /* GL_READ_WRITE */
124, /* GL_BUFFER_ACCESS */
129, /* GL_BUFFER_MAPPED */
134, /* GL_BUFFER_MAP_POINTER */
- 2123, /* GL_TIME_ELAPSED_EXT */
- 964, /* GL_MATRIX0_ARB */
- 976, /* GL_MATRIX1_ARB */
- 988, /* GL_MATRIX2_ARB */
- 992, /* GL_MATRIX3_ARB */
- 994, /* GL_MATRIX4_ARB */
- 996, /* GL_MATRIX5_ARB */
- 998, /* GL_MATRIX6_ARB */
- 1000, /* GL_MATRIX7_ARB */
- 1002, /* GL_MATRIX8_ARB */
- 1003, /* GL_MATRIX9_ARB */
- 966, /* GL_MATRIX10_ARB */
- 967, /* GL_MATRIX11_ARB */
- 968, /* GL_MATRIX12_ARB */
- 969, /* GL_MATRIX13_ARB */
- 970, /* GL_MATRIX14_ARB */
- 971, /* GL_MATRIX15_ARB */
- 972, /* GL_MATRIX16_ARB */
- 973, /* GL_MATRIX17_ARB */
- 974, /* GL_MATRIX18_ARB */
- 975, /* GL_MATRIX19_ARB */
- 978, /* GL_MATRIX20_ARB */
- 979, /* GL_MATRIX21_ARB */
- 980, /* GL_MATRIX22_ARB */
- 981, /* GL_MATRIX23_ARB */
- 982, /* GL_MATRIX24_ARB */
- 983, /* GL_MATRIX25_ARB */
- 984, /* GL_MATRIX26_ARB */
- 985, /* GL_MATRIX27_ARB */
- 986, /* GL_MATRIX28_ARB */
- 987, /* GL_MATRIX29_ARB */
- 990, /* GL_MATRIX30_ARB */
- 991, /* GL_MATRIX31_ARB */
- 1881, /* GL_STREAM_DRAW */
- 1883, /* GL_STREAM_READ */
- 1879, /* GL_STREAM_COPY */
- 1830, /* GL_STATIC_DRAW */
- 1832, /* GL_STATIC_READ */
- 1828, /* GL_STATIC_COPY */
- 514, /* GL_DYNAMIC_DRAW */
- 516, /* GL_DYNAMIC_READ */
- 512, /* GL_DYNAMIC_COPY */
- 1346, /* GL_PIXEL_PACK_BUFFER */
- 1350, /* GL_PIXEL_UNPACK_BUFFER */
- 1347, /* GL_PIXEL_PACK_BUFFER_BINDING */
- 1351, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ 2140, /* GL_TIME_ELAPSED_EXT */
+ 980, /* GL_MATRIX0_ARB */
+ 992, /* GL_MATRIX1_ARB */
+ 1004, /* GL_MATRIX2_ARB */
+ 1008, /* GL_MATRIX3_ARB */
+ 1010, /* GL_MATRIX4_ARB */
+ 1012, /* GL_MATRIX5_ARB */
+ 1014, /* GL_MATRIX6_ARB */
+ 1016, /* GL_MATRIX7_ARB */
+ 1018, /* GL_MATRIX8_ARB */
+ 1019, /* GL_MATRIX9_ARB */
+ 982, /* GL_MATRIX10_ARB */
+ 983, /* GL_MATRIX11_ARB */
+ 984, /* GL_MATRIX12_ARB */
+ 985, /* GL_MATRIX13_ARB */
+ 986, /* GL_MATRIX14_ARB */
+ 987, /* GL_MATRIX15_ARB */
+ 988, /* GL_MATRIX16_ARB */
+ 989, /* GL_MATRIX17_ARB */
+ 990, /* GL_MATRIX18_ARB */
+ 991, /* GL_MATRIX19_ARB */
+ 994, /* GL_MATRIX20_ARB */
+ 995, /* GL_MATRIX21_ARB */
+ 996, /* GL_MATRIX22_ARB */
+ 997, /* GL_MATRIX23_ARB */
+ 998, /* GL_MATRIX24_ARB */
+ 999, /* GL_MATRIX25_ARB */
+ 1000, /* GL_MATRIX26_ARB */
+ 1001, /* GL_MATRIX27_ARB */
+ 1002, /* GL_MATRIX28_ARB */
+ 1003, /* GL_MATRIX29_ARB */
+ 1006, /* GL_MATRIX30_ARB */
+ 1007, /* GL_MATRIX31_ARB */
+ 1898, /* GL_STREAM_DRAW */
+ 1900, /* GL_STREAM_READ */
+ 1896, /* GL_STREAM_COPY */
+ 1847, /* GL_STATIC_DRAW */
+ 1849, /* GL_STATIC_READ */
+ 1845, /* GL_STATIC_COPY */
+ 530, /* GL_DYNAMIC_DRAW */
+ 532, /* GL_DYNAMIC_READ */
+ 528, /* GL_DYNAMIC_COPY */
+ 1363, /* GL_PIXEL_PACK_BUFFER */
+ 1367, /* GL_PIXEL_UNPACK_BUFFER */
+ 1364, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ 1368, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
400, /* GL_DEPTH24_STENCIL8 */
- 2112, /* GL_TEXTURE_STENCIL_SIZE */
- 2058, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- 1075, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- 1078, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- 1082, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- 1081, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- 2265, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- 2262, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
- 1021, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
- 1159, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
- 1095, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
- 1872, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ 2129, /* GL_TEXTURE_STENCIL_SIZE */
+ 2075, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ 1092, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ 1095, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ 1099, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ 1098, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ 2282, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ 2279, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ 1037, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
+ 1176, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
+ 1112, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
+ 1889, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
18, /* GL_ACTIVE_STENCIL_FACE_EXT */
- 1166, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- 1729, /* GL_SAMPLES_PASSED */
- 693, /* GL_GEOMETRY_VERTICES_OUT */
- 687, /* GL_GEOMETRY_INPUT_TYPE */
- 689, /* GL_GEOMETRY_OUTPUT_TYPE */
- 1720, /* GL_SAMPLER_BINDING */
+ 1183, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ 1746, /* GL_SAMPLES_PASSED */
+ 709, /* GL_GEOMETRY_VERTICES_OUT */
+ 703, /* GL_GEOMETRY_INPUT_TYPE */
+ 705, /* GL_GEOMETRY_OUTPUT_TYPE */
+ 1737, /* GL_SAMPLER_BINDING */
164, /* GL_CLAMP_VERTEX_COLOR_ARB */
156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */
157, /* GL_CLAMP_READ_COLOR */
- 550, /* GL_FIXED_ONLY */
- 1370, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- 1369, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- 1368, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- 1203, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- 1495, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- 2092, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 566, /* GL_FIXED_ONLY */
+ 1387, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ 1386, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ 1385, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ 1220, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1512, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 2109, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- 1571, /* GL_RELEASED_APPLE */
- 2292, /* GL_VOLATILE_APPLE */
- 1611, /* GL_RETAINED_APPLE */
- 2166, /* GL_UNDEFINED_APPLE */
- 1519, /* GL_PURGEABLE_APPLE */
- 601, /* GL_FRAGMENT_SHADER */
- 2287, /* GL_VERTEX_SHADER */
- 1480, /* GL_PROGRAM_OBJECT_ARB */
- 1765, /* GL_SHADER_OBJECT_ARB */
- 1050, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- 1141, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- 1132, /* GL_MAX_VARYING_COMPONENTS */
- 1139, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- 1033, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- 1266, /* GL_OBJECT_TYPE_ARB */
- 1767, /* GL_SHADER_TYPE */
- 566, /* GL_FLOAT_VEC2 */
- 568, /* GL_FLOAT_VEC3 */
- 570, /* GL_FLOAT_VEC4 */
- 792, /* GL_INT_VEC2 */
- 794, /* GL_INT_VEC3 */
- 796, /* GL_INT_VEC4 */
+ 1588, /* GL_RELEASED_APPLE */
+ 2309, /* GL_VOLATILE_APPLE */
+ 1628, /* GL_RETAINED_APPLE */
+ 2183, /* GL_UNDEFINED_APPLE */
+ 1536, /* GL_PURGEABLE_APPLE */
+ 617, /* GL_FRAGMENT_SHADER */
+ 2304, /* GL_VERTEX_SHADER */
+ 1497, /* GL_PROGRAM_OBJECT_ARB */
+ 1782, /* GL_SHADER_OBJECT_ARB */
+ 1067, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ 1158, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ 1149, /* GL_MAX_VARYING_COMPONENTS */
+ 1156, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ 1049, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ 1283, /* GL_OBJECT_TYPE_ARB */
+ 1784, /* GL_SHADER_TYPE */
+ 582, /* GL_FLOAT_VEC2 */
+ 584, /* GL_FLOAT_VEC3 */
+ 586, /* GL_FLOAT_VEC4 */
+ 808, /* GL_INT_VEC2 */
+ 810, /* GL_INT_VEC3 */
+ 812, /* GL_INT_VEC4 */
116, /* GL_BOOL */
118, /* GL_BOOL_VEC2 */
120, /* GL_BOOL_VEC3 */
122, /* GL_BOOL_VEC4 */
- 554, /* GL_FLOAT_MAT2 */
- 558, /* GL_FLOAT_MAT3 */
- 562, /* GL_FLOAT_MAT4 */
- 1704, /* GL_SAMPLER_1D */
- 1710, /* GL_SAMPLER_2D */
- 1718, /* GL_SAMPLER_3D */
- 1723, /* GL_SAMPLER_CUBE */
- 1709, /* GL_SAMPLER_1D_SHADOW */
- 1717, /* GL_SAMPLER_2D_SHADOW */
- 1715, /* GL_SAMPLER_2D_RECT */
- 1716, /* GL_SAMPLER_2D_RECT_SHADOW */
- 556, /* GL_FLOAT_MAT2x3 */
- 557, /* GL_FLOAT_MAT2x4 */
- 560, /* GL_FLOAT_MAT3x2 */
- 561, /* GL_FLOAT_MAT3x4 */
- 564, /* GL_FLOAT_MAT4x2 */
- 565, /* GL_FLOAT_MAT4x3 */
+ 570, /* GL_FLOAT_MAT2 */
+ 574, /* GL_FLOAT_MAT3 */
+ 578, /* GL_FLOAT_MAT4 */
+ 1721, /* GL_SAMPLER_1D */
+ 1727, /* GL_SAMPLER_2D */
+ 1735, /* GL_SAMPLER_3D */
+ 1740, /* GL_SAMPLER_CUBE */
+ 1726, /* GL_SAMPLER_1D_SHADOW */
+ 1734, /* GL_SAMPLER_2D_SHADOW */
+ 1732, /* GL_SAMPLER_2D_RECT */
+ 1733, /* GL_SAMPLER_2D_RECT_SHADOW */
+ 572, /* GL_FLOAT_MAT2x3 */
+ 573, /* GL_FLOAT_MAT2x4 */
+ 576, /* GL_FLOAT_MAT3x2 */
+ 577, /* GL_FLOAT_MAT3x4 */
+ 580, /* GL_FLOAT_MAT4x2 */
+ 581, /* GL_FLOAT_MAT4x3 */
398, /* GL_DELETE_STATUS */
289, /* GL_COMPILE_STATUS */
- 853, /* GL_LINK_STATUS */
- 2232, /* GL_VALIDATE_STATUS */
- 750, /* GL_INFO_LOG_LENGTH */
+ 869, /* GL_LINK_STATUS */
+ 2249, /* GL_VALIDATE_STATUS */
+ 766, /* GL_INFO_LOG_LENGTH */
64, /* GL_ATTACHED_SHADERS */
21, /* GL_ACTIVE_UNIFORMS */
22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- 1766, /* GL_SHADER_SOURCE_LENGTH */
+ 1783, /* GL_SHADER_SOURCE_LENGTH */
15, /* GL_ACTIVE_ATTRIBUTES */
16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
- 603, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- 1769, /* GL_SHADING_LANGUAGE_VERSION */
+ 619, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ 1786, /* GL_SHADING_LANGUAGE_VERSION */
375, /* GL_CURRENT_PROGRAM */
- 1315, /* GL_PALETTE4_RGB8_OES */
- 1317, /* GL_PALETTE4_RGBA8_OES */
- 1313, /* GL_PALETTE4_R5_G6_B5_OES */
- 1316, /* GL_PALETTE4_RGBA4_OES */
- 1314, /* GL_PALETTE4_RGB5_A1_OES */
- 1320, /* GL_PALETTE8_RGB8_OES */
- 1322, /* GL_PALETTE8_RGBA8_OES */
- 1318, /* GL_PALETTE8_R5_G6_B5_OES */
- 1321, /* GL_PALETTE8_RGBA4_OES */
- 1319, /* GL_PALETTE8_RGB5_A1_OES */
- 731, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
- 729, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- 1367, /* GL_POINT_SIZE_ARRAY_OES */
- 2036, /* GL_TEXTURE_CROP_RECT_OES */
- 1005, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- 1366, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- 2215, /* GL_UNSIGNED_NORMALIZED */
- 1969, /* GL_TEXTURE_1D_ARRAY */
- 1505, /* GL_PROXY_TEXTURE_1D_ARRAY */
- 1972, /* GL_TEXTURE_2D_ARRAY */
- 1509, /* GL_PROXY_TEXTURE_2D_ARRAY */
- 1980, /* GL_TEXTURE_BINDING_1D_ARRAY */
- 1983, /* GL_TEXTURE_BINDING_2D_ARRAY */
- 1057, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
- 2000, /* GL_TEXTURE_BUFFER */
- 1111, /* GL_MAX_TEXTURE_BUFFER_SIZE */
- 1987, /* GL_TEXTURE_BINDING_BUFFER */
- 2002, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- 2004, /* GL_TEXTURE_BUFFER_FORMAT */
- 1542, /* GL_R11F_G11F_B10F */
- 2181, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- 1654, /* GL_RGB9_E5 */
- 2190, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- 2110, /* GL_TEXTURE_SHARED_SIZE */
- 1822, /* GL_SRGB */
- 1823, /* GL_SRGB8 */
- 1825, /* GL_SRGB_ALPHA */
- 1824, /* GL_SRGB8_ALPHA8 */
- 1782, /* GL_SLUMINANCE_ALPHA */
- 1781, /* GL_SLUMINANCE8_ALPHA8 */
- 1779, /* GL_SLUMINANCE */
- 1780, /* GL_SLUMINANCE8 */
+ 1332, /* GL_PALETTE4_RGB8_OES */
+ 1334, /* GL_PALETTE4_RGBA8_OES */
+ 1330, /* GL_PALETTE4_R5_G6_B5_OES */
+ 1333, /* GL_PALETTE4_RGBA4_OES */
+ 1331, /* GL_PALETTE4_RGB5_A1_OES */
+ 1337, /* GL_PALETTE8_RGB8_OES */
+ 1339, /* GL_PALETTE8_RGBA8_OES */
+ 1335, /* GL_PALETTE8_R5_G6_B5_OES */
+ 1338, /* GL_PALETTE8_RGBA4_OES */
+ 1336, /* GL_PALETTE8_RGB5_A1_OES */
+ 747, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ 745, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ 1384, /* GL_POINT_SIZE_ARRAY_OES */
+ 2053, /* GL_TEXTURE_CROP_RECT_OES */
+ 1021, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ 1383, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ 2232, /* GL_UNSIGNED_NORMALIZED */
+ 1986, /* GL_TEXTURE_1D_ARRAY */
+ 1522, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ 1989, /* GL_TEXTURE_2D_ARRAY */
+ 1526, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ 1997, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ 2000, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ 1074, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
+ 2017, /* GL_TEXTURE_BUFFER */
+ 1128, /* GL_MAX_TEXTURE_BUFFER_SIZE */
+ 2004, /* GL_TEXTURE_BINDING_BUFFER */
+ 2019, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ 2021, /* GL_TEXTURE_BUFFER_FORMAT */
+ 1559, /* GL_R11F_G11F_B10F */
+ 2198, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ 1671, /* GL_RGB9_E5 */
+ 2207, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ 2127, /* GL_TEXTURE_SHARED_SIZE */
+ 1839, /* GL_SRGB */
+ 1840, /* GL_SRGB8 */
+ 1842, /* GL_SRGB_ALPHA */
+ 1841, /* GL_SRGB8_ALPHA8 */
+ 1799, /* GL_SLUMINANCE_ALPHA */
+ 1798, /* GL_SLUMINANCE8_ALPHA8 */
+ 1796, /* GL_SLUMINANCE */
+ 1797, /* GL_SLUMINANCE8 */
312, /* GL_COMPRESSED_SRGB */
313, /* GL_COMPRESSED_SRGB_ALPHA */
310, /* GL_COMPRESSED_SLUMINANCE */
311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- 2145, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- 2134, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
- 1130, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
- 2143, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- 2139, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- 2137, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- 1449, /* GL_PRIMITIVES_GENERATED */
- 2141, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- 1546, /* GL_RASTERIZER_DISCARD */
- 1126, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
- 1128, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
- 769, /* GL_INTERLEAVED_ATTRIBS */
- 1758, /* GL_SEPARATE_ATTRIBS */
- 2129, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- 2131, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- 1385, /* GL_POINT_SPRITE_COORD_ORIGIN */
- 862, /* GL_LOWER_LEFT */
- 2229, /* GL_UPPER_LEFT */
- 1846, /* GL_STENCIL_BACK_REF */
- 1847, /* GL_STENCIL_BACK_VALUE_MASK */
- 1848, /* GL_STENCIL_BACK_WRITEMASK */
- 504, /* GL_DRAW_FRAMEBUFFER_BINDING */
- 1576, /* GL_RENDERBUFFER_BINDING */
- 1550, /* GL_READ_FRAMEBUFFER */
- 503, /* GL_DRAW_FRAMEBUFFER */
- 1551, /* GL_READ_FRAMEBUFFER_BINDING */
- 1595, /* GL_RENDERBUFFER_SAMPLES */
- 617, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- 614, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- 629, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- 627, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- 635, /* GL_FRAMEBUFFER_COMPLETE */
- 640, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- 655, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- 649, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- 644, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- 650, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- 646, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- 660, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- 666, /* GL_FRAMEBUFFER_UNSUPPORTED */
- 664, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- 1029, /* GL_MAX_COLOR_ATTACHMENTS */
+ 2162, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ 2151, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ 1147, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
+ 2160, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ 2156, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ 2154, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ 1466, /* GL_PRIMITIVES_GENERATED */
+ 2158, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ 1563, /* GL_RASTERIZER_DISCARD */
+ 1143, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
+ 1145, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
+ 785, /* GL_INTERLEAVED_ATTRIBS */
+ 1775, /* GL_SEPARATE_ATTRIBS */
+ 2146, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ 2148, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ 1402, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ 878, /* GL_LOWER_LEFT */
+ 2246, /* GL_UPPER_LEFT */
+ 1863, /* GL_STENCIL_BACK_REF */
+ 1864, /* GL_STENCIL_BACK_VALUE_MASK */
+ 1865, /* GL_STENCIL_BACK_WRITEMASK */
+ 520, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ 1593, /* GL_RENDERBUFFER_BINDING */
+ 1567, /* GL_READ_FRAMEBUFFER */
+ 519, /* GL_DRAW_FRAMEBUFFER */
+ 1568, /* GL_READ_FRAMEBUFFER_BINDING */
+ 1612, /* GL_RENDERBUFFER_SAMPLES */
+ 633, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ 630, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ 645, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ 640, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ 643, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ 651, /* GL_FRAMEBUFFER_COMPLETE */
+ 656, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ 671, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ 665, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ 660, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ 666, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ 662, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ 676, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ 682, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ 680, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ 1045, /* GL_MAX_COLOR_ATTACHMENTS */
196, /* GL_COLOR_ATTACHMENT0 */
199, /* GL_COLOR_ATTACHMENT1 */
213, /* GL_COLOR_ATTACHMENT2 */
@@ -6066,184 +6100,184 @@ static const unsigned reduced_enums[1564] =
208, /* GL_COLOR_ATTACHMENT14 */
210, /* GL_COLOR_ATTACHMENT15 */
403, /* GL_DEPTH_ATTACHMENT */
- 1835, /* GL_STENCIL_ATTACHMENT */
- 605, /* GL_FRAMEBUFFER */
- 1573, /* GL_RENDERBUFFER */
- 1599, /* GL_RENDERBUFFER_WIDTH */
- 1586, /* GL_RENDERBUFFER_HEIGHT */
- 1589, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- 1867, /* GL_STENCIL_INDEX_EXT */
- 1856, /* GL_STENCIL_INDEX1 */
- 1861, /* GL_STENCIL_INDEX4 */
- 1864, /* GL_STENCIL_INDEX8 */
- 1857, /* GL_STENCIL_INDEX16 */
- 1593, /* GL_RENDERBUFFER_RED_SIZE */
- 1584, /* GL_RENDERBUFFER_GREEN_SIZE */
- 1579, /* GL_RENDERBUFFER_BLUE_SIZE */
- 1574, /* GL_RENDERBUFFER_ALPHA_SIZE */
- 1581, /* GL_RENDERBUFFER_DEPTH_SIZE */
- 1597, /* GL_RENDERBUFFER_STENCIL_SIZE */
- 658, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- 1106, /* GL_MAX_SAMPLES */
- 2072, /* GL_TEXTURE_GEN_STR_OES */
- 705, /* GL_HALF_FLOAT_OES */
- 1640, /* GL_RGB565 */
- 1671, /* GL_RGBA32UI */
- 1634, /* GL_RGB32UI */
+ 1852, /* GL_STENCIL_ATTACHMENT */
+ 621, /* GL_FRAMEBUFFER */
+ 1590, /* GL_RENDERBUFFER */
+ 1616, /* GL_RENDERBUFFER_WIDTH */
+ 1603, /* GL_RENDERBUFFER_HEIGHT */
+ 1606, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ 1884, /* GL_STENCIL_INDEX_EXT */
+ 1873, /* GL_STENCIL_INDEX1 */
+ 1878, /* GL_STENCIL_INDEX4 */
+ 1881, /* GL_STENCIL_INDEX8 */
+ 1874, /* GL_STENCIL_INDEX16 */
+ 1610, /* GL_RENDERBUFFER_RED_SIZE */
+ 1601, /* GL_RENDERBUFFER_GREEN_SIZE */
+ 1596, /* GL_RENDERBUFFER_BLUE_SIZE */
+ 1591, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ 1598, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ 1614, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ 674, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ 1123, /* GL_MAX_SAMPLES */
+ 2089, /* GL_TEXTURE_GEN_STR_OES */
+ 721, /* GL_HALF_FLOAT_OES */
+ 1657, /* GL_RGB565 */
+ 1688, /* GL_RGBA32UI */
+ 1651, /* GL_RGB32UI */
40, /* GL_ALPHA32UI_EXT */
- 761, /* GL_INTENSITY32UI_EXT */
- 879, /* GL_LUMINANCE32UI_EXT */
- 896, /* GL_LUMINANCE_ALPHA32UI_EXT */
- 1662, /* GL_RGBA16UI */
- 1626, /* GL_RGB16UI */
+ 777, /* GL_INTENSITY32UI_EXT */
+ 895, /* GL_LUMINANCE32UI_EXT */
+ 912, /* GL_LUMINANCE_ALPHA32UI_EXT */
+ 1679, /* GL_RGBA16UI */
+ 1643, /* GL_RGB16UI */
37, /* GL_ALPHA16UI_EXT */
- 758, /* GL_INTENSITY16UI_EXT */
- 874, /* GL_LUMINANCE16UI_EXT */
- 894, /* GL_LUMINANCE_ALPHA16UI_EXT */
- 1681, /* GL_RGBA8UI */
- 1649, /* GL_RGB8UI */
+ 774, /* GL_INTENSITY16UI_EXT */
+ 890, /* GL_LUMINANCE16UI_EXT */
+ 910, /* GL_LUMINANCE_ALPHA16UI_EXT */
+ 1698, /* GL_RGBA8UI */
+ 1666, /* GL_RGB8UI */
45, /* GL_ALPHA8UI_EXT */
- 766, /* GL_INTENSITY8UI_EXT */
- 888, /* GL_LUMINANCE8UI_EXT */
- 898, /* GL_LUMINANCE_ALPHA8UI_EXT */
- 1669, /* GL_RGBA32I */
- 1632, /* GL_RGB32I */
+ 782, /* GL_INTENSITY8UI_EXT */
+ 904, /* GL_LUMINANCE8UI_EXT */
+ 914, /* GL_LUMINANCE_ALPHA8UI_EXT */
+ 1686, /* GL_RGBA32I */
+ 1649, /* GL_RGB32I */
39, /* GL_ALPHA32I_EXT */
- 760, /* GL_INTENSITY32I_EXT */
- 878, /* GL_LUMINANCE32I_EXT */
- 895, /* GL_LUMINANCE_ALPHA32I_EXT */
- 1660, /* GL_RGBA16I */
- 1624, /* GL_RGB16I */
+ 776, /* GL_INTENSITY32I_EXT */
+ 894, /* GL_LUMINANCE32I_EXT */
+ 911, /* GL_LUMINANCE_ALPHA32I_EXT */
+ 1677, /* GL_RGBA16I */
+ 1641, /* GL_RGB16I */
36, /* GL_ALPHA16I_EXT */
- 757, /* GL_INTENSITY16I_EXT */
- 873, /* GL_LUMINANCE16I_EXT */
- 893, /* GL_LUMINANCE_ALPHA16I_EXT */
- 1679, /* GL_RGBA8I */
- 1647, /* GL_RGB8I */
+ 773, /* GL_INTENSITY16I_EXT */
+ 889, /* GL_LUMINANCE16I_EXT */
+ 909, /* GL_LUMINANCE_ALPHA16I_EXT */
+ 1696, /* GL_RGBA8I */
+ 1664, /* GL_RGB8I */
44, /* GL_ALPHA8I_EXT */
- 765, /* GL_INTENSITY8I_EXT */
- 887, /* GL_LUMINANCE8I_EXT */
- 897, /* GL_LUMINANCE_ALPHA8I_EXT */
- 1563, /* GL_RED_INTEGER */
- 700, /* GL_GREEN_INTEGER */
+ 781, /* GL_INTENSITY8I_EXT */
+ 903, /* GL_LUMINANCE8I_EXT */
+ 913, /* GL_LUMINANCE_ALPHA8I_EXT */
+ 1580, /* GL_RED_INTEGER */
+ 716, /* GL_GREEN_INTEGER */
113, /* GL_BLUE_INTEGER */
49, /* GL_ALPHA_INTEGER_EXT */
- 1694, /* GL_RGB_INTEGER */
- 1688, /* GL_RGBA_INTEGER */
+ 1711, /* GL_RGB_INTEGER */
+ 1705, /* GL_RGBA_INTEGER */
84, /* GL_BGR_INTEGER */
82, /* GL_BGRA_INTEGER */
- 900, /* GL_LUMINANCE_INTEGER_EXT */
- 899, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
- 1690, /* GL_RGBA_INTEGER_MODE_EXT */
- 775, /* GL_INT_2_10_10_10_REV */
- 612, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
- 653, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
- 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- 1705, /* GL_SAMPLER_1D_ARRAY */
- 1711, /* GL_SAMPLER_2D_ARRAY */
- 1721, /* GL_SAMPLER_BUFFER */
- 1707, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- 1713, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- 1724, /* GL_SAMPLER_CUBE_SHADOW */
- 2209, /* GL_UNSIGNED_INT_VEC2 */
- 2211, /* GL_UNSIGNED_INT_VEC3 */
- 2213, /* GL_UNSIGNED_INT_VEC4 */
- 776, /* GL_INT_SAMPLER_1D */
- 780, /* GL_INT_SAMPLER_2D */
- 786, /* GL_INT_SAMPLER_3D */
- 790, /* GL_INT_SAMPLER_CUBE */
- 784, /* GL_INT_SAMPLER_2D_RECT */
- 777, /* GL_INT_SAMPLER_1D_ARRAY */
- 781, /* GL_INT_SAMPLER_2D_ARRAY */
- 788, /* GL_INT_SAMPLER_BUFFER */
- 2193, /* GL_UNSIGNED_INT_SAMPLER_1D */
- 2197, /* GL_UNSIGNED_INT_SAMPLER_2D */
- 2203, /* GL_UNSIGNED_INT_SAMPLER_3D */
- 2207, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- 2201, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- 2194, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- 2198, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- 2205, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
- 691, /* GL_GEOMETRY_SHADER */
- 694, /* GL_GEOMETRY_VERTICES_OUT_ARB */
- 688, /* GL_GEOMETRY_INPUT_TYPE_ARB */
- 690, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
- 1063, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
- 1146, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
- 1061, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
- 1055, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
- 1059, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
- 863, /* GL_LOW_FLOAT */
- 1148, /* GL_MEDIUM_FLOAT */
- 706, /* GL_HIGH_FLOAT */
- 864, /* GL_LOW_INT */
- 1149, /* GL_MEDIUM_INT */
- 707, /* GL_HIGH_INT */
- 2183, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- 774, /* GL_INT_10_10_10_2_OES */
- 1763, /* GL_SHADER_BINARY_FORMATS */
- 1251, /* GL_NUM_SHADER_BINARY_FORMATS */
- 1764, /* GL_SHADER_COMPILER */
- 1143, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
- 1135, /* GL_MAX_VARYING_VECTORS */
- 1052, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- 1539, /* GL_QUERY_WAIT */
- 1533, /* GL_QUERY_NO_WAIT */
- 1529, /* GL_QUERY_BY_REGION_WAIT */
- 1527, /* GL_QUERY_BY_REGION_NO_WAIT */
- 2127, /* GL_TRANSFORM_FEEDBACK */
- 2136, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- 2130, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- 2128, /* GL_TRANSFORM_FEEDBACK_BINDING */
- 1523, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- 546, /* GL_FIRST_VERTEX_CONVENTION */
- 808, /* GL_LAST_VERTEX_CONVENTION */
- 1497, /* GL_PROVOKING_VERTEX */
+ 916, /* GL_LUMINANCE_INTEGER_EXT */
+ 915, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
+ 1707, /* GL_RGBA_INTEGER_MODE_EXT */
+ 791, /* GL_INT_2_10_10_10_REV */
+ 628, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
+ 669, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
+ 668, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
+ 1722, /* GL_SAMPLER_1D_ARRAY */
+ 1728, /* GL_SAMPLER_2D_ARRAY */
+ 1738, /* GL_SAMPLER_BUFFER */
+ 1724, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ 1730, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ 1741, /* GL_SAMPLER_CUBE_SHADOW */
+ 2226, /* GL_UNSIGNED_INT_VEC2 */
+ 2228, /* GL_UNSIGNED_INT_VEC3 */
+ 2230, /* GL_UNSIGNED_INT_VEC4 */
+ 792, /* GL_INT_SAMPLER_1D */
+ 796, /* GL_INT_SAMPLER_2D */
+ 802, /* GL_INT_SAMPLER_3D */
+ 806, /* GL_INT_SAMPLER_CUBE */
+ 800, /* GL_INT_SAMPLER_2D_RECT */
+ 793, /* GL_INT_SAMPLER_1D_ARRAY */
+ 797, /* GL_INT_SAMPLER_2D_ARRAY */
+ 804, /* GL_INT_SAMPLER_BUFFER */
+ 2210, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ 2214, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ 2220, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ 2224, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ 2218, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ 2211, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ 2215, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ 2222, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ 707, /* GL_GEOMETRY_SHADER */
+ 710, /* GL_GEOMETRY_VERTICES_OUT_ARB */
+ 704, /* GL_GEOMETRY_INPUT_TYPE_ARB */
+ 706, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */
+ 1080, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */
+ 1163, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */
+ 1078, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */
+ 1072, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */
+ 1076, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */
+ 879, /* GL_LOW_FLOAT */
+ 1165, /* GL_MEDIUM_FLOAT */
+ 722, /* GL_HIGH_FLOAT */
+ 880, /* GL_LOW_INT */
+ 1166, /* GL_MEDIUM_INT */
+ 723, /* GL_HIGH_INT */
+ 2200, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ 790, /* GL_INT_10_10_10_2_OES */
+ 1780, /* GL_SHADER_BINARY_FORMATS */
+ 1268, /* GL_NUM_SHADER_BINARY_FORMATS */
+ 1781, /* GL_SHADER_COMPILER */
+ 1160, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ 1152, /* GL_MAX_VARYING_VECTORS */
+ 1069, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ 1556, /* GL_QUERY_WAIT */
+ 1550, /* GL_QUERY_NO_WAIT */
+ 1546, /* GL_QUERY_BY_REGION_WAIT */
+ 1544, /* GL_QUERY_BY_REGION_NO_WAIT */
+ 2144, /* GL_TRANSFORM_FEEDBACK */
+ 2153, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ 2147, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ 2145, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ 1540, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ 562, /* GL_FIRST_VERTEX_CONVENTION */
+ 824, /* GL_LAST_VERTEX_CONVENTION */
+ 1514, /* GL_PROVOKING_VERTEX */
354, /* GL_COPY_READ_BUFFER */
355, /* GL_COPY_WRITE_BUFFER */
- 1566, /* GL_RED_SNORM */
- 1701, /* GL_RG_SNORM */
- 1700, /* GL_RGB_SNORM */
- 1693, /* GL_RGBA_SNORM */
- 1545, /* GL_R8_SNORM */
- 1614, /* GL_RG8_SNORM */
- 1653, /* GL_RGB8_SNORM */
- 1685, /* GL_RGBA8_SNORM */
- 1543, /* GL_R16_SNORM */
- 1613, /* GL_RG16_SNORM */
- 1629, /* GL_RGB16_SNORM */
- 1665, /* GL_RGBA16_SNORM */
- 1775, /* GL_SIGNED_NORMALIZED */
- 1451, /* GL_PRIMITIVE_RESTART */
- 1452, /* GL_PRIMITIVE_RESTART_INDEX */
- 1108, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- 1265, /* GL_OBJECT_TYPE */
- 1888, /* GL_SYNC_CONDITION */
- 1893, /* GL_SYNC_STATUS */
- 1890, /* GL_SYNC_FLAGS */
- 1889, /* GL_SYNC_FENCE */
- 1892, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- 2176, /* GL_UNSIGNALED */
- 1774, /* GL_SIGNALED */
+ 1583, /* GL_RED_SNORM */
+ 1718, /* GL_RG_SNORM */
+ 1717, /* GL_RGB_SNORM */
+ 1710, /* GL_RGBA_SNORM */
+ 1562, /* GL_R8_SNORM */
+ 1631, /* GL_RG8_SNORM */
+ 1670, /* GL_RGB8_SNORM */
+ 1702, /* GL_RGBA8_SNORM */
+ 1560, /* GL_R16_SNORM */
+ 1630, /* GL_RG16_SNORM */
+ 1646, /* GL_RGB16_SNORM */
+ 1682, /* GL_RGBA16_SNORM */
+ 1792, /* GL_SIGNED_NORMALIZED */
+ 1468, /* GL_PRIMITIVE_RESTART */
+ 1469, /* GL_PRIMITIVE_RESTART_INDEX */
+ 1125, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ 1282, /* GL_OBJECT_TYPE */
+ 1905, /* GL_SYNC_CONDITION */
+ 1910, /* GL_SYNC_STATUS */
+ 1907, /* GL_SYNC_FLAGS */
+ 1906, /* GL_SYNC_FENCE */
+ 1909, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ 2193, /* GL_UNSIGNALED */
+ 1791, /* GL_SIGNALED */
54, /* GL_ALREADY_SIGNALED */
- 2122, /* GL_TIMEOUT_EXPIRED */
+ 2139, /* GL_TIMEOUT_EXPIRED */
315, /* GL_CONDITION_SATISFIED */
- 2293, /* GL_WAIT_FAILED */
+ 2310, /* GL_WAIT_FAILED */
126, /* GL_BUFFER_ACCESS_FLAGS */
132, /* GL_BUFFER_MAP_LENGTH */
133, /* GL_BUFFER_MAP_OFFSET */
- 1138, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
- 1053, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
- 1054, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
- 1049, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
+ 1155, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */
+ 1070, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */
+ 1071, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */
+ 1066, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
330, /* GL_CONTEXT_PROFILE_MASK */
- 531, /* GL_EVAL_BIT */
- 1548, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- 855, /* GL_LIST_BIT */
- 1995, /* GL_TEXTURE_BIT */
- 1744, /* GL_SCISSOR_BIT */
+ 547, /* GL_EVAL_BIT */
+ 1565, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ 871, /* GL_LIST_BIT */
+ 2012, /* GL_TEXTURE_BIT */
+ 1761, /* GL_SCISSOR_BIT */
30, /* GL_ALL_ATTRIB_BITS */
- 1214, /* GL_MULTISAMPLE_BIT */
+ 1231, /* GL_MULTISAMPLE_BIT */
31, /* GL_ALL_CLIENT_ATTRIB_BITS */
};
diff --git a/mesalib/src/mesa/main/eval.h b/mesalib/src/mesa/main/eval.h
index c6a37c135..5a4203138 100644
--- a/mesalib/src/mesa/main/eval.h
+++ b/mesalib/src/mesa/main/eval.h
@@ -1,111 +1,111 @@
-/**
- * \file eval.h
- * Eval operations.
- *
- * \if subset
- * (No-op)
- *
- * \endif
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * 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.
- */
-
-
-#ifndef EVAL_H
-#define EVAL_H
-
-
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-
-#if FEATURE_evaluators
-
-#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) \
- do { \
- (vfmt)->EvalCoord1f = impl ## EvalCoord1f; \
- (vfmt)->EvalCoord1fv = impl ## EvalCoord1fv; \
- (vfmt)->EvalCoord2f = impl ## EvalCoord2f; \
- (vfmt)->EvalCoord2fv = impl ## EvalCoord2fv; \
- (vfmt)->EvalPoint1 = impl ## EvalPoint1; \
- (vfmt)->EvalPoint2 = impl ## EvalPoint2; \
- (vfmt)->EvalMesh1 = impl ## EvalMesh1; \
- (vfmt)->EvalMesh2 = impl ## EvalMesh2; \
- } while (0)
-
-extern GLuint _mesa_evaluator_components( GLenum target );
-
-
-extern void gl_free_control_points( struct gl_context *ctx,
- GLenum target, GLfloat *data );
-
-
-extern GLfloat *_mesa_copy_map_points1f( GLenum target,
- GLint ustride, GLint uorder,
- const GLfloat *points );
-
-extern GLfloat *_mesa_copy_map_points1d( GLenum target,
- GLint ustride, GLint uorder,
- const GLdouble *points );
-
-extern GLfloat *_mesa_copy_map_points2f( GLenum target,
- GLint ustride, GLint uorder,
- GLint vstride, GLint vorder,
- const GLfloat *points );
-
-extern GLfloat *_mesa_copy_map_points2d(GLenum target,
- GLint ustride, GLint uorder,
- GLint vstride, GLint vorder,
- const GLdouble *points );
-
-extern void
-_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt);
-
-extern void
-_mesa_init_eval_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_evaluators */
-
-#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) do { } while (0)
-
-static INLINE void
-_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
- const GLvertexformat *vfmt)
-{
-}
-
-static INLINE void
-_mesa_init_eval_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_evaluators */
-
-extern void _mesa_init_eval( struct gl_context *ctx );
-extern void _mesa_free_eval_data( struct gl_context *ctx );
-
-
-#endif /* EVAL_H */
+/**
+ * \file eval.h
+ * Eval operations.
+ *
+ * \if subset
+ * (No-op)
+ *
+ * \endif
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * 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.
+ */
+
+
+#ifndef EVAL_H
+#define EVAL_H
+
+
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+
+#if FEATURE_evaluators
+
+#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) \
+ do { \
+ (vfmt)->EvalCoord1f = impl ## EvalCoord1f; \
+ (vfmt)->EvalCoord1fv = impl ## EvalCoord1fv; \
+ (vfmt)->EvalCoord2f = impl ## EvalCoord2f; \
+ (vfmt)->EvalCoord2fv = impl ## EvalCoord2fv; \
+ (vfmt)->EvalPoint1 = impl ## EvalPoint1; \
+ (vfmt)->EvalPoint2 = impl ## EvalPoint2; \
+ (vfmt)->EvalMesh1 = impl ## EvalMesh1; \
+ (vfmt)->EvalMesh2 = impl ## EvalMesh2; \
+ } while (0)
+
+extern GLuint _mesa_evaluator_components( GLenum target );
+
+
+extern void gl_free_control_points( struct gl_context *ctx,
+ GLenum target, GLfloat *data );
+
+
+extern GLfloat *_mesa_copy_map_points1f( GLenum target,
+ GLint ustride, GLint uorder,
+ const GLfloat *points );
+
+extern GLfloat *_mesa_copy_map_points1d( GLenum target,
+ GLint ustride, GLint uorder,
+ const GLdouble *points );
+
+extern GLfloat *_mesa_copy_map_points2f( GLenum target,
+ GLint ustride, GLint uorder,
+ GLint vstride, GLint vorder,
+ const GLfloat *points );
+
+extern GLfloat *_mesa_copy_map_points2d(GLenum target,
+ GLint ustride, GLint uorder,
+ GLint vstride, GLint vorder,
+ const GLdouble *points );
+
+extern void
+_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt);
+
+extern void
+_mesa_init_eval_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_evaluators */
+
+#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) do { } while (0)
+
+static inline void
+_mesa_install_eval_vtxfmt(struct _glapi_table *disp,
+ const GLvertexformat *vfmt)
+{
+}
+
+static inline void
+_mesa_init_eval_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_evaluators */
+
+extern void _mesa_init_eval( struct gl_context *ctx );
+extern void _mesa_free_eval_data( struct gl_context *ctx );
+
+
+#endif /* EVAL_H */
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index af1a3ff85..52b928e41 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -85,7 +85,7 @@ static const struct extension extension_table[] = {
{ "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 },
{ "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 },
{ "GL_ARB_depth_texture", o(ARB_depth_texture), GL, 2001 },
- { "GL_ARB_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
+ { "GL_ARB_draw_buffers", o(dummy_true), GL, 2002 },
{ "GL_ARB_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
{ "GL_ARB_draw_elements_base_vertex", o(ARB_draw_elements_base_vertex), GL, 2009 },
{ "GL_ARB_draw_instanced", o(ARB_draw_instanced), GL, 2008 },
@@ -263,7 +263,7 @@ static const struct extension extension_table[] = {
{ "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 },
{ "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 },
{ "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
- { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
+ { "GL_ATI_draw_buffers", o(dummy_true), GL, 2002 },
{ "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 },
{ "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 },
{ "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 },
@@ -284,6 +284,8 @@ static const struct extension extension_table[] = {
{ "GL_NV_blend_square", o(NV_blend_square), GL, 1999 },
{ "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 },
{ "GL_NV_depth_clamp", o(ARB_depth_clamp), GL, 2001 },
+ { "GL_NV_draw_buffers", o(dummy_true), ES2, 2011 },
+ { "GL_NV_fbo_color_attachments", o(EXT_framebuffer_object), ES2, 2010 },
{ "GL_NV_fragment_program", o(NV_fragment_program), GL, 2001 },
{ "GL_NV_fragment_program_option", o(NV_fragment_program_option), GL, 2005 },
{ "GL_NV_light_max_exponent", o(NV_light_max_exponent), GL, 1999 },
@@ -341,7 +343,6 @@ name_to_offset(const char* name)
*/
static const size_t default_extensions[] = {
o(ARB_copy_buffer),
- o(ARB_draw_buffers),
o(ARB_transpose_matrix),
o(ARB_window_pos),
@@ -376,7 +377,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx)
/*ctx->Extensions.ARB_copy_buffer = GL_TRUE;*/
ctx->Extensions.ARB_depth_clamp = GL_TRUE;
ctx->Extensions.ARB_depth_texture = GL_TRUE;
- /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
ctx->Extensions.ARB_draw_elements_base_vertex = GL_TRUE;
ctx->Extensions.ARB_draw_instanced = GL_TRUE;
ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE;
@@ -575,7 +575,6 @@ _mesa_enable_1_5_extensions(struct gl_context *ctx)
void
_mesa_enable_2_0_extensions(struct gl_context *ctx)
{
- /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
#if FEATURE_ARB_fragment_shader
ctx->Extensions.ARB_fragment_shader = GL_TRUE;
#endif
diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c
index fd371aba8..757115584 100644
--- a/mesalib/src/mesa/main/fbobject.c
+++ b/mesalib/src/mesa/main/fbobject.c
@@ -78,7 +78,7 @@ static struct gl_renderbuffer DummyRenderbuffer;
static struct gl_framebuffer IncompleteFramebuffer;
-static INLINE GLboolean
+static inline GLboolean
is_cube_face(GLenum target)
{
return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
@@ -89,7 +89,7 @@ is_cube_face(GLenum target)
/**
* Is the given FBO a user-created FBO?
*/
-static INLINE GLboolean
+static inline GLboolean
is_user_fbo(const struct gl_framebuffer *fb)
{
return fb->Name != 0;
@@ -99,7 +99,7 @@ is_user_fbo(const struct gl_framebuffer *fb)
/**
* Is the given FBO a window system FBO (like an X window)?
*/
-static INLINE GLboolean
+static inline GLboolean
is_winsys_fbo(const struct gl_framebuffer *fb)
{
return fb->Name == 0;
@@ -194,9 +194,11 @@ get_framebuffer_target(struct gl_context *ctx, GLenum target)
{
switch (target) {
case GL_DRAW_FRAMEBUFFER:
- return ctx->Extensions.EXT_framebuffer_blit ? ctx->DrawBuffer : NULL;
+ return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL
+ ? ctx->DrawBuffer : NULL;
case GL_READ_FRAMEBUFFER:
- return ctx->Extensions.EXT_framebuffer_blit ? ctx->ReadBuffer : NULL;
+ return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL
+ ? ctx->ReadBuffer : NULL;
case GL_FRAMEBUFFER_EXT:
return ctx->DrawBuffer;
default:
@@ -238,18 +240,27 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
case GL_COLOR_ATTACHMENT13_EXT:
case GL_COLOR_ATTACHMENT14_EXT:
case GL_COLOR_ATTACHMENT15_EXT:
+ /* Only OpenGL ES 1.x forbids color attachments other than
+ * GL_COLOR_ATTACHMENT0. For all other APIs the limit set by the
+ * hardware is used.
+ */
i = attachment - GL_COLOR_ATTACHMENT0_EXT;
- if (i >= ctx->Const.MaxColorAttachments) {
+ if (i >= ctx->Const.MaxColorAttachments
+ || (i > 0 && ctx->API == API_OPENGLES)) {
return NULL;
}
return &fb->Attachment[BUFFER_COLOR0 + i];
case GL_DEPTH_STENCIL_ATTACHMENT:
+ if (ctx->API != API_OPENGL)
+ return NULL;
/* fall-through */
case GL_DEPTH_BUFFER:
/* fall-through / new in GL 3.0 */
case GL_DEPTH_ATTACHMENT_EXT:
return &fb->Attachment[BUFFER_DEPTH];
case GL_STENCIL_BUFFER:
+ if (ctx->API != API_OPENGL)
+ return NULL;
/* fall-through / new in GL 3.0 */
case GL_STENCIL_ATTACHMENT_EXT:
return &fb->Attachment[BUFFER_STENCIL];
@@ -1220,7 +1231,67 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat)
return ctx->Extensions.EXT_texture_shared_exponent ? GL_RGB : 0;
case GL_R11F_G11F_B10F:
return ctx->Extensions.EXT_packed_float ? GL_RGB : 0;
- /* XXX add integer formats eventually */
+
+ case GL_RGBA8UI_EXT:
+ case GL_RGBA16UI_EXT:
+ case GL_RGBA32UI_EXT:
+ case GL_RGBA8I_EXT:
+ case GL_RGBA16I_EXT:
+ case GL_RGBA32I_EXT:
+ return ctx->Extensions.EXT_texture_integer ? GL_RGBA : 0;
+
+ case GL_RGB8UI_EXT:
+ case GL_RGB16UI_EXT:
+ case GL_RGB32UI_EXT:
+ case GL_RGB8I_EXT:
+ case GL_RGB16I_EXT:
+ case GL_RGB32I_EXT:
+ return ctx->Extensions.EXT_texture_integer ? GL_RGB : 0;
+
+ case GL_R8UI:
+ case GL_R8I:
+ case GL_R16UI:
+ case GL_R16I:
+ case GL_R32UI:
+ case GL_R32I:
+ return ctx->Extensions.ARB_texture_rg &&
+ ctx->Extensions.EXT_texture_integer ? GL_RED : 0;
+
+ case GL_RG8UI:
+ case GL_RG8I:
+ case GL_RG16UI:
+ case GL_RG16I:
+ case GL_RG32UI:
+ case GL_RG32I:
+ return ctx->Extensions.ARB_texture_rg &&
+ ctx->Extensions.EXT_texture_integer ? GL_RG : 0;
+
+ case GL_INTENSITY8I_EXT:
+ case GL_INTENSITY8UI_EXT:
+ case GL_INTENSITY16I_EXT:
+ case GL_INTENSITY16UI_EXT:
+ case GL_INTENSITY32I_EXT:
+ case GL_INTENSITY32UI_EXT:
+ return ctx->Extensions.EXT_texture_integer &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0;
+
+ case GL_LUMINANCE8I_EXT:
+ case GL_LUMINANCE8UI_EXT:
+ case GL_LUMINANCE16I_EXT:
+ case GL_LUMINANCE16UI_EXT:
+ case GL_LUMINANCE32I_EXT:
+ case GL_LUMINANCE32UI_EXT:
+ return ctx->Extensions.EXT_texture_integer &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0;
+
+ case GL_LUMINANCE_ALPHA8I_EXT:
+ case GL_LUMINANCE_ALPHA8UI_EXT:
+ case GL_LUMINANCE_ALPHA16I_EXT:
+ case GL_LUMINANCE_ALPHA16UI_EXT:
+ case GL_LUMINANCE_ALPHA32I_EXT:
+ case GL_LUMINANCE_ALPHA32UI_EXT:
+ return ctx->Extensions.EXT_texture_integer &&
+ ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0;
default:
return 0;
}
diff --git a/mesalib/src/mesa/main/fbobject.h b/mesalib/src/mesa/main/fbobject.h
index d9b06b9af..0a70a436d 100644
--- a/mesalib/src/mesa/main/fbobject.h
+++ b/mesalib/src/mesa/main/fbobject.h
@@ -1,195 +1,195 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 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 FBOBJECT_H
-#define FBOBJECT_H
-
-#include "compiler.h"
-#include "glheader.h"
-
-struct gl_context;
-struct gl_texture_object;
-
-extern void
-_mesa_init_fbobjects(struct gl_context *ctx);
-
-extern struct gl_framebuffer *
-_mesa_get_incomplete_framebuffer(void);
-
-extern struct gl_renderbuffer *
-_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id);
-
-extern struct gl_framebuffer *
-_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id);
-
-extern struct gl_renderbuffer_attachment *
-_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
- GLenum attachment);
-
-
-/** Return the texture image for a renderbuffer attachment */
-static INLINE struct gl_texture_image *
-_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att)
-{
- assert(att->Type == GL_TEXTURE);
- return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
-}
-
-
-/** Return the (const) texture image for a renderbuffer attachment */
-static INLINE const struct gl_texture_image *
-_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att)
-{
- assert(att->Type == GL_TEXTURE);
- return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
-}
-
-
-extern void
-_mesa_remove_attachment(struct gl_context *ctx,
- struct gl_renderbuffer_attachment *att);
-
-extern void
-_mesa_set_texture_attachment(struct gl_context *ctx,
- struct gl_framebuffer *fb,
- struct gl_renderbuffer_attachment *att,
- struct gl_texture_object *texObj,
- GLenum texTarget, GLuint level, GLuint zoffset);
-
-extern void
-_mesa_set_renderbuffer_attachment(struct gl_context *ctx,
- struct gl_renderbuffer_attachment *att,
- struct gl_renderbuffer *rb);
-
-extern void
-_mesa_framebuffer_renderbuffer(struct gl_context *ctx,
- struct gl_framebuffer *fb,
- GLenum attachment, struct gl_renderbuffer *rb);
-
-extern void
-_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb);
-
-extern void
-_mesa_test_framebuffer_completeness(struct gl_context *ctx,
- struct gl_framebuffer *fb);
-
-extern GLboolean
-_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat);
-
-extern GLenum
-_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsRenderbufferEXT(GLuint renderbuffer);
-
-extern void GLAPIENTRY
-_mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer);
-
-extern void GLAPIENTRY
-_mesa_DeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers);
-
-extern void GLAPIENTRY
-_mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers);
-
-extern void GLAPIENTRY
-_mesa_RenderbufferStorageEXT(GLenum target, GLenum internalformat,
- GLsizei width, GLsizei height);
-
-extern void GLAPIENTRY
-_mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples,
- GLenum internalformat,
- 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
-_mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname,
- GLint *params);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsFramebufferEXT(GLuint framebuffer);
-
-extern void GLAPIENTRY
-_mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer);
-
-extern void GLAPIENTRY
-_mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers);
-
-extern void GLAPIENTRY
-_mesa_GenFramebuffersEXT(GLsizei n, GLuint *framebuffers);
-
-extern GLenum GLAPIENTRY
-_mesa_CheckFramebufferStatusEXT(GLenum target);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture, GLint level);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
- GLenum textarget, GLuint texture,
- GLint level, GLint zoffset);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
- GLuint texture, GLint level, GLint layer);
-
-extern void GLAPIENTRY
-_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
- GLenum renderbuffertarget,
- GLuint renderbuffer);
-
-extern void GLAPIENTRY
-_mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
- GLenum pname, GLint *params);
-
-extern void GLAPIENTRY
-_mesa_GenerateMipmapEXT(GLenum target);
-
-
-extern void GLAPIENTRY
-_mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
- GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTextureARB(GLenum target, GLenum attachment,
- GLuint texture, GLint level);
-
-extern void GLAPIENTRY
-_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment,
- GLuint texture, GLint level, GLenum face);
-
-
-#endif /* FBOBJECT_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 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 FBOBJECT_H
+#define FBOBJECT_H
+
+#include "compiler.h"
+#include "glheader.h"
+
+struct gl_context;
+struct gl_texture_object;
+
+extern void
+_mesa_init_fbobjects(struct gl_context *ctx);
+
+extern struct gl_framebuffer *
+_mesa_get_incomplete_framebuffer(void);
+
+extern struct gl_renderbuffer *
+_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id);
+
+extern struct gl_framebuffer *
+_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id);
+
+extern struct gl_renderbuffer_attachment *
+_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb,
+ GLenum attachment);
+
+
+/** Return the texture image for a renderbuffer attachment */
+static inline struct gl_texture_image *
+_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att)
+{
+ assert(att->Type == GL_TEXTURE);
+ return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+}
+
+
+/** Return the (const) texture image for a renderbuffer attachment */
+static inline const struct gl_texture_image *
+_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att)
+{
+ assert(att->Type == GL_TEXTURE);
+ return att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+}
+
+
+extern void
+_mesa_remove_attachment(struct gl_context *ctx,
+ struct gl_renderbuffer_attachment *att);
+
+extern void
+_mesa_set_texture_attachment(struct gl_context *ctx,
+ struct gl_framebuffer *fb,
+ struct gl_renderbuffer_attachment *att,
+ struct gl_texture_object *texObj,
+ GLenum texTarget, GLuint level, GLuint zoffset);
+
+extern void
+_mesa_set_renderbuffer_attachment(struct gl_context *ctx,
+ struct gl_renderbuffer_attachment *att,
+ struct gl_renderbuffer *rb);
+
+extern void
+_mesa_framebuffer_renderbuffer(struct gl_context *ctx,
+ struct gl_framebuffer *fb,
+ GLenum attachment, struct gl_renderbuffer *rb);
+
+extern void
+_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb);
+
+extern void
+_mesa_test_framebuffer_completeness(struct gl_context *ctx,
+ struct gl_framebuffer *fb);
+
+extern GLboolean
+_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat);
+
+extern GLenum
+_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsRenderbufferEXT(GLuint renderbuffer);
+
+extern void GLAPIENTRY
+_mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer);
+
+extern void GLAPIENTRY
+_mesa_DeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers);
+
+extern void GLAPIENTRY
+_mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers);
+
+extern void GLAPIENTRY
+_mesa_RenderbufferStorageEXT(GLenum target, GLenum internalformat,
+ GLsizei width, GLsizei height);
+
+extern void GLAPIENTRY
+_mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples,
+ GLenum internalformat,
+ 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
+_mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname,
+ GLint *params);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsFramebufferEXT(GLuint framebuffer);
+
+extern void GLAPIENTRY
+_mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer);
+
+extern void GLAPIENTRY
+_mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers);
+
+extern void GLAPIENTRY
+_mesa_GenFramebuffersEXT(GLsizei n, GLuint *framebuffers);
+
+extern GLenum GLAPIENTRY
+_mesa_CheckFramebufferStatusEXT(GLenum target);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment,
+ GLenum textarget, GLuint texture, GLint level);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment,
+ GLenum textarget, GLuint texture, GLint level);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
+ GLenum textarget, GLuint texture,
+ GLint level, GLint zoffset);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment,
+ GLuint texture, GLint level, GLint layer);
+
+extern void GLAPIENTRY
+_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment,
+ GLenum renderbuffertarget,
+ GLuint renderbuffer);
+
+extern void GLAPIENTRY
+_mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment,
+ GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_GenerateMipmapEXT(GLenum target);
+
+
+extern void GLAPIENTRY
+_mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+ GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+ GLbitfield mask, GLenum filter);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTextureARB(GLenum target, GLenum attachment,
+ GLuint texture, GLint level);
+
+extern void GLAPIENTRY
+_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment,
+ GLuint texture, GLint level, GLenum face);
+
+
+#endif /* FBOBJECT_H */
diff --git a/mesalib/src/mesa/main/feedback.c b/mesalib/src/mesa/main/feedback.c
index d73aa08fa..cb5f49f67 100644
--- a/mesalib/src/mesa/main/feedback.c
+++ b/mesalib/src/mesa/main/feedback.c
@@ -197,7 +197,7 @@ _mesa_SelectBuffer( GLsizei size, GLuint *buffer )
* Verifies there is free space in the buffer to write the value and
* increments the pointer.
*/
-static INLINE void
+static inline void
write_record(struct gl_context *ctx, GLuint value)
{
if (ctx->Select.BufferCount < ctx->Select.BufferSize) {
diff --git a/mesalib/src/mesa/main/feedback.h b/mesalib/src/mesa/main/feedback.h
index 24ce53af4..6d256ee8f 100644
--- a/mesalib/src/mesa/main/feedback.h
+++ b/mesalib/src/mesa/main/feedback.h
@@ -1,99 +1,99 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 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, 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 FEEDBACK_H
-#define FEEDBACK_H
-
-
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-
-#if FEATURE_feedback
-
-extern void
-_mesa_feedback_vertex( struct gl_context *ctx,
- const GLfloat win[4],
- const GLfloat color[4],
- const GLfloat texcoord[4] );
-
-
-static INLINE void
-_mesa_feedback_token( struct gl_context *ctx, GLfloat token )
-{
- if (ctx->Feedback.Count < ctx->Feedback.BufferSize) {
- ctx->Feedback.Buffer[ctx->Feedback.Count] = token;
- }
- ctx->Feedback.Count++;
-}
-
-
-extern void
-_mesa_update_hitflag( struct gl_context *ctx, GLfloat z );
-
-
-extern void
-_mesa_init_feedback_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_feedback */
-
-#include "main/compiler.h"
-
-static INLINE void
-_mesa_feedback_vertex( struct gl_context *ctx,
- const GLfloat win[4],
- const GLfloat color[4],
- const GLfloat texcoord[4] )
-{
- /* render mode is always GL_RENDER */
- ASSERT_NO_FEATURE();
-}
-
-
-static INLINE void
-_mesa_feedback_token( struct gl_context *ctx, GLfloat token )
-{
- /* render mode is always GL_RENDER */
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_update_hitflag( struct gl_context *ctx, GLfloat z )
-{
- /* render mode is always GL_RENDER */
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_init_feedback_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_feedback */
-
-extern void
-_mesa_init_feedback( struct gl_context *ctx );
-
-#endif /* FEEDBACK_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 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, 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 FEEDBACK_H
+#define FEEDBACK_H
+
+
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+
+#if FEATURE_feedback
+
+extern void
+_mesa_feedback_vertex( struct gl_context *ctx,
+ const GLfloat win[4],
+ const GLfloat color[4],
+ const GLfloat texcoord[4] );
+
+
+static inline void
+_mesa_feedback_token( struct gl_context *ctx, GLfloat token )
+{
+ if (ctx->Feedback.Count < ctx->Feedback.BufferSize) {
+ ctx->Feedback.Buffer[ctx->Feedback.Count] = token;
+ }
+ ctx->Feedback.Count++;
+}
+
+
+extern void
+_mesa_update_hitflag( struct gl_context *ctx, GLfloat z );
+
+
+extern void
+_mesa_init_feedback_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_feedback */
+
+#include "main/compiler.h"
+
+static inline void
+_mesa_feedback_vertex( struct gl_context *ctx,
+ const GLfloat win[4],
+ const GLfloat color[4],
+ const GLfloat texcoord[4] )
+{
+ /* render mode is always GL_RENDER */
+ ASSERT_NO_FEATURE();
+}
+
+
+static inline void
+_mesa_feedback_token( struct gl_context *ctx, GLfloat token )
+{
+ /* render mode is always GL_RENDER */
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_update_hitflag( struct gl_context *ctx, GLfloat z )
+{
+ /* render mode is always GL_RENDER */
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_init_feedback_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_feedback */
+
+extern void
+_mesa_init_feedback( struct gl_context *ctx );
+
+#endif /* FEEDBACK_H */
diff --git a/mesalib/src/mesa/main/format_unpack.c b/mesalib/src/mesa/main/format_unpack.c
index dadff0556..2051f68fb 100644
--- a/mesalib/src/mesa/main/format_unpack.c
+++ b/mesalib/src/mesa/main/format_unpack.c
@@ -34,7 +34,7 @@
* linear RGB value in [0, 1].
* Implemented with a 256-entry lookup table.
*/
-static INLINE GLfloat
+static inline GLfloat
nonlinear_to_linear(GLubyte cs8)
{
static GLfloat table[256];
diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c
index 11d670689..02b20284b 100644
--- a/mesalib/src/mesa/main/formats.c
+++ b/mesalib/src/mesa/main/formats.c
@@ -756,6 +756,251 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
},
/* unnormalized signed int formats */
+ /* unnormalized unsigned int formats */
+ {
+ MESA_FORMAT_ALPHA_UINT8,
+ "MESA_FORMAT_ALPHA_UINT8",
+ GL_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 8,
+ 0, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_ALPHA_UINT16,
+ "MESA_FORMAT_ALPHA_UINT16",
+ GL_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_ALPHA_UINT32,
+ "MESA_FORMAT_ALPHA_UINT32",
+ GL_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_ALPHA_INT8,
+ "MESA_FORMAT_ALPHA_INT8",
+ GL_ALPHA,
+ GL_INT,
+ 0, 0, 0, 8,
+ 0, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_ALPHA_INT16,
+ "MESA_FORMAT_ALPHA_INT16",
+ GL_ALPHA,
+ GL_INT,
+ 0, 0, 0, 16,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_ALPHA_INT32,
+ "MESA_FORMAT_ALPHA_INT32",
+ GL_ALPHA,
+ GL_INT,
+ 0, 0, 0, 32,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_INTENSITY_UINT8,
+ "MESA_FORMAT_INTENSITY_UINT8",
+ GL_INTENSITY,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 0, 8, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_INTENSITY_UINT16,
+ "MESA_FORMAT_INTENSITY_UINT16",
+ GL_INTENSITY,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 0, 16, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_INTENSITY_UINT32,
+ "MESA_FORMAT_INTENSITY_UINT32",
+ GL_INTENSITY,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 0, 32, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_INTENSITY_INT8,
+ "MESA_FORMAT_INTENSITY_INT8",
+ GL_INTENSITY,
+ GL_INT,
+ 0, 0, 0, 0,
+ 0, 8, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_INTENSITY_INT16,
+ "MESA_FORMAT_INTENSITY_INT16",
+ GL_INTENSITY,
+ GL_INT,
+ 0, 0, 0, 0,
+ 0, 16, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_INTENSITY_INT32,
+ "MESA_FORMAT_INTENSITY_INT32",
+ GL_INTENSITY,
+ GL_INT,
+ 0, 0, 0, 0,
+ 0, 32, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_LUMINANCE_UINT8,
+ "MESA_FORMAT_LUMINANCE_UINT8",
+ GL_LUMINANCE,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 8, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_LUMINANCE_UINT16,
+ "MESA_FORMAT_LUMINANCE_UINT16",
+ GL_LUMINANCE,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 16, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_LUMINANCE_UINT32,
+ "MESA_FORMAT_LUMINANCE_UINT32",
+ GL_LUMINANCE,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 0,
+ 32, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_LUMINANCE_INT8,
+ "MESA_FORMAT_LUMINANCE_INT8",
+ GL_LUMINANCE,
+ GL_INT,
+ 0, 0, 0, 0,
+ 8, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_LUMINANCE_INT16,
+ "MESA_FORMAT_LUMINANCE_INT16",
+ GL_LUMINANCE,
+ GL_INT,
+ 0, 0, 0, 0,
+ 16, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_LUMINANCE_INT32,
+ "MESA_FORMAT_LUMINANCE_INT32",
+ GL_LUMINANCE,
+ GL_INT,
+ 0, 0, 0, 0,
+ 32, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
+ "MESA_FORMAT_LUMINANCE_ALPHA_UINT8",
+ GL_LUMINANCE_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 8,
+ 8, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
+ "MESA_FORMAT_LUMINANCE_ALPHA_UINT16",
+ GL_LUMINANCE_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 16,
+ 16, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
+ "MESA_FORMAT_LUMINANCE_ALPHA_UINT32",
+ GL_LUMINANCE_ALPHA,
+ GL_UNSIGNED_INT,
+ 0, 0, 0, 32,
+ 32, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_INT8,
+ "MESA_FORMAT_LUMINANCE_ALPHA_INT8",
+ GL_LUMINANCE_ALPHA,
+ GL_INT,
+ 0, 0, 0, 8,
+ 8, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_INT16,
+ "MESA_FORMAT_LUMINANCE_ALPHA_INT16",
+ GL_LUMINANCE_ALPHA,
+ GL_INT,
+ 0, 0, 0, 16,
+ 16, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_INT32,
+ "MESA_FORMAT_LUMINANCE_ALPHA_INT32",
+ GL_LUMINANCE_ALPHA,
+ GL_INT,
+ 0, 0, 0, 32,
+ 32, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+
+ {
+ MESA_FORMAT_R_INT8,
+ "MESA_FORMAT_R_INT8",
+ GL_RED,
+ GL_INT,
+ 8, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_RG_INT8,
+ "MESA_FORMAT_RG_INT8",
+ GL_RG,
+ GL_INT,
+ 8, 8, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_RGB_INT8,
+ "MESA_FORMAT_RGB_INT8",
+ GL_RGB,
+ GL_INT,
+ 8, 8, 8, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 3
+ },
{
MESA_FORMAT_RGBA_INT8,
"MESA_FORMAT_RGBA_INT8",
@@ -766,6 +1011,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 4
},
{
+ MESA_FORMAT_R_INT16,
+ "MESA_FORMAT_R_INT16",
+ GL_RED,
+ GL_INT,
+ 16, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_RG_INT16,
+ "MESA_FORMAT_RG_INT16",
+ GL_RG,
+ GL_INT,
+ 16, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_RGB_INT16,
+ "MESA_FORMAT_RGB_INT16",
+ GL_RGB,
+ GL_INT,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
+ },
+ {
MESA_FORMAT_RGBA_INT16,
"MESA_FORMAT_RGBA_INT16",
GL_RGBA,
@@ -775,6 +1047,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 8
},
{
+ MESA_FORMAT_R_INT32,
+ "MESA_FORMAT_R_INT32",
+ GL_RED,
+ GL_INT,
+ 32, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_RG_INT32,
+ "MESA_FORMAT_RG_INT32",
+ GL_RG,
+ GL_INT,
+ 32, 32, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_RGB_INT32,
+ "MESA_FORMAT_RGB_INT32",
+ GL_RGB,
+ GL_INT,
+ 32, 32, 32, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 12
+ },
+ {
MESA_FORMAT_RGBA_INT32,
"MESA_FORMAT_RGBA_INT32",
GL_RGBA,
@@ -783,8 +1082,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
0, 0, 0, 0, 0,
1, 1, 16
},
-
- /* unnormalized unsigned int formats */
+ {
+ MESA_FORMAT_R_UINT8,
+ "MESA_FORMAT_R_UINT8",
+ GL_RED,
+ GL_UNSIGNED_INT,
+ 8, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 1
+ },
+ {
+ MESA_FORMAT_RG_UINT8,
+ "MESA_FORMAT_RG_UINT8",
+ GL_RG,
+ GL_UNSIGNED_INT,
+ 8, 8, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_RGB_UINT8,
+ "MESA_FORMAT_RGB_UINT8",
+ GL_RGB,
+ GL_UNSIGNED_INT,
+ 8, 8, 8, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 3
+ },
{
MESA_FORMAT_RGBA_UINT8,
"MESA_FORMAT_RGBA_UINT8",
@@ -795,6 +1119,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 4
},
{
+ MESA_FORMAT_R_UINT16,
+ "MESA_FORMAT_R_UINT16",
+ GL_RED,
+ GL_UNSIGNED_INT,
+ 16, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_RG_UINT16,
+ "MESA_FORMAT_RG_UINT16",
+ GL_RG,
+ GL_UNSIGNED_INT,
+ 16, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_RGB_UINT16,
+ "MESA_FORMAT_RGB_UINT16",
+ GL_RGB,
+ GL_UNSIGNED_INT,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
+ },
+ {
MESA_FORMAT_RGBA_UINT16,
"MESA_FORMAT_RGBA_UINT16",
GL_RGBA,
@@ -804,6 +1155,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
1, 1, 8
},
{
+ MESA_FORMAT_R_UINT32,
+ "MESA_FORMAT_R_UINT32",
+ GL_RED,
+ GL_UNSIGNED_INT,
+ 32, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_RG_UINT32,
+ "MESA_FORMAT_RG_UINT32",
+ GL_RG,
+ GL_UNSIGNED_INT,
+ 32, 32, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 8
+ },
+ {
+ MESA_FORMAT_RGB_UINT32,
+ "MESA_FORMAT_RGB_UINT32",
+ GL_RGB,
+ GL_UNSIGNED_INT,
+ 32, 32, 32, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 12
+ },
+ {
MESA_FORMAT_RGBA_UINT32,
"MESA_FORMAT_RGBA_UINT32",
GL_RGBA,
@@ -1876,14 +2254,114 @@ _mesa_format_to_type_and_comps(gl_format format,
*comps = 1;
return;
+ case MESA_FORMAT_ALPHA_UINT8:
+ case MESA_FORMAT_LUMINANCE_UINT8:
+ case MESA_FORMAT_INTENSITY_UINT8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_UINT8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *comps = 2;
+ return;
+
+ case MESA_FORMAT_ALPHA_UINT16:
+ case MESA_FORMAT_LUMINANCE_UINT16:
+ case MESA_FORMAT_INTENSITY_UINT16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_UINT16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_ALPHA_UINT32:
+ case MESA_FORMAT_LUMINANCE_UINT32:
+ case MESA_FORMAT_INTENSITY_UINT32:
+ *datatype = GL_UNSIGNED_INT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_UINT32:
+ *datatype = GL_UNSIGNED_INT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_ALPHA_INT8:
+ case MESA_FORMAT_LUMINANCE_INT8:
+ case MESA_FORMAT_INTENSITY_INT8:
+ *datatype = GL_BYTE;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_INT8:
+ *datatype = GL_BYTE;
+ *comps = 2;
+ return;
+
+ case MESA_FORMAT_ALPHA_INT16:
+ case MESA_FORMAT_LUMINANCE_INT16:
+ case MESA_FORMAT_INTENSITY_INT16:
+ *datatype = GL_SHORT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_INT16:
+ *datatype = GL_SHORT;
+ *comps = 2;
+ return;
+
+ case MESA_FORMAT_ALPHA_INT32:
+ case MESA_FORMAT_LUMINANCE_INT32:
+ case MESA_FORMAT_INTENSITY_INT32:
+ *datatype = GL_INT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_LUMINANCE_ALPHA_INT32:
+ *datatype = GL_INT;
+ *comps = 2;
+ return;
+
+ case MESA_FORMAT_R_INT8:
+ *datatype = GL_BYTE;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_INT8:
+ *datatype = GL_BYTE;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_INT8:
+ *datatype = GL_BYTE;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_INT8:
*datatype = GL_BYTE;
*comps = 4;
return;
+ case MESA_FORMAT_R_INT16:
+ *datatype = GL_SHORT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_INT16:
+ *datatype = GL_SHORT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_INT16:
+ *datatype = GL_SHORT;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_INT16:
*datatype = GL_SHORT;
*comps = 4;
return;
+ case MESA_FORMAT_R_INT32:
+ *datatype = GL_INT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_INT32:
+ *datatype = GL_INT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_INT32:
+ *datatype = GL_INT;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_INT32:
*datatype = GL_INT;
*comps = 4;
@@ -1892,14 +2370,50 @@ _mesa_format_to_type_and_comps(gl_format format,
/**
* \name Non-normalized unsigned integer formats.
*/
+ case MESA_FORMAT_R_UINT8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_UINT8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_UINT8:
+ *datatype = GL_UNSIGNED_BYTE;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_UINT8:
*datatype = GL_UNSIGNED_BYTE;
*comps = 4;
return;
+ case MESA_FORMAT_R_UINT16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_UINT16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_UINT16:
+ *datatype = GL_UNSIGNED_SHORT;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_UINT16:
*datatype = GL_UNSIGNED_SHORT;
*comps = 4;
return;
+ case MESA_FORMAT_R_UINT32:
+ *datatype = GL_UNSIGNED_INT;
+ *comps = 1;
+ return;
+ case MESA_FORMAT_RG_UINT32:
+ *datatype = GL_UNSIGNED_INT;
+ *comps = 2;
+ return;
+ case MESA_FORMAT_RGB_UINT32:
+ *datatype = GL_UNSIGNED_INT;
+ *comps = 3;
+ return;
case MESA_FORMAT_RGBA_UINT32:
*datatype = GL_UNSIGNED_INT;
*comps = 4;
diff --git a/mesalib/src/mesa/main/formats.h b/mesalib/src/mesa/main/formats.h
index 610204cb3..12758f03e 100644
--- a/mesalib/src/mesa/main/formats.h
+++ b/mesalib/src/mesa/main/formats.h
@@ -152,15 +152,61 @@ typedef enum
* XXX Note: these are just stand-ins for some better hardware
* formats TBD such as BGRA or ARGB.
*/
+ MESA_FORMAT_ALPHA_UINT8,
+ MESA_FORMAT_ALPHA_UINT16,
+ MESA_FORMAT_ALPHA_UINT32,
+ MESA_FORMAT_ALPHA_INT8,
+ MESA_FORMAT_ALPHA_INT16,
+ MESA_FORMAT_ALPHA_INT32,
+
+ MESA_FORMAT_INTENSITY_UINT8,
+ MESA_FORMAT_INTENSITY_UINT16,
+ MESA_FORMAT_INTENSITY_UINT32,
+ MESA_FORMAT_INTENSITY_INT8,
+ MESA_FORMAT_INTENSITY_INT16,
+ MESA_FORMAT_INTENSITY_INT32,
+
+ MESA_FORMAT_LUMINANCE_UINT8,
+ MESA_FORMAT_LUMINANCE_UINT16,
+ MESA_FORMAT_LUMINANCE_UINT32,
+ MESA_FORMAT_LUMINANCE_INT8,
+ MESA_FORMAT_LUMINANCE_INT16,
+ MESA_FORMAT_LUMINANCE_INT32,
+
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT8,
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT16,
+ MESA_FORMAT_LUMINANCE_ALPHA_UINT32,
+ MESA_FORMAT_LUMINANCE_ALPHA_INT8,
+ MESA_FORMAT_LUMINANCE_ALPHA_INT16,
+ MESA_FORMAT_LUMINANCE_ALPHA_INT32,
+
+ MESA_FORMAT_R_INT8,
+ MESA_FORMAT_RG_INT8,
+ MESA_FORMAT_RGB_INT8,
MESA_FORMAT_RGBA_INT8,
+ MESA_FORMAT_R_INT16,
+ MESA_FORMAT_RG_INT16,
+ MESA_FORMAT_RGB_INT16,
MESA_FORMAT_RGBA_INT16,
+ MESA_FORMAT_R_INT32,
+ MESA_FORMAT_RG_INT32,
+ MESA_FORMAT_RGB_INT32,
MESA_FORMAT_RGBA_INT32,
/**
* \name Non-normalized unsigned integer formats.
*/
+ MESA_FORMAT_R_UINT8,
+ MESA_FORMAT_RG_UINT8,
+ MESA_FORMAT_RGB_UINT8,
MESA_FORMAT_RGBA_UINT8,
+ MESA_FORMAT_R_UINT16,
+ MESA_FORMAT_RG_UINT16,
+ MESA_FORMAT_RGB_UINT16,
MESA_FORMAT_RGBA_UINT16,
+ MESA_FORMAT_R_UINT32,
+ MESA_FORMAT_RG_UINT32,
+ MESA_FORMAT_RGB_UINT32,
MESA_FORMAT_RGBA_UINT32,
/* msb <------ TEXEL BITS -----------> lsb */
diff --git a/mesalib/src/mesa/main/framebuffer.h b/mesalib/src/mesa/main/framebuffer.h
index b2b29a7a1..7aef3e02b 100644
--- a/mesalib/src/mesa/main/framebuffer.h
+++ b/mesalib/src/mesa/main/framebuffer.h
@@ -54,7 +54,7 @@ extern void
_mesa_reference_framebuffer_(struct gl_framebuffer **ptr,
struct gl_framebuffer *fb);
-static INLINE void
+static inline void
_mesa_reference_framebuffer(struct gl_framebuffer **ptr,
struct gl_framebuffer *fb)
{
diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c
index 9c1771e16..a869133a1 100644
--- a/mesalib/src/mesa/main/get.c
+++ b/mesalib/src/mesa/main/get.c
@@ -326,6 +326,7 @@ EXTRA_EXT2(ARB_fragment_program, NV_fragment_program);
EXTRA_EXT2(ARB_vertex_program, NV_vertex_program);
EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program);
EXTRA_EXT(ARB_geometry_shader4);
+EXTRA_EXT(ARB_color_buffer_float);
EXTRA_EXT(ARB_copy_buffer);
EXTRA_EXT(EXT_framebuffer_sRGB);
EXTRA_EXT(ARB_texture_buffer_object);
@@ -481,6 +482,11 @@ static const struct value_desc values[] = {
/* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported */
{ GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA },
+ /* GL_ARB_color_buffer_float */
+ { GL_CLAMP_VERTEX_COLOR, CONTEXT_ENUM(Light.ClampVertexColor), extra_ARB_color_buffer_float },
+ { GL_CLAMP_FRAGMENT_COLOR, CONTEXT_ENUM(Color.ClampFragmentColor), extra_ARB_color_buffer_float },
+ { GL_CLAMP_READ_COLOR, CONTEXT_ENUM(Color.ClampReadColor), extra_ARB_color_buffer_float },
+
/* GL_ARB_copy_buffer */
{ GL_COPY_READ_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer },
{ GL_COPY_WRITE_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer },
@@ -683,6 +689,27 @@ static const struct value_desc values[] = {
/* GL_ARB_draw_buffers */
{ GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA },
+ /* GL_EXT_framebuffer_object / GL_NV_fbo_color_attachments */
+ { GL_MAX_COLOR_ATTACHMENTS, CONTEXT_INT(Const.MaxColorAttachments),
+ extra_EXT_framebuffer_object },
+
+ /* GL_ARB_draw_buffers / GL_NV_draw_buffers (for ES 2.0) */
+ { GL_DRAW_BUFFER0_ARB, BUFFER_ENUM(ColorDrawBuffer[0]), NO_EXTRA },
+ { GL_DRAW_BUFFER1_ARB, BUFFER_ENUM(ColorDrawBuffer[1]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER2_ARB, BUFFER_ENUM(ColorDrawBuffer[2]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER4_ARB, BUFFER_ENUM(ColorDrawBuffer[4]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER5_ARB, BUFFER_ENUM(ColorDrawBuffer[5]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER6_ARB, BUFFER_ENUM(ColorDrawBuffer[6]),
+ extra_valid_draw_buffer },
+ { GL_DRAW_BUFFER7_ARB, BUFFER_ENUM(ColorDrawBuffer[7]),
+ extra_valid_draw_buffer },
+
{ GL_BLEND_COLOR_EXT, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp },
/* GL_ARB_fragment_program */
{ GL_MAX_TEXTURE_IMAGE_UNITS_ARB, /* == GL_MAX_TEXTURE_IMAGE_UNITS_NV */
@@ -1119,23 +1146,6 @@ static const struct value_desc values[] = {
{ GL_DEPTH_CLAMP, CONTEXT_BOOL(Transform.DepthClamp),
extra_ARB_depth_clamp },
- /* GL_ARB_draw_buffers */
- { GL_DRAW_BUFFER0_ARB, BUFFER_ENUM(ColorDrawBuffer[0]), NO_EXTRA },
- { GL_DRAW_BUFFER1_ARB, BUFFER_ENUM(ColorDrawBuffer[1]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER2_ARB, BUFFER_ENUM(ColorDrawBuffer[2]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER4_ARB, BUFFER_ENUM(ColorDrawBuffer[4]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER5_ARB, BUFFER_ENUM(ColorDrawBuffer[5]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER6_ARB, BUFFER_ENUM(ColorDrawBuffer[6]),
- extra_valid_draw_buffer },
- { GL_DRAW_BUFFER7_ARB, BUFFER_ENUM(ColorDrawBuffer[7]),
- extra_valid_draw_buffer },
-
/* GL_ATI_fragment_shader */
{ GL_NUM_FRAGMENT_REGISTERS_ATI, CONST(6), extra_ATI_fragment_shader },
{ GL_NUM_FRAGMENT_CONSTANTS_ATI, CONST(8), extra_ATI_fragment_shader },
@@ -1147,10 +1157,6 @@ static const struct value_desc values[] = {
{ GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI,
CONST(3), extra_ATI_fragment_shader },
- /* GL_EXT_framebuffer_object */
- { GL_MAX_COLOR_ATTACHMENTS_EXT, CONTEXT_INT(Const.MaxColorAttachments),
- extra_EXT_framebuffer_object },
-
/* GL_EXT_framebuffer_blit
* NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT */
{ GL_READ_FRAMEBUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
diff --git a/mesalib/src/mesa/main/hash.c b/mesalib/src/mesa/main/hash.c
index 63f5c90fa..4b250ad54 100644
--- a/mesalib/src/mesa/main/hash.c
+++ b/mesalib/src/mesa/main/hash.c
@@ -1,547 +1,547 @@
-/**
- * \file hash.c
- * Generic hash table.
- *
- * Used for display lists, texture objects, vertex/fragment programs,
- * buffer objects, etc. The hash functions are thread-safe.
- *
- * \note key=0 is illegal.
- *
- * \author Brian Paul
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.1
- *
- * Copyright (C) 1999-2006 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.
- */
-
-
-#include "glheader.h"
-#include "imports.h"
-#include "glapi/glthread.h"
-#include "hash.h"
-
-
-#define TABLE_SIZE 1023 /**< Size of lookup table/array */
-
-#define HASH_FUNC(K) ((K) % TABLE_SIZE)
-
-
-/**
- * An entry in the hash table.
- */
-struct HashEntry {
- GLuint Key; /**< the entry's key */
- void *Data; /**< the entry's data */
- struct HashEntry *Next; /**< pointer to next entry */
-};
-
-
-/**
- * The hash table data structure.
- */
-struct _mesa_HashTable {
- struct HashEntry *Table[TABLE_SIZE]; /**< the lookup table */
- GLuint MaxKey; /**< highest key inserted so far */
- _glthread_Mutex Mutex; /**< mutual exclusion lock */
- _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */
- GLboolean InDeleteAll; /**< Debug check */
-};
-
-
-
-/**
- * Create a new hash table.
- *
- * \return pointer to a new, empty hash table.
- */
-struct _mesa_HashTable *
-_mesa_NewHashTable(void)
-{
- struct _mesa_HashTable *table = CALLOC_STRUCT(_mesa_HashTable);
- if (table) {
- _glthread_INIT_MUTEX(table->Mutex);
- _glthread_INIT_MUTEX(table->WalkMutex);
- }
- return table;
-}
-
-
-
-/**
- * Delete a hash table.
- * Frees each entry on the hash table and then the hash table structure itself.
- * Note that the caller should have already traversed the table and deleted
- * the objects in the table (i.e. We don't free the entries' data pointer).
- *
- * \param table the hash table to delete.
- */
-void
-_mesa_DeleteHashTable(struct _mesa_HashTable *table)
-{
- GLuint pos;
- assert(table);
- for (pos = 0; pos < TABLE_SIZE; pos++) {
- struct HashEntry *entry = table->Table[pos];
- while (entry) {
- struct HashEntry *next = entry->Next;
- if (entry->Data) {
- _mesa_problem(NULL,
- "In _mesa_DeleteHashTable, found non-freed data");
- }
- free(entry);
- entry = next;
- }
- }
- _glthread_DESTROY_MUTEX(table->Mutex);
- _glthread_DESTROY_MUTEX(table->WalkMutex);
- free(table);
-}
-
-
-
-/**
- * Lookup an entry in the hash table, without locking.
- * \sa _mesa_HashLookup
- */
-static INLINE void *
-_mesa_HashLookup_unlocked(struct _mesa_HashTable *table, GLuint key)
-{
- GLuint pos;
- const struct HashEntry *entry;
-
- assert(table);
- assert(key);
-
- pos = HASH_FUNC(key);
- entry = table->Table[pos];
- while (entry) {
- if (entry->Key == key) {
- return entry->Data;
- }
- entry = entry->Next;
- }
- return NULL;
-}
-
-
-/**
- * Lookup an entry in the hash table.
- *
- * \param table the hash table.
- * \param key the key.
- *
- * \return pointer to user's data or NULL if key not in table
- */
-void *
-_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key)
-{
- void *res;
- assert(table);
- _glthread_LOCK_MUTEX(table->Mutex);
- res = _mesa_HashLookup_unlocked(table, key);
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return res;
-}
-
-
-/**
- * Insert a key/pointer pair into the hash table.
- * If an entry with this key already exists we'll replace the existing entry.
- *
- * \param table the hash table.
- * \param key the key (not zero).
- * \param data pointer to user data.
- */
-void
-_mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data)
-{
- /* search for existing entry with this key */
- GLuint pos;
- struct HashEntry *entry;
-
- assert(table);
- assert(key);
-
- _glthread_LOCK_MUTEX(table->Mutex);
-
- if (key > table->MaxKey)
- table->MaxKey = key;
-
- pos = HASH_FUNC(key);
-
- /* check if replacing an existing entry with same key */
- for (entry = table->Table[pos]; entry; entry = entry->Next) {
- if (entry->Key == key) {
- /* replace entry's data */
-#if 0 /* not sure this check is always valid */
- if (entry->Data) {
- _mesa_problem(NULL, "Memory leak detected in _mesa_HashInsert");
- }
-#endif
- entry->Data = data;
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return;
- }
- }
-
- /* alloc and insert new table entry */
- entry = MALLOC_STRUCT(HashEntry);
- if (entry) {
- entry->Key = key;
- entry->Data = data;
- entry->Next = table->Table[pos];
- table->Table[pos] = entry;
- }
-
- _glthread_UNLOCK_MUTEX(table->Mutex);
-}
-
-
-
-/**
- * Remove an entry from the hash table.
- *
- * \param table the hash table.
- * \param key key of entry to remove.
- *
- * While holding the hash table's lock, searches the entry with the matching
- * key and unlinks it.
- */
-void
-_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key)
-{
- GLuint pos;
- struct HashEntry *entry, *prev;
-
- assert(table);
- assert(key);
-
- /* have to check this outside of mutex lock */
- if (table->InDeleteAll) {
- _mesa_problem(NULL, "_mesa_HashRemove illegally called from "
- "_mesa_HashDeleteAll callback function");
- return;
- }
-
- _glthread_LOCK_MUTEX(table->Mutex);
-
- pos = HASH_FUNC(key);
- prev = NULL;
- entry = table->Table[pos];
- while (entry) {
- if (entry->Key == key) {
- /* found it! */
- if (prev) {
- prev->Next = entry->Next;
- }
- else {
- table->Table[pos] = entry->Next;
- }
- free(entry);
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return;
- }
- prev = entry;
- entry = entry->Next;
- }
-
- _glthread_UNLOCK_MUTEX(table->Mutex);
-}
-
-
-
-/**
- * Delete all entries in a hash table, but don't delete the table itself.
- * Invoke the given callback function for each table entry.
- *
- * \param table the hash table to delete
- * \param callback the callback function
- * \param userData arbitrary pointer to pass along to the callback
- * (this is typically a struct gl_context pointer)
- */
-void
-_mesa_HashDeleteAll(struct _mesa_HashTable *table,
- void (*callback)(GLuint key, void *data, void *userData),
- void *userData)
-{
- GLuint pos;
- ASSERT(table);
- ASSERT(callback);
- _glthread_LOCK_MUTEX(table->Mutex);
- table->InDeleteAll = GL_TRUE;
- for (pos = 0; pos < TABLE_SIZE; pos++) {
- struct HashEntry *entry, *next;
- for (entry = table->Table[pos]; entry; entry = next) {
- callback(entry->Key, entry->Data, userData);
- next = entry->Next;
- free(entry);
- }
- table->Table[pos] = NULL;
- }
- table->InDeleteAll = GL_FALSE;
- _glthread_UNLOCK_MUTEX(table->Mutex);
-}
-
-
-/**
- * Walk over all entries in a hash table, calling callback function for each.
- * Note: we use a separate mutex in this function to avoid a recursive
- * locking deadlock (in case the callback calls _mesa_HashRemove()) and to
- * prevent multiple threads/contexts from getting tangled up.
- * A lock-less version of this function could be used when the table will
- * not be modified.
- * \param table the hash table to walk
- * \param callback the callback function
- * \param userData arbitrary pointer to pass along to the callback
- * (this is typically a struct gl_context pointer)
- */
-void
-_mesa_HashWalk(const struct _mesa_HashTable *table,
- void (*callback)(GLuint key, void *data, void *userData),
- void *userData)
-{
- /* cast-away const */
- struct _mesa_HashTable *table2 = (struct _mesa_HashTable *) table;
- GLuint pos;
- ASSERT(table);
- ASSERT(callback);
- _glthread_LOCK_MUTEX(table2->WalkMutex);
- for (pos = 0; pos < TABLE_SIZE; pos++) {
- struct HashEntry *entry, *next;
- for (entry = table->Table[pos]; entry; entry = next) {
- /* save 'next' pointer now in case the callback deletes the entry */
- next = entry->Next;
- callback(entry->Key, entry->Data, userData);
- }
- }
- _glthread_UNLOCK_MUTEX(table2->WalkMutex);
-}
-
-
-/**
- * Return the key of the "first" entry in the hash table.
- * While holding the lock, walks through all table positions until finding
- * the first entry of the first non-empty one.
- *
- * \param table the hash table
- * \return key for the "first" entry in the hash table.
- */
-GLuint
-_mesa_HashFirstEntry(struct _mesa_HashTable *table)
-{
- GLuint pos;
- assert(table);
- _glthread_LOCK_MUTEX(table->Mutex);
- for (pos = 0; pos < TABLE_SIZE; pos++) {
- if (table->Table[pos]) {
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return table->Table[pos]->Key;
- }
- }
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return 0;
-}
-
-
-/**
- * Given a hash table key, return the next key. This is used to walk
- * over all entries in the table. Note that the keys returned during
- * walking won't be in any particular order.
- * \return next hash key or 0 if end of table.
- */
-GLuint
-_mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key)
-{
- const struct HashEntry *entry;
- GLuint pos;
-
- assert(table);
- assert(key);
-
- /* Find the entry with given key */
- pos = HASH_FUNC(key);
- for (entry = table->Table[pos]; entry ; entry = entry->Next) {
- if (entry->Key == key) {
- break;
- }
- }
-
- if (!entry) {
- /* the given key was not found, so we can't find the next entry */
- return 0;
- }
-
- if (entry->Next) {
- /* return next in linked list */
- return entry->Next->Key;
- }
- else {
- /* look for next non-empty table slot */
- pos++;
- while (pos < TABLE_SIZE) {
- if (table->Table[pos]) {
- return table->Table[pos]->Key;
- }
- pos++;
- }
- return 0;
- }
-}
-
-
-/**
- * Dump contents of hash table for debugging.
- *
- * \param table the hash table.
- */
-void
-_mesa_HashPrint(const struct _mesa_HashTable *table)
-{
- GLuint pos;
- assert(table);
- for (pos = 0; pos < TABLE_SIZE; pos++) {
- const struct HashEntry *entry = table->Table[pos];
- while (entry) {
- _mesa_debug(NULL, "%u %p\n", entry->Key, entry->Data);
- entry = entry->Next;
- }
- }
-}
-
-
-
-/**
- * Find a block of adjacent unused hash keys.
- *
- * \param table the hash table.
- * \param numKeys number of keys needed.
- *
- * \return Starting key of free block or 0 if failure.
- *
- * If there are enough free keys between the maximum key existing in the table
- * (_mesa_HashTable::MaxKey) and the maximum key possible, then simply return
- * the adjacent key. Otherwise do a full search for a free key block in the
- * allowable key range.
- */
-GLuint
-_mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys)
-{
- const GLuint maxKey = ~((GLuint) 0);
- _glthread_LOCK_MUTEX(table->Mutex);
- if (maxKey - numKeys > table->MaxKey) {
- /* the quick solution */
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return table->MaxKey + 1;
- }
- else {
- /* the slow solution */
- GLuint freeCount = 0;
- GLuint freeStart = 1;
- GLuint key;
- for (key = 1; key != maxKey; key++) {
- if (_mesa_HashLookup_unlocked(table, key)) {
- /* darn, this key is already in use */
- freeCount = 0;
- freeStart = key+1;
- }
- else {
- /* this key not in use, check if we've found enough */
- freeCount++;
- if (freeCount == numKeys) {
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return freeStart;
- }
- }
- }
- /* cannot allocate a block of numKeys consecutive keys */
- _glthread_UNLOCK_MUTEX(table->Mutex);
- return 0;
- }
-}
-
-
-#if 0 /* debug only */
-
-/**
- * Test walking over all the entries in a hash table.
- */
-static void
-test_hash_walking(void)
-{
- struct _mesa_HashTable *t = _mesa_NewHashTable();
- const GLuint limit = 50000;
- GLuint i;
-
- /* create some entries */
- for (i = 0; i < limit; i++) {
- GLuint dummy;
- GLuint k = (rand() % (limit * 10)) + 1;
- while (_mesa_HashLookup(t, k)) {
- /* id already in use, try another */
- k = (rand() % (limit * 10)) + 1;
- }
- _mesa_HashInsert(t, k, &dummy);
- }
-
- /* walk over all entries */
- {
- GLuint k = _mesa_HashFirstEntry(t);
- GLuint count = 0;
- while (k) {
- GLuint knext = _mesa_HashNextEntry(t, k);
- assert(knext != k);
- _mesa_HashRemove(t, k);
- count++;
- k = knext;
- }
- assert(count == limit);
- k = _mesa_HashFirstEntry(t);
- assert(k==0);
- }
-
- _mesa_DeleteHashTable(t);
-}
-
-
-void
-_mesa_test_hash_functions(void)
-{
- int a, b, c;
- struct _mesa_HashTable *t;
-
- t = _mesa_NewHashTable();
- _mesa_HashInsert(t, 501, &a);
- _mesa_HashInsert(t, 10, &c);
- _mesa_HashInsert(t, 0xfffffff8, &b);
- /*_mesa_HashPrint(t);*/
-
- assert(_mesa_HashLookup(t,501));
- assert(!_mesa_HashLookup(t,1313));
- assert(_mesa_HashFindFreeKeyBlock(t, 100));
-
- _mesa_DeleteHashTable(t);
-
- test_hash_walking();
-}
-
-#endif
+/**
+ * \file hash.c
+ * Generic hash table.
+ *
+ * Used for display lists, texture objects, vertex/fragment programs,
+ * buffer objects, etc. The hash functions are thread-safe.
+ *
+ * \note key=0 is illegal.
+ *
+ * \author Brian Paul
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.1
+ *
+ * Copyright (C) 1999-2006 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.
+ */
+
+
+#include "glheader.h"
+#include "imports.h"
+#include "glapi/glthread.h"
+#include "hash.h"
+
+
+#define TABLE_SIZE 1023 /**< Size of lookup table/array */
+
+#define HASH_FUNC(K) ((K) % TABLE_SIZE)
+
+
+/**
+ * An entry in the hash table.
+ */
+struct HashEntry {
+ GLuint Key; /**< the entry's key */
+ void *Data; /**< the entry's data */
+ struct HashEntry *Next; /**< pointer to next entry */
+};
+
+
+/**
+ * The hash table data structure.
+ */
+struct _mesa_HashTable {
+ struct HashEntry *Table[TABLE_SIZE]; /**< the lookup table */
+ GLuint MaxKey; /**< highest key inserted so far */
+ _glthread_Mutex Mutex; /**< mutual exclusion lock */
+ _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */
+ GLboolean InDeleteAll; /**< Debug check */
+};
+
+
+
+/**
+ * Create a new hash table.
+ *
+ * \return pointer to a new, empty hash table.
+ */
+struct _mesa_HashTable *
+_mesa_NewHashTable(void)
+{
+ struct _mesa_HashTable *table = CALLOC_STRUCT(_mesa_HashTable);
+ if (table) {
+ _glthread_INIT_MUTEX(table->Mutex);
+ _glthread_INIT_MUTEX(table->WalkMutex);
+ }
+ return table;
+}
+
+
+
+/**
+ * Delete a hash table.
+ * Frees each entry on the hash table and then the hash table structure itself.
+ * Note that the caller should have already traversed the table and deleted
+ * the objects in the table (i.e. We don't free the entries' data pointer).
+ *
+ * \param table the hash table to delete.
+ */
+void
+_mesa_DeleteHashTable(struct _mesa_HashTable *table)
+{
+ GLuint pos;
+ assert(table);
+ for (pos = 0; pos < TABLE_SIZE; pos++) {
+ struct HashEntry *entry = table->Table[pos];
+ while (entry) {
+ struct HashEntry *next = entry->Next;
+ if (entry->Data) {
+ _mesa_problem(NULL,
+ "In _mesa_DeleteHashTable, found non-freed data");
+ }
+ free(entry);
+ entry = next;
+ }
+ }
+ _glthread_DESTROY_MUTEX(table->Mutex);
+ _glthread_DESTROY_MUTEX(table->WalkMutex);
+ free(table);
+}
+
+
+
+/**
+ * Lookup an entry in the hash table, without locking.
+ * \sa _mesa_HashLookup
+ */
+static inline void *
+_mesa_HashLookup_unlocked(struct _mesa_HashTable *table, GLuint key)
+{
+ GLuint pos;
+ const struct HashEntry *entry;
+
+ assert(table);
+ assert(key);
+
+ pos = HASH_FUNC(key);
+ entry = table->Table[pos];
+ while (entry) {
+ if (entry->Key == key) {
+ return entry->Data;
+ }
+ entry = entry->Next;
+ }
+ return NULL;
+}
+
+
+/**
+ * Lookup an entry in the hash table.
+ *
+ * \param table the hash table.
+ * \param key the key.
+ *
+ * \return pointer to user's data or NULL if key not in table
+ */
+void *
+_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key)
+{
+ void *res;
+ assert(table);
+ _glthread_LOCK_MUTEX(table->Mutex);
+ res = _mesa_HashLookup_unlocked(table, key);
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return res;
+}
+
+
+/**
+ * Insert a key/pointer pair into the hash table.
+ * If an entry with this key already exists we'll replace the existing entry.
+ *
+ * \param table the hash table.
+ * \param key the key (not zero).
+ * \param data pointer to user data.
+ */
+void
+_mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data)
+{
+ /* search for existing entry with this key */
+ GLuint pos;
+ struct HashEntry *entry;
+
+ assert(table);
+ assert(key);
+
+ _glthread_LOCK_MUTEX(table->Mutex);
+
+ if (key > table->MaxKey)
+ table->MaxKey = key;
+
+ pos = HASH_FUNC(key);
+
+ /* check if replacing an existing entry with same key */
+ for (entry = table->Table[pos]; entry; entry = entry->Next) {
+ if (entry->Key == key) {
+ /* replace entry's data */
+#if 0 /* not sure this check is always valid */
+ if (entry->Data) {
+ _mesa_problem(NULL, "Memory leak detected in _mesa_HashInsert");
+ }
+#endif
+ entry->Data = data;
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return;
+ }
+ }
+
+ /* alloc and insert new table entry */
+ entry = MALLOC_STRUCT(HashEntry);
+ if (entry) {
+ entry->Key = key;
+ entry->Data = data;
+ entry->Next = table->Table[pos];
+ table->Table[pos] = entry;
+ }
+
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+}
+
+
+
+/**
+ * Remove an entry from the hash table.
+ *
+ * \param table the hash table.
+ * \param key key of entry to remove.
+ *
+ * While holding the hash table's lock, searches the entry with the matching
+ * key and unlinks it.
+ */
+void
+_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key)
+{
+ GLuint pos;
+ struct HashEntry *entry, *prev;
+
+ assert(table);
+ assert(key);
+
+ /* have to check this outside of mutex lock */
+ if (table->InDeleteAll) {
+ _mesa_problem(NULL, "_mesa_HashRemove illegally called from "
+ "_mesa_HashDeleteAll callback function");
+ return;
+ }
+
+ _glthread_LOCK_MUTEX(table->Mutex);
+
+ pos = HASH_FUNC(key);
+ prev = NULL;
+ entry = table->Table[pos];
+ while (entry) {
+ if (entry->Key == key) {
+ /* found it! */
+ if (prev) {
+ prev->Next = entry->Next;
+ }
+ else {
+ table->Table[pos] = entry->Next;
+ }
+ free(entry);
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return;
+ }
+ prev = entry;
+ entry = entry->Next;
+ }
+
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+}
+
+
+
+/**
+ * Delete all entries in a hash table, but don't delete the table itself.
+ * Invoke the given callback function for each table entry.
+ *
+ * \param table the hash table to delete
+ * \param callback the callback function
+ * \param userData arbitrary pointer to pass along to the callback
+ * (this is typically a struct gl_context pointer)
+ */
+void
+_mesa_HashDeleteAll(struct _mesa_HashTable *table,
+ void (*callback)(GLuint key, void *data, void *userData),
+ void *userData)
+{
+ GLuint pos;
+ ASSERT(table);
+ ASSERT(callback);
+ _glthread_LOCK_MUTEX(table->Mutex);
+ table->InDeleteAll = GL_TRUE;
+ for (pos = 0; pos < TABLE_SIZE; pos++) {
+ struct HashEntry *entry, *next;
+ for (entry = table->Table[pos]; entry; entry = next) {
+ callback(entry->Key, entry->Data, userData);
+ next = entry->Next;
+ free(entry);
+ }
+ table->Table[pos] = NULL;
+ }
+ table->InDeleteAll = GL_FALSE;
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+}
+
+
+/**
+ * Walk over all entries in a hash table, calling callback function for each.
+ * Note: we use a separate mutex in this function to avoid a recursive
+ * locking deadlock (in case the callback calls _mesa_HashRemove()) and to
+ * prevent multiple threads/contexts from getting tangled up.
+ * A lock-less version of this function could be used when the table will
+ * not be modified.
+ * \param table the hash table to walk
+ * \param callback the callback function
+ * \param userData arbitrary pointer to pass along to the callback
+ * (this is typically a struct gl_context pointer)
+ */
+void
+_mesa_HashWalk(const struct _mesa_HashTable *table,
+ void (*callback)(GLuint key, void *data, void *userData),
+ void *userData)
+{
+ /* cast-away const */
+ struct _mesa_HashTable *table2 = (struct _mesa_HashTable *) table;
+ GLuint pos;
+ ASSERT(table);
+ ASSERT(callback);
+ _glthread_LOCK_MUTEX(table2->WalkMutex);
+ for (pos = 0; pos < TABLE_SIZE; pos++) {
+ struct HashEntry *entry, *next;
+ for (entry = table->Table[pos]; entry; entry = next) {
+ /* save 'next' pointer now in case the callback deletes the entry */
+ next = entry->Next;
+ callback(entry->Key, entry->Data, userData);
+ }
+ }
+ _glthread_UNLOCK_MUTEX(table2->WalkMutex);
+}
+
+
+/**
+ * Return the key of the "first" entry in the hash table.
+ * While holding the lock, walks through all table positions until finding
+ * the first entry of the first non-empty one.
+ *
+ * \param table the hash table
+ * \return key for the "first" entry in the hash table.
+ */
+GLuint
+_mesa_HashFirstEntry(struct _mesa_HashTable *table)
+{
+ GLuint pos;
+ assert(table);
+ _glthread_LOCK_MUTEX(table->Mutex);
+ for (pos = 0; pos < TABLE_SIZE; pos++) {
+ if (table->Table[pos]) {
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return table->Table[pos]->Key;
+ }
+ }
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return 0;
+}
+
+
+/**
+ * Given a hash table key, return the next key. This is used to walk
+ * over all entries in the table. Note that the keys returned during
+ * walking won't be in any particular order.
+ * \return next hash key or 0 if end of table.
+ */
+GLuint
+_mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key)
+{
+ const struct HashEntry *entry;
+ GLuint pos;
+
+ assert(table);
+ assert(key);
+
+ /* Find the entry with given key */
+ pos = HASH_FUNC(key);
+ for (entry = table->Table[pos]; entry ; entry = entry->Next) {
+ if (entry->Key == key) {
+ break;
+ }
+ }
+
+ if (!entry) {
+ /* the given key was not found, so we can't find the next entry */
+ return 0;
+ }
+
+ if (entry->Next) {
+ /* return next in linked list */
+ return entry->Next->Key;
+ }
+ else {
+ /* look for next non-empty table slot */
+ pos++;
+ while (pos < TABLE_SIZE) {
+ if (table->Table[pos]) {
+ return table->Table[pos]->Key;
+ }
+ pos++;
+ }
+ return 0;
+ }
+}
+
+
+/**
+ * Dump contents of hash table for debugging.
+ *
+ * \param table the hash table.
+ */
+void
+_mesa_HashPrint(const struct _mesa_HashTable *table)
+{
+ GLuint pos;
+ assert(table);
+ for (pos = 0; pos < TABLE_SIZE; pos++) {
+ const struct HashEntry *entry = table->Table[pos];
+ while (entry) {
+ _mesa_debug(NULL, "%u %p\n", entry->Key, entry->Data);
+ entry = entry->Next;
+ }
+ }
+}
+
+
+
+/**
+ * Find a block of adjacent unused hash keys.
+ *
+ * \param table the hash table.
+ * \param numKeys number of keys needed.
+ *
+ * \return Starting key of free block or 0 if failure.
+ *
+ * If there are enough free keys between the maximum key existing in the table
+ * (_mesa_HashTable::MaxKey) and the maximum key possible, then simply return
+ * the adjacent key. Otherwise do a full search for a free key block in the
+ * allowable key range.
+ */
+GLuint
+_mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys)
+{
+ const GLuint maxKey = ~((GLuint) 0);
+ _glthread_LOCK_MUTEX(table->Mutex);
+ if (maxKey - numKeys > table->MaxKey) {
+ /* the quick solution */
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return table->MaxKey + 1;
+ }
+ else {
+ /* the slow solution */
+ GLuint freeCount = 0;
+ GLuint freeStart = 1;
+ GLuint key;
+ for (key = 1; key != maxKey; key++) {
+ if (_mesa_HashLookup_unlocked(table, key)) {
+ /* darn, this key is already in use */
+ freeCount = 0;
+ freeStart = key+1;
+ }
+ else {
+ /* this key not in use, check if we've found enough */
+ freeCount++;
+ if (freeCount == numKeys) {
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return freeStart;
+ }
+ }
+ }
+ /* cannot allocate a block of numKeys consecutive keys */
+ _glthread_UNLOCK_MUTEX(table->Mutex);
+ return 0;
+ }
+}
+
+
+#if 0 /* debug only */
+
+/**
+ * Test walking over all the entries in a hash table.
+ */
+static void
+test_hash_walking(void)
+{
+ struct _mesa_HashTable *t = _mesa_NewHashTable();
+ const GLuint limit = 50000;
+ GLuint i;
+
+ /* create some entries */
+ for (i = 0; i < limit; i++) {
+ GLuint dummy;
+ GLuint k = (rand() % (limit * 10)) + 1;
+ while (_mesa_HashLookup(t, k)) {
+ /* id already in use, try another */
+ k = (rand() % (limit * 10)) + 1;
+ }
+ _mesa_HashInsert(t, k, &dummy);
+ }
+
+ /* walk over all entries */
+ {
+ GLuint k = _mesa_HashFirstEntry(t);
+ GLuint count = 0;
+ while (k) {
+ GLuint knext = _mesa_HashNextEntry(t, k);
+ assert(knext != k);
+ _mesa_HashRemove(t, k);
+ count++;
+ k = knext;
+ }
+ assert(count == limit);
+ k = _mesa_HashFirstEntry(t);
+ assert(k==0);
+ }
+
+ _mesa_DeleteHashTable(t);
+}
+
+
+void
+_mesa_test_hash_functions(void)
+{
+ int a, b, c;
+ struct _mesa_HashTable *t;
+
+ t = _mesa_NewHashTable();
+ _mesa_HashInsert(t, 501, &a);
+ _mesa_HashInsert(t, 10, &c);
+ _mesa_HashInsert(t, 0xfffffff8, &b);
+ /*_mesa_HashPrint(t);*/
+
+ assert(_mesa_HashLookup(t,501));
+ assert(!_mesa_HashLookup(t,1313));
+ assert(_mesa_HashFindFreeKeyBlock(t, 100));
+
+ _mesa_DeleteHashTable(t);
+
+ test_hash_walking();
+}
+
+#endif
diff --git a/mesalib/src/mesa/main/histogram.h b/mesalib/src/mesa/main/histogram.h
index f9c7310fe..d97e74abb 100644
--- a/mesalib/src/mesa/main/histogram.h
+++ b/mesalib/src/mesa/main/histogram.h
@@ -1,58 +1,58 @@
-/**
- * \file histogram.h
- * Histogram.
- *
- * \if subset
- * (No-op)
- *
- * \endif
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 5.1
- *
- * Copyright (C) 1999-2003 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 HISTOGRAM_H
-#define HISTOGRAM_H
-
-#include "compiler.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-
-#if FEATURE_histogram
-
-extern void
-_mesa_init_histogram_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_histogram */
-
-static INLINE void
-_mesa_init_histogram_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_histogram */
-
-#endif /* HISTOGRAM_H */
+/**
+ * \file histogram.h
+ * Histogram.
+ *
+ * \if subset
+ * (No-op)
+ *
+ * \endif
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 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 HISTOGRAM_H
+#define HISTOGRAM_H
+
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+
+#if FEATURE_histogram
+
+extern void
+_mesa_init_histogram_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_histogram */
+
+static inline void
+_mesa_init_histogram_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_histogram */
+
+#endif /* HISTOGRAM_H */
diff --git a/mesalib/src/mesa/main/image.c b/mesalib/src/mesa/main/image.c
index 15f7812e6..7d95dd6be 100644
--- a/mesalib/src/mesa/main/image.c
+++ b/mesalib/src/mesa/main/image.c
@@ -1756,7 +1756,7 @@ _mesa_clip_to_region(GLint xmin, GLint ymin,
/**
* Clip dst coords against Xmax (or Ymax).
*/
-static INLINE void
+static inline void
clip_right_or_top(GLint *srcX0, GLint *srcX1,
GLint *dstX0, GLint *dstX1,
GLint maxValue)
@@ -1789,7 +1789,7 @@ clip_right_or_top(GLint *srcX0, GLint *srcX1,
/**
* Clip dst coords against Xmin (or Ymin).
*/
-static INLINE void
+static inline void
clip_left_or_bottom(GLint *srcX0, GLint *srcX1,
GLint *dstX0, GLint *dstX1,
GLint minValue)
diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h
index 70defdc43..5fb5581ef 100644
--- a/mesalib/src/mesa/main/imports.h
+++ b/mesalib/src/mesa/main/imports.h
@@ -153,13 +153,13 @@ typedef union { GLfloat f; GLint i; } fi_type;
#endif
#if defined(_MSC_VER)
-static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); }
-static INLINE float exp2f(float x) { return powf(2.0f, x); }
-static INLINE float log2f(float x) { return logf(x) * 1.442695041f; }
-static INLINE float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); }
-static INLINE float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); }
-static INLINE float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; }
-static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; }
+static inline float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); }
+static inline float exp2f(float x) { return powf(2.0f, x); }
+static inline float log2f(float x) { return logf(x) * 1.442695041f; }
+static inline float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); }
+static inline float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); }
+static inline float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; }
+static inline int isblank(int ch) { return ch == ' ' || ch == '\t'; }
#define strtoll(p, e, b) _strtoi64(p, e, b)
#endif
/*@}*/
@@ -172,7 +172,7 @@ static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; }
/* This is pretty fast, but not accurate enough (only 2 fractional bits).
* Based on code from http://www.stereopsis.com/log2.html
*/
-static INLINE GLfloat LOG2(GLfloat x)
+static inline GLfloat LOG2(GLfloat x)
{
const GLfloat y = x * x * x * x;
const GLuint ix = *((GLuint *) &y);
@@ -184,7 +184,7 @@ static INLINE GLfloat LOG2(GLfloat x)
/* Pretty fast, and accurate.
* Based on code from http://www.flipcode.com/totd/
*/
-static INLINE GLfloat LOG2(GLfloat val)
+static inline GLfloat LOG2(GLfloat val)
{
fi_type num;
GLint log_2;
@@ -208,7 +208,7 @@ static INLINE GLfloat LOG2(GLfloat val)
*** IS_INF_OR_NAN: test if float is infinite or NaN
***/
#ifdef USE_IEEE
-static INLINE int IS_INF_OR_NAN( float x )
+static inline int IS_INF_OR_NAN( float x )
{
fi_type tmp;
tmp.f = x;
@@ -231,7 +231,7 @@ static INLINE int IS_INF_OR_NAN( float x )
*** IS_NEGATIVE: test if float is negative
***/
#if defined(USE_IEEE)
-static INLINE int GET_FLOAT_BITS( float x )
+static inline int GET_FLOAT_BITS( float x )
{
fi_type fi;
fi.f = x;
@@ -289,7 +289,7 @@ static INLINE int GET_FLOAT_BITS( float x )
*** IROUND: return (as an integer) float rounded to nearest integer
***/
#if defined(USE_X86_ASM) && defined(__GNUC__) && defined(__i386__)
-static INLINE int iround(float f)
+static inline int iround(float f)
{
int r;
__asm__ ("fistpl %0" : "=m" (r) : "t" (f) : "st");
@@ -297,7 +297,7 @@ static INLINE int iround(float f)
}
#define IROUND(x) iround(x)
#elif defined(USE_X86_ASM) && defined(_MSC_VER)
-static INLINE int iround(float f)
+static inline int iround(float f)
{
int r;
_asm {
@@ -344,7 +344,7 @@ long iround(float f);
* but uses some IEEE specific tricks for better speed.
* Contributed by Josh Vanderhoof
*/
-static INLINE int ifloor(float f)
+static inline int ifloor(float f)
{
int ai, bi;
double af, bf;
@@ -357,7 +357,7 @@ static INLINE int ifloor(float f)
}
#define IFLOOR(x) ifloor(x)
#elif defined(USE_IEEE)
-static INLINE int ifloor(float f)
+static inline int ifloor(float f)
{
int ai, bi;
double af, bf;
@@ -371,7 +371,7 @@ static INLINE int ifloor(float f)
}
#define IFLOOR(x) ifloor(x)
#else
-static INLINE int ifloor(float f)
+static inline int ifloor(float f)
{
int i = IROUND(f);
return (i > f) ? i - 1 : i;
@@ -391,7 +391,7 @@ static INLINE int ifloor(float f)
* but uses some IEEE specific tricks for better speed.
* Contributed by Josh Vanderhoof
*/
-static INLINE int iceil(float f)
+static inline int iceil(float f)
{
int ai, bi;
double af, bf;
@@ -404,7 +404,7 @@ static INLINE int iceil(float f)
}
#define ICEIL(x) iceil(x)
#elif defined(USE_IEEE)
-static INLINE int iceil(float f)
+static inline int iceil(float f)
{
int ai, bi;
double af, bf;
@@ -417,7 +417,7 @@ static INLINE int iceil(float f)
}
#define ICEIL(x) iceil(x)
#else
-static INLINE int iceil(float f)
+static inline int iceil(float f)
{
int i = IROUND(f);
return (i < f) ? i + 1 : i;
@@ -429,7 +429,7 @@ static INLINE int iceil(float f)
/**
* Is x a power of two?
*/
-static INLINE int
+static inline int
_mesa_is_pow_two(int x)
{
return !(x & (x - 1));
@@ -449,7 +449,7 @@ _mesa_is_pow_two(int x)
* results would be different depending on optimization
* level used for build.
*/
-static INLINE int32_t
+static inline int32_t
_mesa_next_pow_two_32(uint32_t x)
{
#if defined(__GNUC__) && \
@@ -468,7 +468,7 @@ _mesa_next_pow_two_32(uint32_t x)
#endif
}
-static INLINE int64_t
+static inline int64_t
_mesa_next_pow_two_64(uint64_t x)
{
#if defined(__GNUC__) && \
@@ -495,7 +495,7 @@ _mesa_next_pow_two_64(uint64_t x)
/*
* Returns the floor form of binary logarithm for a 32-bit integer.
*/
-static INLINE GLuint
+static inline GLuint
_mesa_logbase2(GLuint n)
{
#if defined(__GNUC__) && \
@@ -516,7 +516,7 @@ _mesa_logbase2(GLuint n)
/**
* Return 1 if this is a little endian machine, 0 if big endian.
*/
-static INLINE GLboolean
+static inline GLboolean
_mesa_little_endian(void)
{
const GLuint ui = 1; /* intentionally not static */
diff --git a/mesalib/src/mesa/main/mipmap.c b/mesalib/src/mesa/main/mipmap.c
index 1ead5ee10..c2f922674 100644
--- a/mesalib/src/mesa/main/mipmap.c
+++ b/mesalib/src/mesa/main/mipmap.c
@@ -47,9 +47,9 @@ bytes_per_pixel(GLenum datatype, GLuint comps)
assert(b >= 0);
if (_mesa_type_is_packed(datatype))
- return b;
+ return b;
else
- return b * comps;
+ return b * comps;
}
@@ -1414,8 +1414,6 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border,
const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
const GLint dstWidthNB = dstWidth - 2 * border;
const GLint dstHeightNB = dstHeight - 2 * border;
- const GLint srcRowBytes = bpt * srcRowStride;
- const GLint dstRowBytes = bpt * dstRowStride;
const GLubyte *srcA, *srcB;
GLubyte *dst;
GLint row, srcRowStep;
@@ -1424,7 +1422,7 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border,
srcA = srcPtr + border * ((srcWidth + 1) * bpt);
if (srcHeight > 1 && srcHeight > dstHeight) {
/* sample from two source rows */
- srcB = srcA + srcRowBytes;
+ srcB = srcA + srcRowStride;
srcRowStep = 2;
}
else {
@@ -1438,9 +1436,9 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border,
for (row = 0; row < dstHeightNB; row++) {
do_row(datatype, comps, srcWidthNB, srcA, srcB,
dstWidthNB, dst);
- srcA += srcRowStep * srcRowBytes;
- srcB += srcRowStep * srcRowBytes;
- dst += dstRowBytes;
+ srcA += srcRowStep * srcRowStride;
+ srcB += srcRowStep * srcRowStride;
+ dst += dstRowStride;
}
/* This is ugly but probably won't be used much */
@@ -1500,9 +1498,9 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border,
static void
make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
GLint srcWidth, GLint srcHeight, GLint srcDepth,
- const GLubyte *srcPtr, GLint srcRowStride,
+ const GLubyte **srcPtr, GLint srcRowStride,
GLint dstWidth, GLint dstHeight, GLint dstDepth,
- GLubyte *dstPtr, GLint dstRowStride)
+ GLubyte **dstPtr, GLint dstRowStride)
{
const GLint bpt = bytes_per_pixel(datatype, comps);
const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
@@ -1525,7 +1523,7 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
bytesPerDstRow = dstWidth * bpt;
/* Offset between adjacent src images to be averaged together */
- srcImageOffset = (srcDepth == dstDepth) ? 0 : bytesPerSrcImage;
+ srcImageOffset = (srcDepth == dstDepth) ? 0 : 1;
/* Offset between adjacent src rows to be averaged together */
srcRowOffset = (srcHeight == dstHeight) ? 0 : srcWidth * bpt;
@@ -1545,15 +1543,15 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
for (img = 0; img < dstDepthNB; img++) {
/* first source image pointer, skipping border */
- const GLubyte *imgSrcA = srcPtr
- + (bytesPerSrcImage + bytesPerSrcRow + border) * bpt * border
- + img * (bytesPerSrcImage + srcImageOffset);
+ const GLubyte *imgSrcA = srcPtr[img * 2 + border]
+ + bytesPerSrcRow * border + bpt * border;
/* second source image pointer, skipping border */
- const GLubyte *imgSrcB = imgSrcA + srcImageOffset;
+ const GLubyte *imgSrcB = srcPtr[img * 2 + srcImageOffset + border]
+ + bytesPerSrcRow * border + bpt * border;
+
/* address of the dest image, skipping border */
- GLubyte *imgDst = dstPtr
- + (bytesPerDstImage + bytesPerDstRow + border) * bpt * border
- + img * bytesPerDstImage;
+ GLubyte *imgDst = dstPtr[img + border]
+ + bytesPerDstRow * border + bpt * border;
/* setup the four source row pointers and the dest row pointer */
const GLubyte *srcImgARowA = imgSrcA;
@@ -1581,13 +1579,14 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
/* Luckily we can leverage the make_2d_mipmap() function here! */
if (border > 0) {
/* do front border image */
- make_2d_mipmap(datatype, comps, 1, srcWidth, srcHeight, srcPtr, srcRowStride,
- dstWidth, dstHeight, dstPtr, dstRowStride);
+ make_2d_mipmap(datatype, comps, 1,
+ srcWidth, srcHeight, srcPtr[0], srcRowStride,
+ dstWidth, dstHeight, dstPtr[0], dstRowStride);
/* do back border image */
- make_2d_mipmap(datatype, comps, 1, srcWidth, srcHeight,
- srcPtr + bytesPerSrcImage * (srcDepth - 1), srcRowStride,
- dstWidth, dstHeight,
- dstPtr + bytesPerDstImage * (dstDepth - 1), dstRowStride);
+ make_2d_mipmap(datatype, comps, 1,
+ srcWidth, srcHeight, srcPtr[srcDepth - 1], srcRowStride,
+ dstWidth, dstHeight, dstPtr[dstDepth - 1], dstRowStride);
+
/* do four remaining border edges that span the image slices */
if (srcDepth == dstDepth) {
/* just copy border pixels from src to dst */
@@ -1596,29 +1595,23 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
GLubyte *dst;
/* do border along [img][row=0][col=0] */
- src = srcPtr + (img + 1) * bytesPerSrcImage;
- dst = dstPtr + (img + 1) * bytesPerDstImage;
+ src = srcPtr[img * 2];
+ dst = dstPtr[img];
memcpy(dst, src, bpt);
/* do border along [img][row=dstHeight-1][col=0] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (srcHeight - 1) * bytesPerSrcRow;
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (dstHeight - 1) * bytesPerDstRow;
+ src = srcPtr[img * 2] + (srcHeight - 1) * bytesPerSrcRow;
+ dst = dstPtr[img] + (dstHeight - 1) * bytesPerDstRow;
memcpy(dst, src, bpt);
/* do border along [img][row=0][col=dstWidth-1] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (srcWidth - 1) * bpt;
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (dstWidth - 1) * bpt;
+ src = srcPtr[img * 2] + (srcWidth - 1) * bpt;
+ dst = dstPtr[img] + (dstWidth - 1) * bpt;
memcpy(dst, src, bpt);
/* do border along [img][row=dstHeight-1][col=dstWidth-1] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (bytesPerSrcImage - bpt);
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (bytesPerDstImage - bpt);
+ src = srcPtr[img * 2] + (bytesPerSrcImage - bpt);
+ dst = dstPtr[img] + (bytesPerDstImage - bpt);
memcpy(dst, src, bpt);
}
}
@@ -1626,170 +1619,34 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border,
/* average border pixels from adjacent src image pairs */
ASSERT(srcDepthNB == 2 * dstDepthNB);
for (img = 0; img < dstDepthNB; img++) {
- const GLubyte *src;
+ const GLubyte *srcA, *srcB;
GLubyte *dst;
/* do border along [img][row=0][col=0] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage;
- dst = dstPtr + (img + 1) * bytesPerDstImage;
- do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst);
+ srcA = srcPtr[img * 2 + 0];
+ srcB = srcPtr[img * 2 + srcImageOffset];
+ dst = dstPtr[img];
+ do_row(datatype, comps, 1, srcA, srcB, 1, dst);
/* do border along [img][row=dstHeight-1][col=0] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (srcHeight - 1) * bytesPerSrcRow;
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (dstHeight - 1) * bytesPerDstRow;
- do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst);
+ srcA = srcPtr[img * 2 + 0]
+ + (srcHeight - 1) * bytesPerSrcRow;
+ srcB = srcPtr[img * 2 + srcImageOffset]
+ + (srcHeight - 1) * bytesPerSrcRow;
+ dst = dstPtr[img] + (dstHeight - 1) * bytesPerDstRow;
+ do_row(datatype, comps, 1, srcA, srcB, 1, dst);
/* do border along [img][row=0][col=dstWidth-1] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (srcWidth - 1) * bpt;
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (dstWidth - 1) * bpt;
- do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst);
+ srcA = srcPtr[img * 2 + 0] + (srcWidth - 1) * bpt;
+ srcB = srcPtr[img * 2 + srcImageOffset] + (srcWidth - 1) * bpt;
+ dst = dstPtr[img] + (dstWidth - 1) * bpt;
+ do_row(datatype, comps, 1, srcA, srcB, 1, dst);
/* do border along [img][row=dstHeight-1][col=dstWidth-1] */
- src = srcPtr + (img * 2 + 1) * bytesPerSrcImage
- + (bytesPerSrcImage - bpt);
- dst = dstPtr + (img + 1) * bytesPerDstImage
- + (bytesPerDstImage - bpt);
- do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst);
- }
- }
- }
-}
-
-
-static void
-make_1d_stack_mipmap(GLenum datatype, GLuint comps, GLint border,
- GLint srcWidth, const GLubyte *srcPtr, GLuint srcRowStride,
- GLint dstWidth, GLint dstHeight,
- GLubyte *dstPtr, GLuint dstRowStride )
-{
- const GLint bpt = bytes_per_pixel(datatype, comps);
- const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
- const GLint dstWidthNB = dstWidth - 2 * border;
- const GLint dstHeightNB = dstHeight - 2 * border;
- const GLint srcRowBytes = bpt * srcRowStride;
- const GLint dstRowBytes = bpt * dstRowStride;
- const GLubyte *src;
- GLubyte *dst;
- GLint row;
-
- /* Compute src and dst pointers, skipping any border */
- src = srcPtr + border * ((srcWidth + 1) * bpt);
- dst = dstPtr + border * ((dstWidth + 1) * bpt);
-
- for (row = 0; row < dstHeightNB; row++) {
- do_row(datatype, comps, srcWidthNB, src, src,
- dstWidthNB, dst);
- src += srcRowBytes;
- dst += dstRowBytes;
- }
-
- if (border) {
- /* copy left-most pixel from source */
- assert(dstPtr);
- assert(srcPtr);
- memcpy(dstPtr, srcPtr, bpt);
- /* copy right-most pixel from source */
- memcpy(dstPtr + (dstWidth - 1) * bpt,
- srcPtr + (srcWidth - 1) * bpt,
- bpt);
- }
-}
-
-
-/**
- * \bug
- * There is quite a bit of refactoring that could be done with this function
- * and \c make_2d_mipmap.
- */
-static void
-make_2d_stack_mipmap(GLenum datatype, GLuint comps, GLint border,
- GLint srcWidth, GLint srcHeight,
- const GLubyte *srcPtr, GLint srcRowStride,
- GLint dstWidth, GLint dstHeight, GLint dstDepth,
- GLubyte *dstPtr, GLint dstRowStride)
-{
- const GLint bpt = bytes_per_pixel(datatype, comps);
- const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */
- const GLint dstWidthNB = dstWidth - 2 * border;
- const GLint dstHeightNB = dstHeight - 2 * border;
- const GLint dstDepthNB = dstDepth - 2 * border;
- const GLint srcRowBytes = bpt * srcRowStride;
- const GLint dstRowBytes = bpt * dstRowStride;
- const GLubyte *srcA, *srcB;
- GLubyte *dst;
- GLint layer;
- GLint row;
-
- /* Compute src and dst pointers, skipping any border */
- srcA = srcPtr + border * ((srcWidth + 1) * bpt);
- if (srcHeight > 1)
- srcB = srcA + srcRowBytes;
- else
- srcB = srcA;
- dst = dstPtr + border * ((dstWidth + 1) * bpt);
-
- for (layer = 0; layer < dstDepthNB; layer++) {
- for (row = 0; row < dstHeightNB; row++) {
- do_row(datatype, comps, srcWidthNB, srcA, srcB,
- dstWidthNB, dst);
- srcA += 2 * srcRowBytes;
- srcB += 2 * srcRowBytes;
- dst += dstRowBytes;
- }
-
- /* This is ugly but probably won't be used much */
- if (border > 0) {
- /* fill in dest border */
- /* lower-left border pixel */
- assert(dstPtr);
- assert(srcPtr);
- memcpy(dstPtr, srcPtr, bpt);
- /* lower-right border pixel */
- memcpy(dstPtr + (dstWidth - 1) * bpt,
- srcPtr + (srcWidth - 1) * bpt, bpt);
- /* upper-left border pixel */
- memcpy(dstPtr + dstWidth * (dstHeight - 1) * bpt,
- srcPtr + srcWidth * (srcHeight - 1) * bpt, bpt);
- /* upper-right border pixel */
- memcpy(dstPtr + (dstWidth * dstHeight - 1) * bpt,
- srcPtr + (srcWidth * srcHeight - 1) * bpt, bpt);
- /* lower border */
- do_row(datatype, comps, srcWidthNB,
- srcPtr + bpt,
- srcPtr + bpt,
- dstWidthNB, dstPtr + bpt);
- /* upper border */
- do_row(datatype, comps, srcWidthNB,
- srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt,
- srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt,
- dstWidthNB,
- dstPtr + (dstWidth * (dstHeight - 1) + 1) * bpt);
- /* left and right borders */
- if (srcHeight == dstHeight) {
- /* copy border pixel from src to dst */
- for (row = 1; row < srcHeight; row++) {
- memcpy(dstPtr + dstWidth * row * bpt,
- srcPtr + srcWidth * row * bpt, bpt);
- memcpy(dstPtr + (dstWidth * row + dstWidth - 1) * bpt,
- srcPtr + (srcWidth * row + srcWidth - 1) * bpt, bpt);
- }
- }
- else {
- /* average two src pixels each dest pixel */
- for (row = 0; row < dstHeightNB; row += 2) {
- do_row(datatype, comps, 1,
- srcPtr + (srcWidth * (row * 2 + 1)) * bpt,
- srcPtr + (srcWidth * (row * 2 + 2)) * bpt,
- 1, dstPtr + (dstWidth * row + 1) * bpt);
- do_row(datatype, comps, 1,
- srcPtr + (srcWidth * (row * 2 + 1) + srcWidth - 1) * bpt,
- srcPtr + (srcWidth * (row * 2 + 2) + srcWidth - 1) * bpt,
- 1, dstPtr + (dstWidth * row + 1 + dstWidth - 1) * bpt);
- }
+ srcA = srcPtr[img * 2 + 0] + (bytesPerSrcImage - bpt);
+ srcB = srcPtr[img * 2 + srcImageOffset] + (bytesPerSrcImage - bpt);
+ dst = dstPtr[img] + (bytesPerDstImage - bpt);
+ do_row(datatype, comps, 1, srcA, srcB, 1, dst);
}
}
}
@@ -1799,28 +1656,29 @@ make_2d_stack_mipmap(GLenum datatype, GLuint comps, GLint border,
/**
* Down-sample a texture image to produce the next lower mipmap level.
* \param comps components per texel (1, 2, 3 or 4)
- * \param srcRowStride stride between source rows, in texels
- * \param dstRowStride stride between destination rows, in texels
+ * \param srcData array[slice] of pointers to source image slices
+ * \param dstData array[slice] of pointers to dest image slices
+ * \param srcRowStride stride between source rows, in bytes
+ * \param dstRowStride stride between destination rows, in bytes
*/
void
_mesa_generate_mipmap_level(GLenum target,
GLenum datatype, GLuint comps,
GLint border,
GLint srcWidth, GLint srcHeight, GLint srcDepth,
- const GLubyte *srcData,
+ const GLubyte **srcData,
GLint srcRowStride,
GLint dstWidth, GLint dstHeight, GLint dstDepth,
- GLubyte *dstData,
+ GLubyte **dstData,
GLint dstRowStride)
{
- /*
- * We use simple 2x2 averaging to compute the next mipmap level.
- */
+ int i;
+
switch (target) {
case GL_TEXTURE_1D:
make_1d_mipmap(datatype, comps, border,
- srcWidth, srcData,
- dstWidth, dstData);
+ srcWidth, srcData[0],
+ dstWidth, dstData[0]);
break;
case GL_TEXTURE_2D:
case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
@@ -1830,8 +1688,8 @@ _mesa_generate_mipmap_level(GLenum target,
case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
make_2d_mipmap(datatype, comps, border,
- srcWidth, srcHeight, srcData, srcRowStride,
- dstWidth, dstHeight, dstData, dstRowStride);
+ srcWidth, srcHeight, srcData[0], srcRowStride,
+ dstWidth, dstHeight, dstData[0], dstRowStride);
break;
case GL_TEXTURE_3D:
make_3d_mipmap(datatype, comps, border,
@@ -1841,23 +1699,26 @@ _mesa_generate_mipmap_level(GLenum target,
dstData, dstRowStride);
break;
case GL_TEXTURE_1D_ARRAY_EXT:
- make_1d_stack_mipmap(datatype, comps, border,
- srcWidth, srcData, srcRowStride,
- dstWidth, dstHeight,
- dstData, dstRowStride);
+ assert(srcHeight == 1);
+ assert(dstHeight == 1);
+ for (i = 0; i < dstDepth; i++) {
+ make_1d_mipmap(datatype, comps, border,
+ srcWidth, srcData[i],
+ dstWidth, dstData[i]);
+ }
break;
case GL_TEXTURE_2D_ARRAY_EXT:
- make_2d_stack_mipmap(datatype, comps, border,
- srcWidth, srcHeight,
- srcData, srcRowStride,
- dstWidth, dstHeight,
- dstDepth, dstData, dstRowStride);
+ for (i = 0; i < dstDepth; i++) {
+ make_2d_mipmap(datatype, comps, border,
+ srcWidth, srcHeight, srcData[i], srcRowStride,
+ dstWidth, dstHeight, dstData[i], dstRowStride);
+ }
break;
case GL_TEXTURE_RECTANGLE_NV:
/* no mipmaps, do nothing */
break;
default:
- _mesa_problem(NULL, "bad dimensions in _mesa_generate_mipmaps");
+ _mesa_problem(NULL, "bad tex target in _mesa_generate_mipmaps");
return;
}
}
@@ -1919,12 +1780,14 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target,
for (level = texObj->BaseLevel; level < maxLevel; level++) {
/* generate image[level+1] from image[level] */
- const struct gl_texture_image *srcImage;
- struct gl_texture_image *dstImage;
+ struct gl_texture_image *srcImage, *dstImage;
+ GLint srcRowStride, dstRowStride;
GLint srcWidth, srcHeight, srcDepth;
GLint dstWidth, dstHeight, dstDepth;
GLint border;
+ GLint slice;
GLboolean nextLevel;
+ GLubyte **srcMaps, **dstMaps;
/* get src image parameters */
srcImage = _mesa_select_tex_image(ctx, texObj, target, level);
@@ -1950,7 +1813,6 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target,
/* Free old image data */
ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
- /* initialize new image */
_mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
dstDepth, border, srcImage->InternalFormat,
srcImage->TexFormat);
@@ -1967,15 +1829,54 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target,
ASSERT(dstImage->TexFormat);
+ if (target == GL_TEXTURE_1D_ARRAY) {
+ srcDepth = srcHeight;
+ dstDepth = dstHeight;
+ srcHeight = 1;
+ dstHeight = 1;
+ }
+
+ /* Map src texture image slices */
+ srcMaps = (GLubyte **) malloc(srcDepth * sizeof(GLubyte *));
+ for (slice = 0; slice < srcDepth; slice++) {
+ ctx->Driver.MapTextureImage(ctx, srcImage, slice,
+ 0, 0, srcWidth, srcHeight,
+ GL_MAP_READ_BIT,
+ &srcMaps[slice], &srcRowStride);
+ }
+
+ /* Map dst texture image slices */
+ dstMaps = (GLubyte **) malloc(dstDepth * sizeof(GLubyte *));
+ for (slice = 0; slice < dstDepth; slice++) {
+ ctx->Driver.MapTextureImage(ctx, dstImage, slice,
+ 0, 0, dstWidth, dstHeight,
+ GL_MAP_WRITE_BIT,
+ &dstMaps[slice], &dstRowStride);
+ }
+
+ /* generate one mipmap level (for 1D/2D/3D/array/etc texture) */
_mesa_generate_mipmap_level(target, datatype, comps, border,
srcWidth, srcHeight, srcDepth,
- srcImage->Data, srcImage->RowStride,
+ (const GLubyte **) srcMaps, srcRowStride,
dstWidth, dstHeight, dstDepth,
- dstImage->Data, dstImage->RowStride);
+ dstMaps, dstRowStride);
+
+ /* Unmap src image slices */
+ for (slice = 0; slice < srcDepth; slice++) {
+ ctx->Driver.UnmapTextureImage(ctx, srcImage, slice);
+ }
+ free(srcMaps);
+
+ /* Unmap dst image slices */
+ for (slice = 0; slice < dstDepth; slice++) {
+ ctx->Driver.UnmapTextureImage(ctx, dstImage, slice);
+ }
+ free(dstMaps);
} /* loop over mipmap levels */
}
+
static void
generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
struct gl_texture_object *texObj,
@@ -1985,7 +1886,7 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
GLint level;
gl_format temp_format;
GLint components;
- GLuint temp_src_stride, temp_dst_stride; /* in bytes */
+ GLuint temp_src_stride; /* in bytes */
GLubyte *temp_src = NULL, *temp_dst = NULL;
GLenum temp_datatype;
GLenum temp_base_format;
@@ -2032,9 +1933,10 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
ctx->Pack = ctx->DefaultPacking;
/* Get the uncompressed image */
- ctx->Driver.GetTexImage(ctx, target, texObj->BaseLevel,
+ assert(srcImage->Level == texObj->BaseLevel);
+ ctx->Driver.GetTexImage(ctx,
temp_base_format, temp_datatype,
- temp_src, texObj, srcImage);
+ temp_src, srcImage);
/* restore packing mode */
ctx->Pack = save;
}
@@ -2048,6 +1950,7 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
GLint dstWidth, dstHeight, dstDepth;
GLint border;
GLboolean nextLevel;
+ GLuint temp_dst_stride; /* in bytes */
/* get src image parameters */
srcImage = _mesa_select_tex_image(ctx, texObj, target, level);
@@ -2084,15 +1987,19 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
_mesa_generate_mipmap_level(target, temp_datatype, components, border,
srcWidth, srcHeight, srcDepth,
- temp_src, temp_src_stride / components,
+ (const GLubyte **) &temp_src,
+ temp_src_stride,
dstWidth, dstHeight, dstDepth,
- temp_dst, temp_dst_stride / components);
+ &temp_dst, temp_dst_stride);
/* initialize new image */
_mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight,
dstDepth, border, srcImage->InternalFormat,
srcImage->TexFormat);
+ /* Free old dest texture image buffer */
+ ctx->Driver.FreeTextureImageBuffer(ctx, dstImage);
+
ctx->Driver.TexImage2D(ctx, target, level + 1,
srcImage->InternalFormat,
dstWidth, dstHeight, border,
@@ -2104,7 +2011,6 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target,
GLubyte *temp = temp_src;
temp_src = temp_dst;
temp_dst = temp;
-
temp_src_stride = temp_dst_stride;
}
} /* loop over mipmap levels */
diff --git a/mesalib/src/mesa/main/mipmap.h b/mesalib/src/mesa/main/mipmap.h
index 478395021..8b7cd7d5a 100644
--- a/mesalib/src/mesa/main/mipmap.h
+++ b/mesalib/src/mesa/main/mipmap.h
@@ -34,10 +34,10 @@ _mesa_generate_mipmap_level(GLenum target,
GLenum datatype, GLuint comps,
GLint border,
GLint srcWidth, GLint srcHeight, GLint srcDepth,
- const GLubyte *srcData,
+ const GLubyte **srcData,
GLint srcRowStride,
GLint dstWidth, GLint dstHeight, GLint dstDepth,
- GLubyte *dstData,
+ GLubyte **dstData,
GLint dstRowStride);
diff --git a/mesalib/src/mesa/main/mm.c b/mesalib/src/mesa/main/mm.c
index 25a029370..ab32123a4 100644
--- a/mesalib/src/mesa/main/mm.c
+++ b/mesalib/src/mesa/main/mm.c
@@ -211,7 +211,7 @@ mmFindBlock(struct mem_block *heap, unsigned start)
}
-static INLINE int
+static inline int
Join2Blocks(struct mem_block *p)
{
/* XXX there should be some assertions here */
diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h
index be43434c8..67db4df8f 100644
--- a/mesalib/src/mesa/main/mtypes.h
+++ b/mesalib/src/mesa/main/mtypes.h
@@ -330,7 +330,7 @@ typedef enum
* (VERT_RESULT_PSIZ, VERT_RESULT_BFC0, VERT_RESULT_BFC1, and
* VERT_RESULT_EDGE) are converted to a value of -1.
*/
-static INLINE int
+static inline int
_mesa_vert_result_to_frag_attrib(gl_vert_result vert_result)
{
if (vert_result >= VERT_RESULT_CLIP_DIST0)
@@ -350,7 +350,7 @@ _mesa_vert_result_to_frag_attrib(gl_vert_result vert_result)
* gl_frag_attrib values which have no corresponding gl_vert_result
* (FRAG_ATTRIB_FACE and FRAG_ATTRIB_PNTC) are converted to a value of -1.
*/
-static INLINE int
+static inline int
_mesa_frag_attrib_to_vert_result(gl_frag_attrib frag_attrib)
{
if (frag_attrib <= FRAG_ATTRIB_TEX7)
@@ -1834,11 +1834,6 @@ struct gl_program
/** Numbered local parameters */
GLfloat LocalParams[MAX_PROGRAM_LOCAL_PARAMS][4];
- /** Vertex/fragment shader varying vars */
- struct gl_program_parameter_list *Varying;
- /** Vertex program user-defined attributes */
- struct gl_program_parameter_list *Attributes;
-
/** Map from sampler unit to texture unit (set by glUniform1i()) */
GLubyte SamplerUnits[MAX_SAMPLERS];
/** Which texture target is being sampled (TEXTURE_1D/2D/3D/etc_INDEX) */
@@ -2148,8 +2143,14 @@ struct gl_shader_program
GLuint NumShaders; /**< number of attached shaders */
struct gl_shader **Shaders; /**< List of attached the shaders */
- /** User-defined attribute bindings (glBindAttribLocation) */
- struct gl_program_parameter_list *Attributes;
+ /**
+ * User-defined attribute bindings
+ *
+ * These are set via \c glBindAttribLocation and are used to direct the
+ * GLSL linker. These are \b not the values used in the compiled shader,
+ * and they are \b not the values returned by \c glGetAttribLocation.
+ */
+ struct string_to_uint_map *AttributeBindings;
/** Transform feedback varyings */
struct {
@@ -2751,7 +2752,6 @@ struct gl_extensions
GLboolean ARB_depth_buffer_float;
GLboolean ARB_depth_clamp;
GLboolean ARB_depth_texture;
- GLboolean ARB_draw_buffers;
GLboolean ARB_draw_buffers_blend;
GLboolean ARB_draw_elements_base_vertex;
GLboolean ARB_draw_instanced;
diff --git a/mesalib/src/mesa/main/pack.c b/mesalib/src/mesa/main/pack.c
index 6d6ae59f4..62e352f3f 100644
--- a/mesalib/src/mesa/main/pack.c
+++ b/mesalib/src/mesa/main/pack.c
@@ -2910,35 +2910,35 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4],
}
-static INLINE GLuint
+static inline GLuint
clamp_byte_to_uint(GLbyte b)
{
return b < 0 ? 0 : b;
}
-static INLINE GLuint
+static inline GLuint
clamp_short_to_uint(GLshort s)
{
return s < 0 ? 0 : s;
}
-static INLINE GLuint
+static inline GLuint
clamp_int_to_uint(GLint i)
{
return i < 0 ? 0 : i;
}
-static INLINE GLuint
+static inline GLuint
clamp_float_to_uint(GLfloat f)
{
return f < 0.0F ? 0 : IROUND(f);
}
-static INLINE GLuint
+static inline GLuint
clamp_half_to_uint(GLhalfARB h)
{
GLfloat f = _mesa_half_to_float(h);
diff --git a/mesalib/src/mesa/main/pixel.c b/mesalib/src/mesa/main/pixel.c
index c87f5e0e9..e73c5a49a 100644
--- a/mesalib/src/mesa/main/pixel.c
+++ b/mesalib/src/mesa/main/pixel.c
@@ -506,7 +506,7 @@ _mesa_GetPixelMapusv( GLenum map, GLushort *values )
* Implements glPixelTransfer[fi] whether called immediately or from a
* display list.
*/
-static void GLAPIENTRY
+void GLAPIENTRY
_mesa_PixelTransferf( GLenum pname, GLfloat param )
{
GET_CURRENT_CONTEXT(ctx);
diff --git a/mesalib/src/mesa/main/pixel.h b/mesalib/src/mesa/main/pixel.h
index c54b1fc5e..797b0d9d6 100644
--- a/mesalib/src/mesa/main/pixel.h
+++ b/mesalib/src/mesa/main/pixel.h
@@ -1,72 +1,81 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 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.
- */
-
-
-/**
- * \file pixel.h
- * Pixel operations.
- */
-
-
-#ifndef PIXEL_H
-#define PIXEL_H
-
-
-#include "compiler.h"
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct gl_context;
-
-
-#if FEATURE_pixel_transfer
-
-extern void
-_mesa_update_pixel( struct gl_context *ctx, GLuint newstate );
-
-extern void
-_mesa_init_pixel_dispatch( struct _glapi_table * disp );
-
-#else /* FEATURE_pixel_transfer */
-
-static INLINE void
-_mesa_update_pixel(struct gl_context *ctx, GLuint newstate)
-{
-}
-
-static INLINE void
-_mesa_init_pixel_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_pixel_transfer */
-
-
-extern void
-_mesa_init_pixel( struct gl_context * ctx );
-
-/*@}*/
-
-#endif /* PIXEL_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 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.
+ */
+
+
+/**
+ * \file pixel.h
+ * Pixel operations.
+ */
+
+
+#ifndef PIXEL_H
+#define PIXEL_H
+
+
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
+
+
+#if FEATURE_pixel_transfer
+
+extern void GLAPIENTRY
+_mesa_PixelTransferf(GLenum pname, GLfloat param);
+
+extern void
+_mesa_update_pixel( struct gl_context *ctx, GLuint newstate );
+
+extern void
+_mesa_init_pixel_dispatch( struct _glapi_table * disp );
+
+#else /* FEATURE_pixel_transfer */
+
+static inline void GLAPIENTRY
+_mesa_PixelTransferf(GLenum pname, GLfloat param)
+{
+}
+
+
+static inline void
+_mesa_update_pixel(struct gl_context *ctx, GLuint newstate)
+{
+}
+
+static inline void
+_mesa_init_pixel_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_pixel_transfer */
+
+
+extern void
+_mesa_init_pixel( struct gl_context * ctx );
+
+/*@}*/
+
+#endif /* PIXEL_H */
diff --git a/mesalib/src/mesa/main/queryobj.h b/mesalib/src/mesa/main/queryobj.h
index 16962e55a..e7a133b59 100644
--- a/mesalib/src/mesa/main/queryobj.h
+++ b/mesalib/src/mesa/main/queryobj.h
@@ -34,7 +34,7 @@
#if FEATURE_queryobj
-static INLINE struct gl_query_object *
+static inline struct gl_query_object *
_mesa_lookup_query_object(struct gl_context *ctx, GLuint id)
{
return (struct gl_query_object *)
@@ -50,18 +50,18 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp);
#else /* FEATURE_queryobj */
-static INLINE struct gl_query_object *
+static inline struct gl_query_object *
_mesa_lookup_query_object(struct gl_context *ctx, GLuint id)
{
return NULL;
}
-static INLINE void
+static inline void
_mesa_init_query_object_functions(struct dd_function_table *driver)
{
}
-static INLINE void
+static inline void
_mesa_init_queryobj_dispatch(struct _glapi_table *disp)
{
}
diff --git a/mesalib/src/mesa/main/rastpos.h b/mesalib/src/mesa/main/rastpos.h
index a530ddd76..cdd94a66c 100644
--- a/mesalib/src/mesa/main/rastpos.h
+++ b/mesalib/src/mesa/main/rastpos.h
@@ -1,60 +1,60 @@
-/**
- * \file rastpos.h
- * Raster position operations.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 4.1
- *
- * Copyright (C) 1999-2002 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 RASTPOS_H
-#define RASTPOS_H
-
-
-#include "compiler.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct gl_context;
-
-#if FEATURE_rastpos
-
-extern void
-_mesa_init_rastpos_dispatch(struct _glapi_table *disp);
-
-#else /* FEATURE_rastpos */
-
-static INLINE void
-_mesa_init_rastpos_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_rastpos */
-
-extern void
-_mesa_init_rastpos(struct gl_context *ctx);
-
-/*@}*/
-
-#endif /* RASTPOS_H */
+/**
+ * \file rastpos.h
+ * Raster position operations.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 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 RASTPOS_H
+#define RASTPOS_H
+
+
+#include "compiler.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct gl_context;
+
+#if FEATURE_rastpos
+
+extern void
+_mesa_init_rastpos_dispatch(struct _glapi_table *disp);
+
+#else /* FEATURE_rastpos */
+
+static inline void
+_mesa_init_rastpos_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_rastpos */
+
+extern void
+_mesa_init_rastpos(struct gl_context *ctx);
+
+/*@}*/
+
+#endif /* RASTPOS_H */
diff --git a/mesalib/src/mesa/main/remap.h b/mesalib/src/mesa/main/remap.h
index ae91a35d9..fa3172487 100644
--- a/mesalib/src/mesa/main/remap.h
+++ b/mesalib/src/mesa/main/remap.h
@@ -1,98 +1,98 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.7
- *
- * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
- *
- * 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
- * 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.
- */
-
-
-#ifndef REMAP_H
-#define REMAP_H
-
-
-#include "main/compiler.h"
-#include "main/mfeatures.h"
-
-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
-
-extern int
-driDispatchRemapTable[];
-
-extern const char *
-_mesa_get_function_spec(int func_index);
-
-extern int
-_mesa_map_function_spec(const char *spec);
-
-extern void
-_mesa_map_function_array(const struct gl_function_remap *func_array);
-
-extern void
-_mesa_map_static_functions(void);
-
-extern void
-_mesa_init_remap_table(void);
-
-#else /* FEATURE_remap_table */
-
-static INLINE const char *
-_mesa_get_function_spec(int func_index)
-{
- return NULL;
-}
-
-static INLINE int
-_mesa_map_function_spec(const char *spec)
-{
- return -1;
-}
-
-static INLINE void
-_mesa_map_function_array(const struct gl_function_remap *func_array)
-{
-}
-
-static INLINE void
-_mesa_map_static_functions(void)
-{
-}
-
-
-static INLINE void
-_mesa_init_remap_table(void)
-{
-}
-
-#endif /* FEATURE_remap_table */
-
-
-#endif /* REMAP_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.7
+ *
+ * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+ *
+ * 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
+ * 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.
+ */
+
+
+#ifndef REMAP_H
+#define REMAP_H
+
+
+#include "main/compiler.h"
+#include "main/mfeatures.h"
+
+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
+
+extern int
+driDispatchRemapTable[];
+
+extern const char *
+_mesa_get_function_spec(int func_index);
+
+extern int
+_mesa_map_function_spec(const char *spec);
+
+extern void
+_mesa_map_function_array(const struct gl_function_remap *func_array);
+
+extern void
+_mesa_map_static_functions(void);
+
+extern void
+_mesa_init_remap_table(void);
+
+#else /* FEATURE_remap_table */
+
+static inline const char *
+_mesa_get_function_spec(int func_index)
+{
+ return NULL;
+}
+
+static inline int
+_mesa_map_function_spec(const char *spec)
+{
+ return -1;
+}
+
+static inline void
+_mesa_map_function_array(const struct gl_function_remap *func_array)
+{
+}
+
+static inline void
+_mesa_map_static_functions(void)
+{
+}
+
+
+static inline void
+_mesa_init_remap_table(void)
+{
+}
+
+#endif /* FEATURE_remap_table */
+
+
+#endif /* REMAP_H */
diff --git a/mesalib/src/mesa/main/remap_helper.h b/mesalib/src/mesa/main/remap_helper.h
index 127266ea7..5ea2bb62c 100644
--- a/mesalib/src/mesa/main/remap_helper.h
+++ b/mesalib/src/mesa/main/remap_helper.h
@@ -4472,612 +4472,613 @@ static const char _mesa_function_pool[] =
"glDrawBuffers\0"
"glDrawBuffersARB\0"
"glDrawBuffersATI\0"
+ "glDrawBuffersNV\0"
"\0"
- /* _mesa_function_pool[31182]: ClearBufferiv (will be remapped) */
+ /* _mesa_function_pool[31198]: ClearBufferiv (will be remapped) */
"iip\0"
"glClearBufferiv\0"
"\0"
- /* _mesa_function_pool[31203]: ProgramLocalParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[31219]: ProgramLocalParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[31240]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[31256]: SpriteParameterivSGIX (dynamic) */
"ip\0"
"glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[31268]: ProvokingVertexEXT (will be remapped) */
+ /* _mesa_function_pool[31284]: ProvokingVertexEXT (will be remapped) */
"i\0"
"glProvokingVertexEXT\0"
"glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[31310]: MultiTexCoord1fARB (offset 378) */
+ /* _mesa_function_pool[31326]: MultiTexCoord1fARB (offset 378) */
"if\0"
"glMultiTexCoord1f\0"
"glMultiTexCoord1fARB\0"
"\0"
- /* _mesa_function_pool[31353]: LoadName (offset 198) */
+ /* _mesa_function_pool[31369]: LoadName (offset 198) */
"i\0"
"glLoadName\0"
"\0"
- /* _mesa_function_pool[31367]: VertexAttribs4ubvNV (will be remapped) */
+ /* _mesa_function_pool[31383]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
"glVertexAttribs4ubvNV\0"
"\0"
- /* _mesa_function_pool[31394]: WeightsvARB (dynamic) */
+ /* _mesa_function_pool[31410]: WeightsvARB (dynamic) */
"ip\0"
"glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[31412]: NormalP3ui (will be remapped) */
+ /* _mesa_function_pool[31428]: NormalP3ui (will be remapped) */
"ii\0"
"glNormalP3ui\0"
"\0"
- /* _mesa_function_pool[31429]: VertexAttribP2ui (will be remapped) */
+ /* _mesa_function_pool[31445]: VertexAttribP2ui (will be remapped) */
"iiii\0"
"glVertexAttribP2ui\0"
"\0"
- /* _mesa_function_pool[31454]: Uniform1fvARB (will be remapped) */
+ /* _mesa_function_pool[31470]: Uniform1fvARB (will be remapped) */
"iip\0"
"glUniform1fv\0"
"glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[31488]: CopyTexSubImage1D (offset 325) */
+ /* _mesa_function_pool[31504]: CopyTexSubImage1D (offset 325) */
"iiiiii\0"
"glCopyTexSubImage1D\0"
"glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[31539]: CullFace (offset 152) */
+ /* _mesa_function_pool[31555]: CullFace (offset 152) */
"i\0"
"glCullFace\0"
"\0"
- /* _mesa_function_pool[31553]: BindTexture (offset 307) */
+ /* _mesa_function_pool[31569]: BindTexture (offset 307) */
"ii\0"
"glBindTexture\0"
"glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[31588]: BeginFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[31604]: BeginFragmentShaderATI (will be remapped) */
"\0"
"glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[31615]: MultiTexCoord4fARB (offset 402) */
+ /* _mesa_function_pool[31631]: MultiTexCoord4fARB (offset 402) */
"iffff\0"
"glMultiTexCoord4f\0"
"glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[31661]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[31677]: VertexAttribs3svNV (will be remapped) */
"iip\0"
"glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[31687]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[31703]: StencilFunc (offset 243) */
"iii\0"
"glStencilFunc\0"
"\0"
- /* _mesa_function_pool[31706]: CopyPixels (offset 255) */
+ /* _mesa_function_pool[31722]: CopyPixels (offset 255) */
"iiiii\0"
"glCopyPixels\0"
"\0"
- /* _mesa_function_pool[31726]: Rectsv (offset 93) */
+ /* _mesa_function_pool[31742]: Rectsv (offset 93) */
"pp\0"
"glRectsv\0"
"\0"
- /* _mesa_function_pool[31739]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[31755]: ReplacementCodeuivSUN (dynamic) */
"p\0"
"glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[31766]: MultiTexCoordP2uiv (will be remapped) */
+ /* _mesa_function_pool[31782]: MultiTexCoordP2uiv (will be remapped) */
"iip\0"
"glMultiTexCoordP2uiv\0"
"\0"
- /* _mesa_function_pool[31792]: EnableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[31808]: EnableVertexAttribArrayARB (will be remapped) */
"i\0"
"glEnableVertexAttribArray\0"
"glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[31850]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[31866]: NormalPointervINTEL (dynamic) */
"ip\0"
"glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[31876]: CopyConvolutionFilter2D (offset 355) */
+ /* _mesa_function_pool[31892]: CopyConvolutionFilter2D (offset 355) */
"iiiiii\0"
"glCopyConvolutionFilter2D\0"
"glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[31939]: WindowPos3ivMESA (will be remapped) */
+ /* _mesa_function_pool[31955]: WindowPos3ivMESA (will be remapped) */
"p\0"
"glWindowPos3iv\0"
"glWindowPos3ivARB\0"
"glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[31994]: CopyBufferSubData (will be remapped) */
+ /* _mesa_function_pool[32010]: CopyBufferSubData (will be remapped) */
"iiiii\0"
"glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[32021]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[32037]: NormalPointer (offset 318) */
"iip\0"
"glNormalPointer\0"
"\0"
- /* _mesa_function_pool[32042]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[32058]: TexParameterfv (offset 179) */
"iip\0"
"glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[32064]: IsBufferARB (will be remapped) */
+ /* _mesa_function_pool[32080]: IsBufferARB (will be remapped) */
"i\0"
"glIsBuffer\0"
"glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[32092]: WindowPos4iMESA (will be remapped) */
+ /* _mesa_function_pool[32108]: WindowPos4iMESA (will be remapped) */
"iiii\0"
"glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[32116]: VertexAttrib4uivARB (will be remapped) */
+ /* _mesa_function_pool[32132]: VertexAttrib4uivARB (will be remapped) */
"ip\0"
"glVertexAttrib4uiv\0"
"glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[32161]: Tangent3bvEXT (dynamic) */
+ /* _mesa_function_pool[32177]: Tangent3bvEXT (dynamic) */
"p\0"
"glTangent3bvEXT\0"
"\0"
- /* _mesa_function_pool[32180]: VertexAttribI3uivEXT (will be remapped) */
+ /* _mesa_function_pool[32196]: VertexAttribI3uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3uivEXT\0"
"glVertexAttribI3uiv\0"
"\0"
- /* _mesa_function_pool[32227]: UniformMatrix3x4fv (will be remapped) */
+ /* _mesa_function_pool[32243]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[32254]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[32270]: ClipPlane (offset 150) */
"ip\0"
"glClipPlane\0"
"\0"
- /* _mesa_function_pool[32270]: Recti (offset 90) */
+ /* _mesa_function_pool[32286]: Recti (offset 90) */
"iiii\0"
"glRecti\0"
"\0"
- /* _mesa_function_pool[32284]: TrackMatrixNV (will be remapped) */
+ /* _mesa_function_pool[32300]: TrackMatrixNV (will be remapped) */
"iiii\0"
"glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[32306]: DrawRangeElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[32322]: DrawRangeElementsBaseVertex (will be remapped) */
"iiiiipi\0"
"glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[32345]: SamplerParameterIuiv (will be remapped) */
+ /* _mesa_function_pool[32361]: SamplerParameterIuiv (will be remapped) */
"iip\0"
"glSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[32373]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[32389]: TexCoordPointervINTEL (dynamic) */
"iip\0"
"glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[32402]: DeleteBuffersARB (will be remapped) */
+ /* _mesa_function_pool[32418]: DeleteBuffersARB (will be remapped) */
"ip\0"
"glDeleteBuffers\0"
"glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[32441]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[32457]: PixelTransformParameterfvEXT (dynamic) */
"iip\0"
"glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[32477]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[32493]: PrimitiveRestartNV (will be remapped) */
"\0"
"glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[32500]: WindowPos4fvMESA (will be remapped) */
+ /* _mesa_function_pool[32516]: WindowPos4fvMESA (will be remapped) */
"p\0"
"glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[32522]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[32538]: GetPixelMapuiv (offset 272) */
"ip\0"
"glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[32543]: Rectf (offset 88) */
+ /* _mesa_function_pool[32559]: Rectf (offset 88) */
"ffff\0"
"glRectf\0"
"\0"
- /* _mesa_function_pool[32557]: VertexAttrib1sNV (will be remapped) */
+ /* _mesa_function_pool[32573]: VertexAttrib1sNV (will be remapped) */
"ii\0"
"glVertexAttrib1sNV\0"
"\0"
- /* _mesa_function_pool[32580]: Indexfv (offset 47) */
+ /* _mesa_function_pool[32596]: Indexfv (offset 47) */
"p\0"
"glIndexfv\0"
"\0"
- /* _mesa_function_pool[32593]: ColorP3uiv (will be remapped) */
+ /* _mesa_function_pool[32609]: ColorP3uiv (will be remapped) */
"ip\0"
"glColorP3uiv\0"
"\0"
- /* _mesa_function_pool[32610]: SecondaryColor3svEXT (will be remapped) */
+ /* _mesa_function_pool[32626]: SecondaryColor3svEXT (will be remapped) */
"p\0"
"glSecondaryColor3sv\0"
"glSecondaryColor3svEXT\0"
"\0"
- /* _mesa_function_pool[32656]: LoadTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[32672]: LoadTransposeMatrixfARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixf\0"
"glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[32708]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[32724]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[32743]: Tangent3bEXT (dynamic) */
+ /* _mesa_function_pool[32759]: Tangent3bEXT (dynamic) */
"iii\0"
"glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[32763]: CombinerParameterfNV (will be remapped) */
+ /* _mesa_function_pool[32779]: CombinerParameterfNV (will be remapped) */
"if\0"
"glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[32790]: IndexMask (offset 212) */
+ /* _mesa_function_pool[32806]: IndexMask (offset 212) */
"i\0"
"glIndexMask\0"
"\0"
- /* _mesa_function_pool[32805]: BindProgramNV (will be remapped) */
+ /* _mesa_function_pool[32821]: BindProgramNV (will be remapped) */
"ii\0"
"glBindProgramARB\0"
"glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[32842]: VertexAttrib4svARB (will be remapped) */
+ /* _mesa_function_pool[32858]: VertexAttrib4svARB (will be remapped) */
"ip\0"
"glVertexAttrib4sv\0"
"glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[32885]: GetFloatv (offset 262) */
+ /* _mesa_function_pool[32901]: GetFloatv (offset 262) */
"ip\0"
"glGetFloatv\0"
"\0"
- /* _mesa_function_pool[32901]: CreateDebugObjectMESA (dynamic) */
+ /* _mesa_function_pool[32917]: CreateDebugObjectMESA (dynamic) */
"\0"
"glCreateDebugObjectMESA\0"
"\0"
- /* _mesa_function_pool[32927]: GetShaderiv (will be remapped) */
+ /* _mesa_function_pool[32943]: GetShaderiv (will be remapped) */
"iip\0"
"glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[32946]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[32962]: ClientWaitSync (will be remapped) */
"iii\0"
"glClientWaitSync\0"
"\0"
- /* _mesa_function_pool[32968]: TexCoord4s (offset 124) */
+ /* _mesa_function_pool[32984]: TexCoord4s (offset 124) */
"iiii\0"
"glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[32987]: TexCoord3sv (offset 117) */
+ /* _mesa_function_pool[33003]: TexCoord3sv (offset 117) */
"p\0"
"glTexCoord3sv\0"
"\0"
- /* _mesa_function_pool[33004]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[33020]: BindFragmentShaderATI (will be remapped) */
"i\0"
"glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[33031]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[33047]: PopAttrib (offset 218) */
"\0"
"glPopAttrib\0"
"\0"
- /* _mesa_function_pool[33045]: Fogfv (offset 154) */
+ /* _mesa_function_pool[33061]: Fogfv (offset 154) */
"ip\0"
"glFogfv\0"
"\0"
- /* _mesa_function_pool[33057]: UnmapBufferARB (will be remapped) */
+ /* _mesa_function_pool[33073]: UnmapBufferARB (will be remapped) */
"i\0"
"glUnmapBuffer\0"
"glUnmapBufferARB\0"
"\0"
- /* _mesa_function_pool[33091]: InitNames (offset 197) */
+ /* _mesa_function_pool[33107]: InitNames (offset 197) */
"\0"
"glInitNames\0"
"\0"
- /* _mesa_function_pool[33105]: Normal3sv (offset 61) */
+ /* _mesa_function_pool[33121]: Normal3sv (offset 61) */
"p\0"
"glNormal3sv\0"
"\0"
- /* _mesa_function_pool[33120]: Minmax (offset 368) */
+ /* _mesa_function_pool[33136]: Minmax (offset 368) */
"iii\0"
"glMinmax\0"
"glMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[33146]: TexCoord4d (offset 118) */
+ /* _mesa_function_pool[33162]: TexCoord4d (offset 118) */
"dddd\0"
"glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[33165]: DeformationMap3dSGIX (dynamic) */
+ /* _mesa_function_pool[33181]: DeformationMap3dSGIX (dynamic) */
"iddiiddiiddiip\0"
"glDeformationMap3dSGIX\0"
"\0"
- /* _mesa_function_pool[33204]: TexCoord4f (offset 120) */
+ /* _mesa_function_pool[33220]: TexCoord4f (offset 120) */
"ffff\0"
"glTexCoord4f\0"
"\0"
- /* _mesa_function_pool[33223]: FogCoorddvEXT (will be remapped) */
+ /* _mesa_function_pool[33239]: FogCoorddvEXT (will be remapped) */
"p\0"
"glFogCoorddv\0"
"glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[33255]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[33271]: FinishTextureSUNX (dynamic) */
"\0"
"glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[33277]: GetFragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[33293]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
"glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[33307]: Binormal3fvEXT (dynamic) */
+ /* _mesa_function_pool[33323]: Binormal3fvEXT (dynamic) */
"p\0"
"glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[33327]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[33343]: GetBooleanv (offset 258) */
"ip\0"
"glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[33345]: ColorFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[33361]: ColorFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiiii\0"
"glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[33382]: Hint (offset 158) */
+ /* _mesa_function_pool[33398]: Hint (offset 158) */
"ii\0"
"glHint\0"
"\0"
- /* _mesa_function_pool[33393]: Color4dv (offset 28) */
+ /* _mesa_function_pool[33409]: Color4dv (offset 28) */
"p\0"
"glColor4dv\0"
"\0"
- /* _mesa_function_pool[33407]: VertexAttrib2svARB (will be remapped) */
+ /* _mesa_function_pool[33423]: VertexAttrib2svARB (will be remapped) */
"ip\0"
"glVertexAttrib2sv\0"
"glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[33450]: AreProgramsResidentNV (will be remapped) */
+ /* _mesa_function_pool[33466]: AreProgramsResidentNV (will be remapped) */
"ipp\0"
"glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[33479]: WindowPos3svMESA (will be remapped) */
+ /* _mesa_function_pool[33495]: WindowPos3svMESA (will be remapped) */
"p\0"
"glWindowPos3sv\0"
"glWindowPos3svARB\0"
"glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[33534]: CopyColorSubTable (offset 347) */
+ /* _mesa_function_pool[33550]: CopyColorSubTable (offset 347) */
"iiiii\0"
"glCopyColorSubTable\0"
"glCopyColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[33584]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[33600]: WeightdvARB (dynamic) */
"ip\0"
"glWeightdvARB\0"
"\0"
- /* _mesa_function_pool[33602]: DeleteRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[33618]: DeleteRenderbuffersEXT (will be remapped) */
"ip\0"
"glDeleteRenderbuffers\0"
"glDeleteRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[33653]: VertexAttrib4NubvARB (will be remapped) */
+ /* _mesa_function_pool[33669]: VertexAttrib4NubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nubv\0"
"glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[33700]: VertexAttrib3dvNV (will be remapped) */
+ /* _mesa_function_pool[33716]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
"glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[33724]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[33740]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
"glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[33755]: Vertex4iv (offset 147) */
+ /* _mesa_function_pool[33771]: Vertex4iv (offset 147) */
"p\0"
"glVertex4iv\0"
"\0"
- /* _mesa_function_pool[33770]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[33786]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[33805]: TexCoord4dv (offset 119) */
+ /* _mesa_function_pool[33821]: TexCoord4dv (offset 119) */
"p\0"
"glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[33822]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[33838]: LockArraysEXT (will be remapped) */
"ii\0"
"glLockArraysEXT\0"
"\0"
- /* _mesa_function_pool[33842]: Begin (offset 7) */
+ /* _mesa_function_pool[33858]: Begin (offset 7) */
"i\0"
"glBegin\0"
"\0"
- /* _mesa_function_pool[33853]: LightModeli (offset 165) */
+ /* _mesa_function_pool[33869]: LightModeli (offset 165) */
"ii\0"
"glLightModeli\0"
"\0"
- /* _mesa_function_pool[33871]: VertexAttribI4ivEXT (will be remapped) */
+ /* _mesa_function_pool[33887]: VertexAttribI4ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ivEXT\0"
"glVertexAttribI4iv\0"
"\0"
- /* _mesa_function_pool[33916]: Rectfv (offset 89) */
+ /* _mesa_function_pool[33932]: Rectfv (offset 89) */
"pp\0"
"glRectfv\0"
"\0"
- /* _mesa_function_pool[33929]: LightModelf (offset 163) */
+ /* _mesa_function_pool[33945]: LightModelf (offset 163) */
"if\0"
"glLightModelf\0"
"\0"
- /* _mesa_function_pool[33947]: GetTexParameterfv (offset 282) */
+ /* _mesa_function_pool[33963]: GetTexParameterfv (offset 282) */
"iip\0"
"glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[33972]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[33988]: GetLightfv (offset 264) */
"iip\0"
"glGetLightfv\0"
"\0"
- /* _mesa_function_pool[33990]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[34006]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
"glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[34026]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[34042]: BinormalPointerEXT (dynamic) */
"iip\0"
"glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[34052]: VertexAttrib1dNV (will be remapped) */
+ /* _mesa_function_pool[34068]: VertexAttrib1dNV (will be remapped) */
"id\0"
"glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[34075]: GetCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[34091]: GetCombinerInputParameterivNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[34114]: Disable (offset 214) */
+ /* _mesa_function_pool[34130]: Disable (offset 214) */
"i\0"
"glDisable\0"
"\0"
- /* _mesa_function_pool[34127]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[34143]: MultiTexCoord2fvARB (offset 387) */
"ip\0"
"glMultiTexCoord2fv\0"
"glMultiTexCoord2fvARB\0"
"\0"
- /* _mesa_function_pool[34172]: GetRenderbufferParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[34188]: GetRenderbufferParameterivEXT (will be remapped) */
"iip\0"
"glGetRenderbufferParameteriv\0"
"glGetRenderbufferParameterivEXT\0"
"\0"
- /* _mesa_function_pool[34238]: CombinerParameterivNV (will be remapped) */
+ /* _mesa_function_pool[34254]: CombinerParameterivNV (will be remapped) */
"ip\0"
"glCombinerParameterivNV\0"
"\0"
- /* _mesa_function_pool[34266]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[34282]: GenFragmentShadersATI (will be remapped) */
"i\0"
"glGenFragmentShadersATI\0"
"\0"
- /* _mesa_function_pool[34293]: DrawArrays (offset 310) */
+ /* _mesa_function_pool[34309]: DrawArrays (offset 310) */
"iii\0"
"glDrawArrays\0"
"glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[34327]: WeightuivARB (dynamic) */
+ /* _mesa_function_pool[34343]: WeightuivARB (dynamic) */
"ip\0"
"glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[34346]: GetVertexAttribIivEXT (will be remapped) */
+ /* _mesa_function_pool[34362]: GetVertexAttribIivEXT (will be remapped) */
"iip\0"
"glGetVertexAttribIivEXT\0"
"glGetVertexAttribIiv\0"
"\0"
- /* _mesa_function_pool[34396]: VertexAttrib2sARB (will be remapped) */
+ /* _mesa_function_pool[34412]: VertexAttrib2sARB (will be remapped) */
"iii\0"
"glVertexAttrib2s\0"
"glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[34438]: GetnTexImageARB (will be remapped) */
+ /* _mesa_function_pool[34454]: GetnTexImageARB (will be remapped) */
"iiiiip\0"
"glGetnTexImageARB\0"
"\0"
- /* _mesa_function_pool[34464]: ColorMask (offset 210) */
+ /* _mesa_function_pool[34480]: ColorMask (offset 210) */
"iiii\0"
"glColorMask\0"
"\0"
- /* _mesa_function_pool[34482]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[34498]: GenAsyncMarkersSGIX (dynamic) */
"i\0"
"glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[34507]: Tangent3svEXT (dynamic) */
+ /* _mesa_function_pool[34523]: Tangent3svEXT (dynamic) */
"p\0"
"glTangent3svEXT\0"
"\0"
- /* _mesa_function_pool[34526]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[34542]: GetListParameterivSGIX (dynamic) */
"iip\0"
"glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[34556]: BindBufferARB (will be remapped) */
+ /* _mesa_function_pool[34572]: BindBufferARB (will be remapped) */
"ii\0"
"glBindBuffer\0"
"glBindBufferARB\0"
"\0"
- /* _mesa_function_pool[34589]: GetInfoLogARB (will be remapped) */
+ /* _mesa_function_pool[34605]: GetInfoLogARB (will be remapped) */
"iipp\0"
"glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[34611]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[34627]: RasterPos4iv (offset 83) */
"p\0"
"glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[34629]: Enable (offset 215) */
+ /* _mesa_function_pool[34645]: Enable (offset 215) */
"i\0"
"glEnable\0"
"\0"
- /* _mesa_function_pool[34641]: LineStipple (offset 167) */
+ /* _mesa_function_pool[34657]: LineStipple (offset 167) */
"ii\0"
"glLineStipple\0"
"\0"
- /* _mesa_function_pool[34659]: VertexAttribs4svNV (will be remapped) */
+ /* _mesa_function_pool[34675]: VertexAttribs4svNV (will be remapped) */
"iip\0"
"glVertexAttribs4svNV\0"
"\0"
- /* _mesa_function_pool[34685]: EdgeFlagPointerListIBM (dynamic) */
+ /* _mesa_function_pool[34701]: EdgeFlagPointerListIBM (dynamic) */
"ipi\0"
"glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[34715]: UniformMatrix3x2fv (will be remapped) */
+ /* _mesa_function_pool[34731]: UniformMatrix3x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[34742]: GetMinmaxParameterfv (offset 365) */
+ /* _mesa_function_pool[34758]: GetMinmaxParameterfv (offset 365) */
"iip\0"
"glGetMinmaxParameterfv\0"
"glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[34796]: VertexAttrib1fvARB (will be remapped) */
+ /* _mesa_function_pool[34812]: VertexAttrib1fvARB (will be remapped) */
"ip\0"
"glVertexAttrib1fv\0"
"glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[34839]: GenBuffersARB (will be remapped) */
+ /* _mesa_function_pool[34855]: GenBuffersARB (will be remapped) */
"ip\0"
"glGenBuffers\0"
"glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[34872]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[34888]: VertexAttribs1svNV (will be remapped) */
"iip\0"
"glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[34898]: Vertex3fv (offset 137) */
+ /* _mesa_function_pool[34914]: Vertex3fv (offset 137) */
"p\0"
"glVertex3fv\0"
"\0"
- /* _mesa_function_pool[34913]: GetTexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[34929]: GetTexBumpParameterivATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[34944]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[34960]: Binormal3bEXT (dynamic) */
"iii\0"
"glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[34965]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[34981]: FragmentMaterialivSGIX (dynamic) */
"iip\0"
"glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[34995]: IsRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[35011]: IsRenderbufferEXT (will be remapped) */
"i\0"
"glIsRenderbuffer\0"
"glIsRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[35035]: GenProgramsNV (will be remapped) */
+ /* _mesa_function_pool[35051]: GenProgramsNV (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[35072]: VertexAttrib4dvNV (will be remapped) */
+ /* _mesa_function_pool[35088]: VertexAttrib4dvNV (will be remapped) */
"ip\0"
"glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[35096]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[35112]: EndFragmentShaderATI (will be remapped) */
"\0"
"glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[35121]: Binormal3iEXT (dynamic) */
+ /* _mesa_function_pool[35137]: Binormal3iEXT (dynamic) */
"iii\0"
"glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[35142]: WindowPos2fMESA (will be remapped) */
+ /* _mesa_function_pool[35158]: WindowPos2fMESA (will be remapped) */
"ff\0"
"glWindowPos2f\0"
"glWindowPos2fARB\0"
@@ -5097,7 +5098,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 5288, GetProgramInfoLog_remap_index },
{ 425, GetProgramiv_remap_index },
{ 7178, GetShaderInfoLog_remap_index },
- { 32927, GetShaderiv_remap_index },
+ { 32943, GetShaderiv_remap_index },
{ 14151, IsProgram_remap_index },
{ 13052, IsShader_remap_index },
{ 10732, StencilFuncSeparate_remap_index },
@@ -5105,14 +5106,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 8243, StencilOpSeparate_remap_index },
{ 23832, UniformMatrix2x3fv_remap_index },
{ 3040, UniformMatrix2x4fv_remap_index },
- { 34715, UniformMatrix3x2fv_remap_index },
- { 32227, UniformMatrix3x4fv_remap_index },
+ { 34731, UniformMatrix3x2fv_remap_index },
+ { 32243, UniformMatrix3x4fv_remap_index },
{ 17280, UniformMatrix4x2fv_remap_index },
{ 3531, UniformMatrix4x3fv_remap_index },
{ 5511, ClampColor_remap_index },
{ 19232, ClearBufferfi_remap_index },
{ 18648, ClearBufferfv_remap_index },
- { 31182, ClearBufferiv_remap_index },
+ { 31198, ClearBufferiv_remap_index },
{ 14356, ClearBufferuiv_remap_index },
{ 21354, GetStringi_remap_index },
{ 2981, TexBuffer_remap_index },
@@ -5121,7 +5122,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 10832, GetInteger64i_v_remap_index },
{ 24912, VertexAttribDivisor_remap_index },
{ 10620, LoadTransposeMatrixdARB_remap_index },
- { 32656, LoadTransposeMatrixfARB_remap_index },
+ { 32672, LoadTransposeMatrixfARB_remap_index },
{ 6196, MultTransposeMatrixdARB_remap_index },
{ 25278, MultTransposeMatrixfARB_remap_index },
{ 236, SampleCoverageARB_remap_index },
@@ -5133,8 +5134,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 21776, CompressedTexSubImage3DARB_remap_index },
{ 30288, GetCompressedTexImageARB_remap_index },
{ 4123, DisableVertexAttribArrayARB_remap_index },
- { 31792, EnableVertexAttribArrayARB_remap_index },
- { 33770, GetProgramEnvParameterdvARB_remap_index },
+ { 31808, EnableVertexAttribArrayARB_remap_index },
+ { 33786, GetProgramEnvParameterdvARB_remap_index },
{ 25158, GetProgramEnvParameterfvARB_remap_index },
{ 29205, GetProgramLocalParameterdvARB_remap_index },
{ 8719, GetProgramLocalParameterfvARB_remap_index },
@@ -5149,21 +5150,21 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 9594, ProgramEnvParameter4fvARB_remap_index },
{ 4292, ProgramLocalParameter4dARB_remap_index },
{ 13861, ProgramLocalParameter4dvARB_remap_index },
- { 31203, ProgramLocalParameter4fARB_remap_index },
+ { 31219, ProgramLocalParameter4fARB_remap_index },
{ 27568, ProgramLocalParameter4fvARB_remap_index },
{ 30042, ProgramStringARB_remap_index },
{ 21085, VertexAttrib1dARB_remap_index },
{ 16689, VertexAttrib1dvARB_remap_index },
{ 4488, VertexAttrib1fARB_remap_index },
- { 34796, VertexAttrib1fvARB_remap_index },
+ { 34812, VertexAttrib1fvARB_remap_index },
{ 7769, VertexAttrib1sARB_remap_index },
{ 2361, VertexAttrib1svARB_remap_index },
{ 16102, VertexAttrib2dARB_remap_index },
{ 18669, VertexAttrib2dvARB_remap_index },
{ 1693, VertexAttrib2fARB_remap_index },
{ 18782, VertexAttrib2fvARB_remap_index },
- { 34396, VertexAttrib2sARB_remap_index },
- { 33407, VertexAttrib2svARB_remap_index },
+ { 34412, VertexAttrib2sARB_remap_index },
+ { 33423, VertexAttrib2svARB_remap_index },
{ 12036, VertexAttrib3dARB_remap_index },
{ 9261, VertexAttrib3dvARB_remap_index },
{ 1780, VertexAttrib3fARB_remap_index },
@@ -5174,7 +5175,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 19055, VertexAttrib4NivARB_remap_index },
{ 24104, VertexAttrib4NsvARB_remap_index },
{ 25110, VertexAttrib4NubARB_remap_index },
- { 33653, VertexAttrib4NubvARB_remap_index },
+ { 33669, VertexAttrib4NubvARB_remap_index },
{ 20442, VertexAttrib4NuivARB_remap_index },
{ 3361, VertexAttrib4NusvARB_remap_index },
{ 11625, VertexAttrib4bvARB_remap_index },
@@ -5184,22 +5185,22 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 12594, VertexAttrib4fvARB_remap_index },
{ 10975, VertexAttrib4ivARB_remap_index },
{ 18462, VertexAttrib4sARB_remap_index },
- { 32842, VertexAttrib4svARB_remap_index },
+ { 32858, VertexAttrib4svARB_remap_index },
{ 17751, VertexAttrib4ubvARB_remap_index },
- { 32116, VertexAttrib4uivARB_remap_index },
+ { 32132, VertexAttrib4uivARB_remap_index },
{ 21524, VertexAttrib4usvARB_remap_index },
{ 23627, VertexAttribPointerARB_remap_index },
- { 34556, BindBufferARB_remap_index },
+ { 34572, BindBufferARB_remap_index },
{ 7476, BufferDataARB_remap_index },
{ 1531, BufferSubDataARB_remap_index },
- { 32402, DeleteBuffersARB_remap_index },
- { 34839, GenBuffersARB_remap_index },
+ { 32418, DeleteBuffersARB_remap_index },
+ { 34855, GenBuffersARB_remap_index },
{ 18825, GetBufferParameterivARB_remap_index },
{ 17898, GetBufferPointervARB_remap_index },
{ 1484, GetBufferSubDataARB_remap_index },
- { 32064, IsBufferARB_remap_index },
+ { 32080, IsBufferARB_remap_index },
{ 28052, MapBufferARB_remap_index },
- { 33057, UnmapBufferARB_remap_index },
+ { 33073, UnmapBufferARB_remap_index },
{ 332, BeginQueryARB_remap_index },
{ 21180, DeleteQueriesARB_remap_index },
{ 12913, EndQueryARB_remap_index },
@@ -5217,8 +5218,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 12658, GetActiveUniformARB_remap_index },
{ 10086, GetAttachedObjectsARB_remap_index },
{ 10393, GetHandleARB_remap_index },
- { 34589, GetInfoLogARB_remap_index },
- { 33724, GetObjectParameterfvARB_remap_index },
+ { 34605, GetInfoLogARB_remap_index },
+ { 33740, GetObjectParameterfvARB_remap_index },
{ 29079, GetObjectParameterivARB_remap_index },
{ 30525, GetShaderSourceARB_remap_index },
{ 29749, GetUniformLocationARB_remap_index },
@@ -5227,7 +5228,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 21569, LinkProgramARB_remap_index },
{ 21627, ShaderSourceARB_remap_index },
{ 8143, Uniform1fARB_remap_index },
- { 31454, Uniform1fvARB_remap_index },
+ { 31470, Uniform1fvARB_remap_index },
{ 23575, Uniform1iARB_remap_index },
{ 22424, Uniform1ivARB_remap_index },
{ 2310, Uniform2fARB_remap_index },
@@ -5264,8 +5265,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 29423, TexBufferARB_remap_index },
{ 17418, BindVertexArray_remap_index },
{ 15594, GenVertexArrays_remap_index },
- { 31994, CopyBufferSubData_remap_index },
- { 32946, ClientWaitSync_remap_index },
+ { 32010, CopyBufferSubData_remap_index },
+ { 32962, ClientWaitSync_remap_index },
{ 2802, DeleteSync_remap_index },
{ 7810, FenceSync_remap_index },
{ 16161, GetInteger64v_remap_index },
@@ -5274,7 +5275,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 10017, WaitSync_remap_index },
{ 4091, DrawElementsBaseVertex_remap_index },
{ 19748, DrawElementsInstancedBaseVertex_remap_index },
- { 32306, DrawRangeElementsBaseVertex_remap_index },
+ { 32322, DrawRangeElementsBaseVertex_remap_index },
{ 28083, MultiDrawElementsBaseVertex_remap_index },
{ 17684, BlendEquationSeparateiARB_remap_index },
{ 18918, BlendEquationiARB_remap_index },
@@ -5289,24 +5290,24 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 27191, GetSamplerParameteriv_remap_index },
{ 15139, IsSampler_remap_index },
{ 17371, SamplerParameterIiv_remap_index },
- { 32345, SamplerParameterIuiv_remap_index },
+ { 32361, SamplerParameterIuiv_remap_index },
{ 23884, SamplerParameterf_remap_index },
{ 17545, SamplerParameterfv_remap_index },
{ 23859, SamplerParameteri_remap_index },
{ 19294, SamplerParameteriv_remap_index },
{ 20101, ColorP3ui_remap_index },
- { 32593, ColorP3uiv_remap_index },
+ { 32609, ColorP3uiv_remap_index },
{ 22530, ColorP4ui_remap_index },
{ 4234, ColorP4uiv_remap_index },
{ 26733, MultiTexCoordP1ui_remap_index },
{ 13349, MultiTexCoordP1uiv_remap_index },
{ 1668, MultiTexCoordP2ui_remap_index },
- { 31766, MultiTexCoordP2uiv_remap_index },
+ { 31782, MultiTexCoordP2uiv_remap_index },
{ 14751, MultiTexCoordP3ui_remap_index },
{ 11051, MultiTexCoordP3uiv_remap_index },
{ 23428, MultiTexCoordP4ui_remap_index },
{ 3953, MultiTexCoordP4uiv_remap_index },
- { 31412, NormalP3ui_remap_index },
+ { 31428, NormalP3ui_remap_index },
{ 20277, NormalP3uiv_remap_index },
{ 26436, SecondaryColorP3ui_remap_index },
{ 20295, SecondaryColorP3uiv_remap_index },
@@ -5320,7 +5321,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 5780, TexCoordP4uiv_remap_index },
{ 10502, VertexAttribP1ui_remap_index },
{ 14938, VertexAttribP1uiv_remap_index },
- { 31429, VertexAttribP2ui_remap_index },
+ { 31445, VertexAttribP2ui_remap_index },
{ 5572, VertexAttribP2uiv_remap_index },
{ 3426, VertexAttribP3ui_remap_index },
{ 21036, VertexAttribP3uiv_remap_index },
@@ -5358,7 +5359,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 3153, GetnPixelMapusvARB_remap_index },
{ 1364, GetnPolygonStippleARB_remap_index },
{ 22614, GetnSeparableFilterARB_remap_index },
- { 34438, GetnTexImageARB_remap_index },
+ { 34454, GetnTexImageARB_remap_index },
{ 19723, GetnUniformdvARB_remap_index },
{ 4905, GetnUniformfvARB_remap_index },
{ 10527, GetnUniformivARB_remap_index },
@@ -5381,7 +5382,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 7599, VertexPointerEXT_remap_index },
{ 3867, PointParameterfEXT_remap_index },
{ 8450, PointParameterfvEXT_remap_index },
- { 33822, LockArraysEXT_remap_index },
+ { 33838, LockArraysEXT_remap_index },
{ 15854, UnlockArraysEXT_remap_index },
{ 1272, SecondaryColor3bEXT_remap_index },
{ 8643, SecondaryColor3bvEXT_remap_index },
@@ -5392,7 +5393,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 490, SecondaryColor3iEXT_remap_index },
{ 17136, SecondaryColor3ivEXT_remap_index },
{ 10760, SecondaryColor3sEXT_remap_index },
- { 32610, SecondaryColor3svEXT_remap_index },
+ { 32626, SecondaryColor3svEXT_remap_index },
{ 28915, SecondaryColor3ubEXT_remap_index },
{ 22720, SecondaryColor3ubvEXT_remap_index },
{ 13716, SecondaryColor3uiEXT_remap_index },
@@ -5404,7 +5405,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 22359, MultiDrawElementsEXT_remap_index },
{ 22570, FogCoordPointerEXT_remap_index },
{ 4956, FogCoorddEXT_remap_index },
- { 33223, FogCoorddvEXT_remap_index },
+ { 33239, FogCoorddvEXT_remap_index },
{ 5073, FogCoordfEXT_remap_index },
{ 28838, FogCoordfvEXT_remap_index },
{ 12637, PixelTexGenSGIX_remap_index },
@@ -5413,13 +5414,13 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 5898, VertexArrayRangeNV_remap_index },
{ 29863, CombinerInputNV_remap_index },
{ 2232, CombinerOutputNV_remap_index },
- { 32763, CombinerParameterfNV_remap_index },
+ { 32779, CombinerParameterfNV_remap_index },
{ 5752, CombinerParameterfvNV_remap_index },
{ 23909, CombinerParameteriNV_remap_index },
- { 34238, CombinerParameterivNV_remap_index },
+ { 34254, CombinerParameterivNV_remap_index },
{ 7887, FinalCombinerInputNV_remap_index },
{ 1629, GetCombinerInputParameterfvNV_remap_index },
- { 34075, GetCombinerInputParameterivNV_remap_index },
+ { 34091, GetCombinerInputParameterivNV_remap_index },
{ 14712, GetCombinerOutputParameterfvNV_remap_index },
{ 14540, GetCombinerOutputParameterivNV_remap_index },
{ 7273, GetFinalCombinerInputParameterfvNV_remap_index },
@@ -5427,7 +5428,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 13327, ResizeBuffersMESA_remap_index },
{ 11863, WindowPos2dMESA_remap_index },
{ 1065, WindowPos2dvMESA_remap_index },
- { 35142, WindowPos2fMESA_remap_index },
+ { 35158, WindowPos2fMESA_remap_index },
{ 8588, WindowPos2fvMESA_remap_index },
{ 19366, WindowPos2iMESA_remap_index },
{ 21844, WindowPos2ivMESA_remap_index },
@@ -5438,14 +5439,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 536, WindowPos3fMESA_remap_index },
{ 15915, WindowPos3fvMESA_remap_index },
{ 25639, WindowPos3iMESA_remap_index },
- { 31939, WindowPos3ivMESA_remap_index },
+ { 31955, WindowPos3ivMESA_remap_index },
{ 20164, WindowPos3sMESA_remap_index },
- { 33479, WindowPos3svMESA_remap_index },
+ { 33495, WindowPos3svMESA_remap_index },
{ 11814, WindowPos4dMESA_remap_index },
{ 18142, WindowPos4dvMESA_remap_index },
{ 14842, WindowPos4fMESA_remap_index },
- { 32500, WindowPos4fvMESA_remap_index },
- { 32092, WindowPos4iMESA_remap_index },
+ { 32516, WindowPos4fvMESA_remap_index },
+ { 32108, WindowPos4iMESA_remap_index },
{ 13166, WindowPos4ivMESA_remap_index },
{ 20392, WindowPos4sMESA_remap_index },
{ 3451, WindowPos4svMESA_remap_index },
@@ -5458,11 +5459,11 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 8856, IsFenceNV_remap_index },
{ 14467, SetFenceNV_remap_index },
{ 4544, TestFenceNV_remap_index },
- { 33450, AreProgramsResidentNV_remap_index },
- { 32805, BindProgramNV_remap_index },
+ { 33466, AreProgramsResidentNV_remap_index },
+ { 32821, BindProgramNV_remap_index },
{ 27603, DeleteProgramsNV_remap_index },
{ 22938, ExecuteProgramNV_remap_index },
- { 35035, GenProgramsNV_remap_index },
+ { 35051, GenProgramsNV_remap_index },
{ 24938, GetProgramParameterdvNV_remap_index },
{ 11240, GetProgramParameterfvNV_remap_index },
{ 27986, GetProgramStringNV_remap_index },
@@ -5477,12 +5478,12 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 29539, ProgramParameters4dvNV_remap_index },
{ 25946, ProgramParameters4fvNV_remap_index },
{ 22148, RequestResidentProgramsNV_remap_index },
- { 32284, TrackMatrixNV_remap_index },
- { 34052, VertexAttrib1dNV_remap_index },
+ { 32300, TrackMatrixNV_remap_index },
+ { 34068, VertexAttrib1dNV_remap_index },
{ 14378, VertexAttrib1dvNV_remap_index },
{ 30144, VertexAttrib1fNV_remap_index },
{ 2589, VertexAttrib1fvNV_remap_index },
- { 32557, VertexAttrib1sNV_remap_index },
+ { 32573, VertexAttrib1sNV_remap_index },
{ 15988, VertexAttrib1svNV_remap_index },
{ 5264, VertexAttrib2dNV_remap_index },
{ 14271, VertexAttrib2dvNV_remap_index },
@@ -5491,13 +5492,13 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 6567, VertexAttrib2sNV_remap_index },
{ 20218, VertexAttrib2svNV_remap_index },
{ 12011, VertexAttrib3dNV_remap_index },
- { 33700, VertexAttrib3dvNV_remap_index },
+ { 33716, VertexAttrib3dvNV_remap_index },
{ 11026, VertexAttrib3fNV_remap_index },
{ 26338, VertexAttrib3fvNV_remap_index },
{ 23682, VertexAttrib3sNV_remap_index },
{ 25220, VertexAttrib3svNV_remap_index },
{ 30612, VertexAttrib4dNV_remap_index },
- { 35072, VertexAttrib4dvNV_remap_index },
+ { 35088, VertexAttrib4dvNV_remap_index },
{ 5692, VertexAttrib4fNV_remap_index },
{ 10062, VertexAttrib4fvNV_remap_index },
{ 28462, VertexAttrib4sNV_remap_index },
@@ -5507,32 +5508,32 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 23118, VertexAttribPointerNV_remap_index },
{ 2404, VertexAttribs1dvNV_remap_index },
{ 27868, VertexAttribs1fvNV_remap_index },
- { 34872, VertexAttribs1svNV_remap_index },
+ { 34888, VertexAttribs1svNV_remap_index },
{ 11077, VertexAttribs2dvNV_remap_index },
{ 26995, VertexAttribs2fvNV_remap_index },
{ 18738, VertexAttribs2svNV_remap_index },
{ 5800, VertexAttribs3dvNV_remap_index },
{ 2263, VertexAttribs3fvNV_remap_index },
- { 31661, VertexAttribs3svNV_remap_index },
+ { 31677, VertexAttribs3svNV_remap_index },
{ 28552, VertexAttribs4dvNV_remap_index },
{ 5872, VertexAttribs4fvNV_remap_index },
- { 34659, VertexAttribs4svNV_remap_index },
- { 31367, VertexAttribs4ubvNV_remap_index },
+ { 34675, VertexAttribs4svNV_remap_index },
+ { 31383, VertexAttribs4ubvNV_remap_index },
{ 28622, GetTexBumpParameterfvATI_remap_index },
- { 34913, GetTexBumpParameterivATI_remap_index },
+ { 34929, GetTexBumpParameterivATI_remap_index },
{ 19846, TexBumpParameterfvATI_remap_index },
{ 22019, TexBumpParameterivATI_remap_index },
{ 16552, AlphaFragmentOp1ATI_remap_index },
{ 27286, AlphaFragmentOp2ATI_remap_index },
{ 26254, AlphaFragmentOp3ATI_remap_index },
- { 31588, BeginFragmentShaderATI_remap_index },
- { 33004, BindFragmentShaderATI_remap_index },
+ { 31604, BeginFragmentShaderATI_remap_index },
+ { 33020, BindFragmentShaderATI_remap_index },
{ 25349, ColorFragmentOp1ATI_remap_index },
{ 4711, ColorFragmentOp2ATI_remap_index },
- { 33345, ColorFragmentOp3ATI_remap_index },
+ { 33361, ColorFragmentOp3ATI_remap_index },
{ 6038, DeleteFragmentShaderATI_remap_index },
- { 35096, EndFragmentShaderATI_remap_index },
- { 34266, GenFragmentShadersATI_remap_index },
+ { 35112, EndFragmentShaderATI_remap_index },
+ { 34282, GenFragmentShadersATI_remap_index },
{ 27149, PassTexCoordATI_remap_index },
{ 7579, SampleMapATI_remap_index },
{ 28733, SetFragmentShaderConstantATI_remap_index },
@@ -5550,14 +5551,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 9528, ProgramNamedParameter4fNV_remap_index },
{ 12502, ProgramNamedParameter4fvNV_remap_index },
{ 18053, PrimitiveRestartIndexNV_remap_index },
- { 32477, PrimitiveRestartNV_remap_index },
+ { 32493, PrimitiveRestartNV_remap_index },
{ 25925, DepthBoundsEXT_remap_index },
{ 1164, BlendEquationSeparateEXT_remap_index },
{ 15689, BindFramebufferEXT_remap_index },
{ 27379, BindRenderbufferEXT_remap_index },
{ 10309, CheckFramebufferStatusEXT_remap_index },
{ 24254, DeleteFramebuffersEXT_remap_index },
- { 33602, DeleteRenderbuffersEXT_remap_index },
+ { 33618, DeleteRenderbuffersEXT_remap_index },
{ 14295, FramebufferRenderbufferEXT_remap_index },
{ 14484, FramebufferTexture1DEXT_remap_index },
{ 12296, FramebufferTexture2DEXT_remap_index },
@@ -5566,9 +5567,9 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 18603, GenRenderbuffersEXT_remap_index },
{ 7315, GenerateMipmapEXT_remap_index },
{ 23211, GetFramebufferAttachmentParameterivEXT_remap_index },
- { 34172, GetRenderbufferParameterivEXT_remap_index },
+ { 34188, GetRenderbufferParameterivEXT_remap_index },
{ 21899, IsFramebufferEXT_remap_index },
- { 34995, IsRenderbufferEXT_remap_index },
+ { 35011, IsRenderbufferEXT_remap_index },
{ 8803, RenderbufferStorageEXT_remap_index },
{ 715, BlitFramebufferEXT_remap_index },
{ 15255, BufferParameteriAPPLE_remap_index },
@@ -5576,7 +5577,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 1912, BindFragDataLocationEXT_remap_index },
{ 26038, GetFragDataLocationEXT_remap_index },
{ 11355, GetUniformuivEXT_remap_index },
- { 34346, GetVertexAttribIivEXT_remap_index },
+ { 34362, GetVertexAttribIivEXT_remap_index },
{ 4561, GetVertexAttribIuivEXT_remap_index },
{ 12774, Uniform1uiEXT_remap_index },
{ 29624, Uniform1uivEXT_remap_index },
@@ -5597,10 +5598,10 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 28254, VertexAttribI3iEXT_remap_index },
{ 26688, VertexAttribI3ivEXT_remap_index },
{ 3608, VertexAttribI3uiEXT_remap_index },
- { 32180, VertexAttribI3uivEXT_remap_index },
+ { 32196, VertexAttribI3uivEXT_remap_index },
{ 23487, VertexAttribI4bvEXT_remap_index },
{ 15548, VertexAttribI4iEXT_remap_index },
- { 33871, VertexAttribI4ivEXT_remap_index },
+ { 33887, VertexAttribI4ivEXT_remap_index },
{ 14198, VertexAttribI4svEXT_remap_index },
{ 17571, VertexAttribI4ubvEXT_remap_index },
{ 17199, VertexAttribI4uiEXT_remap_index },
@@ -5629,7 +5630,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 15170, EndTransformFeedbackEXT_remap_index },
{ 11553, GetTransformFeedbackVaryingEXT_remap_index },
{ 22204, TransformFeedbackVaryingsEXT_remap_index },
- { 31268, ProvokingVertexEXT_remap_index },
+ { 31284, ProvokingVertexEXT_remap_index },
{ 11501, GetTexParameterPointervAPPLE_remap_index },
{ 5528, TextureRangeAPPLE_remap_index },
{ 12368, GetObjectParameterivAPPLE_remap_index },
@@ -5657,7 +5658,7 @@ static const struct gl_function_remap MESA_alt_functions[] = {
{ 11973, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
{ 18164, _gloffset_ColorSubTable },
- { 33534, _gloffset_CopyColorSubTable },
+ { 33550, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
{ 277, _gloffset_ConvolutionFilter1D },
{ 2628, _gloffset_CopyConvolutionFilter1D },
@@ -5671,13 +5672,13 @@ static const struct gl_function_remap MESA_alt_functions[] = {
{ 26774, _gloffset_ConvolutionParameterf },
{ 28488, _gloffset_GetConvolutionParameterfv },
{ 29345, _gloffset_GetConvolutionFilter },
- { 31876, _gloffset_CopyConvolutionFilter2D },
+ { 31892, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
{ 16048, _gloffset_CopyTexSubImage3D },
{ 17851, _gloffset_CopyTexImage2D },
{ 26164, _gloffset_CopyTexImage1D },
{ 29026, _gloffset_CopyTexSubImage2D },
- { 31488, _gloffset_CopyTexSubImage1D },
+ { 31504, _gloffset_CopyTexSubImage1D },
/* from GL_EXT_draw_range_elements */
{ 10168, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
@@ -5689,8 +5690,8 @@ static const struct gl_function_remap MESA_alt_functions[] = {
{ 28378, _gloffset_ResetMinmax },
{ 29242, _gloffset_GetHistogramParameteriv },
{ 30411, _gloffset_GetHistogram },
- { 33120, _gloffset_Minmax },
- { 34742, _gloffset_GetMinmaxParameterfv },
+ { 33136, _gloffset_Minmax },
+ { 34758, _gloffset_GetMinmaxParameterfv },
/* from GL_EXT_paletted_texture */
{ 9014, _gloffset_ColorTable },
{ 16228, _gloffset_GetColorTable },
@@ -5708,11 +5709,11 @@ static const struct gl_function_remap MESA_alt_functions[] = {
{ 14402, _gloffset_GenTextures },
{ 16759, _gloffset_DeleteTextures },
{ 20988, _gloffset_IsTexture },
- { 31553, _gloffset_BindTexture },
+ { 31569, _gloffset_BindTexture },
/* from GL_EXT_vertex_array */
{ 25865, _gloffset_ArrayElement },
- { 32708, _gloffset_GetPointerv },
- { 34293, _gloffset_DrawArrays },
+ { 32724, _gloffset_GetPointerv },
+ { 34309, _gloffset_DrawArrays },
/* from GL_SGI_color_table */
{ 8292, _gloffset_ColorTableParameteriv },
{ 9014, _gloffset_ColorTable },
@@ -5753,9 +5754,9 @@ static const struct gl_function_remap MESA_alt_functions[] = {
{ 28963, _gloffset_MultiTexCoord2ivARB },
{ 29302, _gloffset_MultiTexCoord1iARB },
{ 30686, _gloffset_MultiTexCoord4svARB },
- { 31310, _gloffset_MultiTexCoord1fARB },
- { 31615, _gloffset_MultiTexCoord4fARB },
- { 34127, _gloffset_MultiTexCoord2fvARB },
+ { 31326, _gloffset_MultiTexCoord1fARB },
+ { 31631, _gloffset_MultiTexCoord4fARB },
+ { 34143, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
diff --git a/mesalib/src/mesa/main/renderbuffer.h b/mesalib/src/mesa/main/renderbuffer.h
index f9329d55f..de471cd6b 100644
--- a/mesalib/src/mesa/main/renderbuffer.h
+++ b/mesalib/src/mesa/main/renderbuffer.h
@@ -108,7 +108,7 @@ extern void
_mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr,
struct gl_renderbuffer *rb);
-static INLINE void
+static inline void
_mesa_reference_renderbuffer(struct gl_renderbuffer **ptr,
struct gl_renderbuffer *rb)
{
diff --git a/mesalib/src/mesa/main/samplerobj.c b/mesalib/src/mesa/main/samplerobj.c
index 3ee27fb2c..7cf0654ad 100644
--- a/mesalib/src/mesa/main/samplerobj.c
+++ b/mesalib/src/mesa/main/samplerobj.c
@@ -313,7 +313,7 @@ validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap)
/**
* This is called just prior to changing any sampler object state.
*/
-static INLINE void
+static inline void
flush(struct gl_context *ctx)
{
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
diff --git a/mesalib/src/mesa/main/samplerobj.h b/mesalib/src/mesa/main/samplerobj.h
index a839010b7..fe7d5a7d3 100644
--- a/mesalib/src/mesa/main/samplerobj.h
+++ b/mesalib/src/mesa/main/samplerobj.h
@@ -28,7 +28,7 @@
struct dd_function_table;
-static INLINE struct gl_sampler_object *
+static inline struct gl_sampler_object *
_mesa_get_samplerobj(struct gl_context *ctx, GLuint unit)
{
if (ctx->Texture.Unit[unit].Sampler)
diff --git a/mesalib/src/mesa/main/shader_query.cpp b/mesalib/src/mesa/main/shader_query.cpp
new file mode 100644
index 000000000..bd873a491
--- /dev/null
+++ b/mesalib/src/mesa/main/shader_query.cpp
@@ -0,0 +1,239 @@
+/*
+ * Copyright © 2011 Intel Corporation
+ *
+ * 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.
+ */
+
+/**
+ * \file shader_query.cpp
+ * C-to-C++ bridge functions to query GLSL shader data
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+
+#include "main/core.h"
+#include "glsl_symbol_table.h"
+#include "ir.h"
+#include "shaderobj.h"
+#include "program/hash_table.h"
+#include "../glsl/program.h"
+
+extern "C" {
+#include "shaderapi.h"
+}
+
+void GLAPIENTRY
+_mesa_BindAttribLocationARB(GLhandleARB program, GLuint index,
+ const GLcharARB *name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ struct gl_shader_program *const shProg =
+ _mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation");
+ if (!shProg)
+ return;
+
+ if (!name)
+ return;
+
+ if (strncmp(name, "gl_", 3) == 0) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glBindAttribLocation(illegal name)");
+ return;
+ }
+
+ if (index >= ctx->Const.VertexProgram.MaxAttribs) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glBindAttribLocation(index)");
+ return;
+ }
+
+ /* Replace the current value if it's already in the list. Add
+ * VERT_ATTRIB_GENERIC0 because that's how the linker differentiates
+ * between built-in attributes and user-defined attributes.
+ */
+ shProg->AttributeBindings->put(index + VERT_ATTRIB_GENERIC0, name);
+
+ /*
+ * Note that this attribute binding won't go into effect until
+ * glLinkProgram is called again.
+ */
+}
+
+void GLAPIENTRY
+_mesa_GetActiveAttribARB(GLhandleARB program, GLuint desired_index,
+ GLsizei maxLength, GLsizei * length, GLint * size,
+ GLenum * type, GLcharARB * name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *shProg;
+
+ shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib");
+ if (!shProg)
+ return;
+
+ if (!shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_VALUE,
+ "glGetActiveAttrib(program not linked)");
+ return;
+ }
+
+ if (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(no vertex shader)");
+ return;
+ }
+
+ exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir;
+ unsigned current_index = 0;
+
+ foreach_list(node, ir) {
+ const ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if (var == NULL
+ || var->mode != ir_var_in
+ || var->location == -1
+ || var->location < VERT_ATTRIB_GENERIC0)
+ continue;
+
+ if (current_index == desired_index) {
+ _mesa_copy_string(name, maxLength, length, var->name);
+
+ if (size)
+ *size = (var->type->is_array()) ? var->type->length : 1;
+
+ if (type)
+ *type = var->type->gl_type;
+
+ return;
+ }
+
+ current_index++;
+ }
+
+ /* If the loop did not return early, the caller must have asked for
+ * an index that did not exit. Set an error.
+ */
+ _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(index)");
+}
+
+GLint GLAPIENTRY
+_mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_shader_program *const shProg =
+ _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation");
+
+ if (!shProg) {
+ return -1;
+ }
+
+ if (!shProg->LinkStatus) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glGetAttribLocation(program not linked)");
+ return -1;
+ }
+
+ if (!name)
+ return -1;
+
+ /* Not having a vertex shader is not an error.
+ */
+ if (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL)
+ return -1;
+
+ exec_list *ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir;
+ foreach_list(node, ir) {
+ const ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ /* The extra check against VERT_ATTRIB_GENERIC0 is because
+ * glGetAttribLocation cannot be used on "conventional" attributes.
+ *
+ * From page 95 of the OpenGL 3.0 spec:
+ *
+ * "If name is not an active attribute, if name is a conventional
+ * attribute, or if an error occurs, -1 will be returned."
+ */
+ if (var == NULL
+ || var->mode != ir_var_in
+ || var->location == -1
+ || var->location < VERT_ATTRIB_GENERIC0)
+ continue;
+
+ if (strcmp(var->name, name) == 0)
+ return var->location - VERT_ATTRIB_GENERIC0;
+ }
+
+ return -1;
+}
+
+
+unsigned
+_mesa_count_active_attribs(struct gl_shader_program *shProg)
+{
+ if (!shProg->LinkStatus
+ || shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
+ return 0;
+ }
+
+ exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir;
+ unsigned i = 0;
+
+ foreach_list(node, ir) {
+ const ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if (var == NULL
+ || var->mode != ir_var_in
+ || var->location == -1
+ || var->location < VERT_ATTRIB_GENERIC0)
+ continue;
+
+ i++;
+ }
+
+ return i;
+}
+
+
+size_t
+_mesa_longest_attribute_name_length(struct gl_shader_program *shProg)
+{
+ if (!shProg->LinkStatus
+ || shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
+ return 0;
+ }
+
+ exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir;
+ size_t longest = 0;
+
+ foreach_list(node, ir) {
+ const ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+ if (var == NULL
+ || var->mode != ir_var_in
+ || var->location == -1
+ || var->location < VERT_ATTRIB_GENERIC0)
+ continue;
+
+ const size_t len = strlen(var->name);
+ if (len >= longest)
+ longest = len + 1;
+ }
+
+ return longest;
+}
diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c
index 3ce14d154..9e0ed9c69 100644
--- a/mesalib/src/mesa/main/shaderapi.c
+++ b/mesalib/src/mesa/main/shaderapi.c
@@ -324,82 +324,6 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
}
-static GLint
-get_attrib_location(struct gl_context *ctx, GLuint program, const GLchar *name)
-{
- struct gl_shader_program *shProg
- = _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation");
-
- if (!shProg) {
- return -1;
- }
-
- if (!shProg->LinkStatus) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glGetAttribLocation(program not linked)");
- return -1;
- }
-
- if (!name)
- return -1;
-
- if (shProg->VertexProgram) {
- const struct gl_program_parameter_list *attribs =
- shProg->VertexProgram->Base.Attributes;
- if (attribs) {
- GLint i = _mesa_lookup_parameter_index(attribs, -1, name);
- if (i >= 0) {
- return attribs->Parameters[i].StateIndexes[0];
- }
- }
- }
- return -1;
-}
-
-
-static void
-bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index,
- const GLchar *name)
-{
- struct gl_shader_program *shProg;
- const GLint size = -1; /* unknown size */
- GLint i;
- GLenum datatype = GL_FLOAT_VEC4;
-
- shProg = _mesa_lookup_shader_program_err(ctx, program,
- "glBindAttribLocation");
- if (!shProg) {
- return;
- }
-
- if (!name)
- return;
-
- if (strncmp(name, "gl_", 3) == 0) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glBindAttribLocation(illegal name)");
- return;
- }
-
- if (index >= ctx->Const.VertexProgram.MaxAttribs) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glBindAttribLocation(index)");
- return;
- }
-
- /* this will replace the current value if it's already in the list */
- i = _mesa_add_attribute(shProg->Attributes, name, size, datatype, index);
- if (i < 0) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindAttribLocation");
- return;
- }
-
- /*
- * Note that this attribute binding won't go into effect until
- * glLinkProgram is called again.
- */
-}
-
-
static void
bind_frag_data_location(struct gl_context *ctx, GLuint program,
GLuint colorNumber, const GLchar *name)
@@ -557,38 +481,6 @@ detach_shader(struct gl_context *ctx, GLuint program, GLuint shader)
}
-static void
-get_active_attrib(struct gl_context *ctx, GLuint program, GLuint index,
- GLsizei maxLength, GLsizei *length, GLint *size,
- GLenum *type, GLchar *nameOut)
-{
- const struct gl_program_parameter_list *attribs = NULL;
- struct gl_shader_program *shProg;
-
- shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib");
- if (!shProg)
- return;
-
- if (shProg->VertexProgram)
- attribs = shProg->VertexProgram->Base.Attributes;
-
- if (!attribs || index >= attribs->NumParameters) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(index)");
- return;
- }
-
- _mesa_copy_string(nameOut, maxLength, length,
- attribs->Parameters[index].Name);
-
- if (size)
- *size = attribs->Parameters[index].Size
- / _mesa_sizeof_glsl_type(attribs->Parameters[index].DataType);
-
- if (type)
- *type = attribs->Parameters[index].DataType;
-}
-
-
/**
* Return list of shaders attached to shader program.
*/
@@ -646,7 +538,6 @@ get_handle(struct gl_context *ctx, GLenum pname)
static void
get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *params)
{
- const struct gl_program_parameter_list *attribs;
struct gl_shader_program *shProg
= _mesa_lookup_shader_program(ctx, program);
@@ -655,11 +546,6 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
return;
}
- if (shProg->VertexProgram)
- attribs = shProg->VertexProgram->Base.Attributes;
- else
- attribs = NULL;
-
switch (pname) {
case GL_DELETE_STATUS:
*params = shProg->DeletePending;
@@ -677,10 +563,10 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param
*params = shProg->NumShaders;
break;
case GL_ACTIVE_ATTRIBUTES:
- *params = attribs ? attribs->NumParameters : 0;
+ *params = _mesa_count_active_attribs(shProg);
break;
case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH:
- *params = _mesa_longest_parameter_name(attribs, PROGRAM_INPUT) + 1;
+ *params = _mesa_longest_attribute_name_length(shProg);
break;
case GL_ACTIVE_UNIFORMS:
*params = shProg->Uniforms ? shProg->Uniforms->NumUniforms : 0;
@@ -1161,15 +1047,6 @@ _mesa_AttachShader(GLuint program, GLuint shader)
}
-void GLAPIENTRY
-_mesa_BindAttribLocationARB(GLhandleARB program, GLuint index,
- const GLcharARB *name)
-{
- GET_CURRENT_CONTEXT(ctx);
- bind_attrib_location(ctx, program, index, name);
-}
-
-
/* GL_EXT_gpu_shader4, GL3 */
void GLAPIENTRY
_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber,
@@ -1289,16 +1166,6 @@ _mesa_DetachShader(GLuint program, GLuint shader)
void GLAPIENTRY
-_mesa_GetActiveAttribARB(GLhandleARB program, GLuint index,
- GLsizei maxLength, GLsizei * length, GLint * size,
- GLenum * type, GLcharARB * name)
-{
- GET_CURRENT_CONTEXT(ctx);
- get_active_attrib(ctx, program, index, maxLength, length, size, type, name);
-}
-
-
-void GLAPIENTRY
_mesa_GetAttachedObjectsARB(GLhandleARB container, GLsizei maxCount,
GLsizei * count, GLhandleARB * obj)
{
@@ -1316,14 +1183,6 @@ _mesa_GetAttachedShaders(GLuint program, GLsizei maxCount,
}
-GLint GLAPIENTRY
-_mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name)
-{
- GET_CURRENT_CONTEXT(ctx);
- return get_attrib_location(ctx, program, name);
-}
-
-
/* GL_EXT_gpu_shader4, GL3 */
GLint GLAPIENTRY
_mesa_GetFragDataLocation(GLuint program, const GLchar *name)
diff --git a/mesalib/src/mesa/main/shaderapi.h b/mesalib/src/mesa/main/shaderapi.h
index 15c7c7ae6..bec448dee 100644
--- a/mesalib/src/mesa/main/shaderapi.h
+++ b/mesalib/src/mesa/main/shaderapi.h
@@ -1,193 +1,197 @@
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 2004-2007 Brian Paul All Rights Reserved.
- * Copyright (C) 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, 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
- * THE AUTHORS 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 SHADERAPI_H
-#define SHADERAPI_H
-
-
-#include "glheader.h"
-
-struct _glapi_table;
-struct gl_context;
-struct gl_shader_program;
-
-extern GLint
-_mesa_sizeof_glsl_type(GLenum type);
-
-extern void
-_mesa_copy_string(GLchar *dst, GLsizei maxLength,
- GLsizei *length, const GLchar *src);
-
-extern void
-_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg);
-
-extern void
-_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
- const char *caller);
-
-extern void
-_mesa_init_shader_dispatch(struct _glapi_table *exec);
-
-
-
-extern void GLAPIENTRY
-_mesa_AttachObjectARB(GLhandleARB, GLhandleARB);
-
-extern void GLAPIENTRY
-_mesa_CompileShaderARB(GLhandleARB);
-
-extern GLhandleARB GLAPIENTRY
-_mesa_CreateProgramObjectARB(void);
-
-extern GLhandleARB GLAPIENTRY
-_mesa_CreateShaderObjectARB(GLenum type);
-
-extern void GLAPIENTRY
-_mesa_DeleteObjectARB(GLhandleARB obj);
-
-extern void GLAPIENTRY
-_mesa_DetachObjectARB(GLhandleARB, GLhandleARB);
-
-extern void GLAPIENTRY
-_mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
-
-extern GLint GLAPIENTRY
-_mesa_GetFragDataLocation(GLuint program, const GLchar *name);
-
-extern GLhandleARB GLAPIENTRY
-_mesa_GetHandleARB(GLenum pname);
-
-extern void GLAPIENTRY
-_mesa_GetInfoLogARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-
-extern void GLAPIENTRY
-_mesa_GetObjectParameterfvARB(GLhandleARB, GLenum, GLfloat *);
-
-extern void GLAPIENTRY
-_mesa_GetObjectParameterivARB(GLhandleARB, GLenum, GLint *);
-
-extern void GLAPIENTRY
-_mesa_GetShaderSourceARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsProgram(GLuint name);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsShader(GLuint name);
-
-extern void GLAPIENTRY
-_mesa_LinkProgramARB(GLhandleARB programObj);
-
-extern void GLAPIENTRY
-_mesa_ShaderSourceARB(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
-
-extern void GLAPIENTRY
-_mesa_UseProgramObjectARB(GLhandleARB);
-
-extern void GLAPIENTRY
-_mesa_ValidateProgramARB(GLhandleARB);
-
-
-extern void GLAPIENTRY
-_mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *);
-
-extern void GLAPIENTRY
-_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber,
- const GLchar *name);
-
-extern void GLAPIENTRY
-_mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *,
- GLenum *, GLcharARB *);
-
-extern GLint GLAPIENTRY
-_mesa_GetAttribLocationARB(GLhandleARB, const GLcharARB *);
-
-
-
-extern void GLAPIENTRY
-_mesa_AttachShader(GLuint program, GLuint shader);
-
-extern GLuint GLAPIENTRY
-_mesa_CreateShader(GLenum);
-
-extern GLuint GLAPIENTRY
-_mesa_CreateProgram(void);
-
-extern void GLAPIENTRY
-_mesa_DeleteProgram(GLuint program);
-
-extern void GLAPIENTRY
-_mesa_DeleteShader(GLuint shader);
-
-extern void GLAPIENTRY
-_mesa_DetachShader(GLuint program, GLuint shader);
-
-extern void GLAPIENTRY
-_mesa_GetAttachedShaders(GLuint program, GLsizei maxCount,
- GLsizei *count, GLuint *obj);
-
-extern void GLAPIENTRY
-_mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params);
-
-extern void GLAPIENTRY
-_mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize,
- GLsizei *length, GLchar *infoLog);
-
-extern void GLAPIENTRY
-_mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params);
-
-extern void GLAPIENTRY
-_mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize,
- GLsizei *length, GLchar *infoLog);
-
-
-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
-_mesa_ProgramParameteriARB(GLuint program, GLenum pname,
- GLint value);
-void
-_mesa_use_shader_program(struct gl_context *ctx, GLenum type,
- struct gl_shader_program *shProg);
-
-extern void GLAPIENTRY
-_mesa_UseShaderProgramEXT(GLenum type, GLuint program);
-
-extern void GLAPIENTRY
-_mesa_ActiveProgramEXT(GLuint program);
-
-extern GLuint GLAPIENTRY
-_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string);
-
-#endif /* SHADERAPI_H */
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 2004-2007 Brian Paul All Rights Reserved.
+ * Copyright (C) 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, 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
+ * THE AUTHORS 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 SHADERAPI_H
+#define SHADERAPI_H
+
+
+#include "glheader.h"
+
+struct _glapi_table;
+struct gl_context;
+struct gl_shader_program;
+
+extern GLint
+_mesa_sizeof_glsl_type(GLenum type);
+
+extern void
+_mesa_copy_string(GLchar *dst, GLsizei maxLength,
+ GLsizei *length, const GLchar *src);
+
+extern void
+_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg);
+
+extern void
+_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
+ const char *caller);
+
+extern void
+_mesa_init_shader_dispatch(struct _glapi_table *exec);
+
+extern unsigned
+_mesa_count_active_attribs(struct gl_shader_program *shProg);
+
+extern size_t
+_mesa_longest_attribute_name_length(struct gl_shader_program *shProg);
+
+extern void GLAPIENTRY
+_mesa_AttachObjectARB(GLhandleARB, GLhandleARB);
+
+extern void GLAPIENTRY
+_mesa_CompileShaderARB(GLhandleARB);
+
+extern GLhandleARB GLAPIENTRY
+_mesa_CreateProgramObjectARB(void);
+
+extern GLhandleARB GLAPIENTRY
+_mesa_CreateShaderObjectARB(GLenum type);
+
+extern void GLAPIENTRY
+_mesa_DeleteObjectARB(GLhandleARB obj);
+
+extern void GLAPIENTRY
+_mesa_DetachObjectARB(GLhandleARB, GLhandleARB);
+
+extern void GLAPIENTRY
+_mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
+
+extern GLint GLAPIENTRY
+_mesa_GetFragDataLocation(GLuint program, const GLchar *name);
+
+extern GLhandleARB GLAPIENTRY
+_mesa_GetHandleARB(GLenum pname);
+
+extern void GLAPIENTRY
+_mesa_GetInfoLogARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+
+extern void GLAPIENTRY
+_mesa_GetObjectParameterfvARB(GLhandleARB, GLenum, GLfloat *);
+
+extern void GLAPIENTRY
+_mesa_GetObjectParameterivARB(GLhandleARB, GLenum, GLint *);
+
+extern void GLAPIENTRY
+_mesa_GetShaderSourceARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsProgram(GLuint name);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsShader(GLuint name);
+
+extern void GLAPIENTRY
+_mesa_LinkProgramARB(GLhandleARB programObj);
+
+extern void GLAPIENTRY
+_mesa_ShaderSourceARB(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
+
+extern void GLAPIENTRY
+_mesa_UseProgramObjectARB(GLhandleARB);
+
+extern void GLAPIENTRY
+_mesa_ValidateProgramARB(GLhandleARB);
+
+
+extern void GLAPIENTRY
+_mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *);
+
+extern void GLAPIENTRY
+_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber,
+ const GLchar *name);
+
+extern void GLAPIENTRY
+_mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *,
+ GLenum *, GLcharARB *);
+
+extern GLint GLAPIENTRY
+_mesa_GetAttribLocationARB(GLhandleARB, const GLcharARB *);
+
+
+
+extern void GLAPIENTRY
+_mesa_AttachShader(GLuint program, GLuint shader);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateShader(GLenum);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateProgram(void);
+
+extern void GLAPIENTRY
+_mesa_DeleteProgram(GLuint program);
+
+extern void GLAPIENTRY
+_mesa_DeleteShader(GLuint shader);
+
+extern void GLAPIENTRY
+_mesa_DetachShader(GLuint program, GLuint shader);
+
+extern void GLAPIENTRY
+_mesa_GetAttachedShaders(GLuint program, GLsizei maxCount,
+ GLsizei *count, GLuint *obj);
+
+extern void GLAPIENTRY
+_mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize,
+ GLsizei *length, GLchar *infoLog);
+
+extern void GLAPIENTRY
+_mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize,
+ GLsizei *length, GLchar *infoLog);
+
+
+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
+_mesa_ProgramParameteriARB(GLuint program, GLenum pname,
+ GLint value);
+void
+_mesa_use_shader_program(struct gl_context *ctx, GLenum type,
+ struct gl_shader_program *shProg);
+
+extern void GLAPIENTRY
+_mesa_UseShaderProgramEXT(GLenum type, GLuint program);
+
+extern void GLAPIENTRY
+_mesa_ActiveProgramEXT(GLuint program);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string);
+
+#endif /* SHADERAPI_H */
diff --git a/mesalib/src/mesa/main/shaderobj.c b/mesalib/src/mesa/main/shaderobj.c
index f128648f4..1eba75697 100644
--- a/mesalib/src/mesa/main/shaderobj.c
+++ b/mesalib/src/mesa/main/shaderobj.c
@@ -38,6 +38,7 @@
#include "program/program.h"
#include "program/prog_parameter.h"
#include "program/prog_uniform.h"
+#include "program/hash_table.h"
#include "ralloc.h"
/**********************************************************************/
@@ -238,7 +239,9 @@ _mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog
{
prog->Type = GL_SHADER_PROGRAM_MESA;
prog->RefCount = 1;
- prog->Attributes = _mesa_new_parameter_list();
+
+ prog->AttributeBindings = string_to_uint_map_ctor();
+
#if FEATURE_ARB_geometry_shader4
prog->Geom.VerticesOut = 0;
prog->Geom.InputType = GL_TRIANGLES;
@@ -307,9 +310,9 @@ _mesa_free_shader_program_data(struct gl_context *ctx,
_mesa_clear_shader_program_data(ctx, shProg);
- if (shProg->Attributes) {
- _mesa_free_parameter_list(shProg->Attributes);
- shProg->Attributes = NULL;
+ if (shProg->AttributeBindings) {
+ string_to_uint_map_dtor(shProg->AttributeBindings);
+ shProg->AttributeBindings = NULL;
}
/* detach shaders */
diff --git a/mesalib/src/mesa/main/shaderobj.h b/mesalib/src/mesa/main/shaderobj.h
index 881856a02..941841d43 100644
--- a/mesalib/src/mesa/main/shaderobj.h
+++ b/mesalib/src/mesa/main/shaderobj.h
@@ -1,137 +1,137 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 2004-2007 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 SHADEROBJ_H
-#define SHADEROBJ_H
-
-
-#include "main/compiler.h"
-#include "main/glheader.h"
-#include "main/mtypes.h"
-#include "program/ir_to_mesa.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-/**
- * Internal functions
- */
-
-extern void
-_mesa_init_shader_state(struct gl_context * ctx);
-
-extern void
-_mesa_free_shader_state(struct gl_context *ctx);
-
-
-extern void
-_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr,
- struct gl_shader *sh);
-
-extern struct gl_shader *
-_mesa_lookup_shader(struct gl_context *ctx, GLuint name);
-
-extern struct gl_shader *
-_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller);
-
-
-
-extern void
-_mesa_reference_shader_program(struct gl_context *ctx,
- struct gl_shader_program **ptr,
- struct gl_shader_program *shProg);
-extern void
-_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader);
-
-extern struct gl_shader *
-_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type);
-
-extern void
-_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog);
-
-extern struct gl_shader_program *
-_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name);
-
-extern struct gl_shader_program *
-_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name,
- const char *caller);
-
-extern void
-_mesa_clear_shader_program_data(struct gl_context *ctx,
- struct gl_shader_program *shProg);
-
-extern void
-_mesa_free_shader_program_data(struct gl_context *ctx,
- struct gl_shader_program *shProg);
-
-
-
-extern void
-_mesa_init_shader_object_functions(struct dd_function_table *driver);
-
-extern void
-_mesa_init_shader_state(struct gl_context *ctx);
-
-extern void
-_mesa_free_shader_state(struct gl_context *ctx);
-
-
-static INLINE gl_shader_type
-_mesa_shader_type_to_index(GLenum v)
-{
- switch (v) {
- case GL_VERTEX_SHADER:
- return MESA_SHADER_VERTEX;
- case GL_FRAGMENT_SHADER:
- return MESA_SHADER_FRAGMENT;
- case GL_GEOMETRY_SHADER:
- return MESA_SHADER_GEOMETRY;
- default:
- ASSERT(0 && "bad value in _mesa_shader_type_to_index()");
- return MESA_SHADER_TYPES;
- }
-}
-
-
-static INLINE GLenum
-_mesa_shader_index_to_type(GLuint i)
-{
- static const GLenum enums[MESA_SHADER_TYPES] = {
- GL_VERTEX_SHADER,
- GL_FRAGMENT_SHADER,
- GL_GEOMETRY_SHADER ,
- };
- if (i >= MESA_SHADER_TYPES)
- return 0;
- else
- return enums[i];
-}
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SHADEROBJ_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 2004-2007 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 SHADEROBJ_H
+#define SHADEROBJ_H
+
+
+#include "main/compiler.h"
+#include "main/glheader.h"
+#include "main/mtypes.h"
+#include "program/ir_to_mesa.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/**
+ * Internal functions
+ */
+
+extern void
+_mesa_init_shader_state(struct gl_context * ctx);
+
+extern void
+_mesa_free_shader_state(struct gl_context *ctx);
+
+
+extern void
+_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr,
+ struct gl_shader *sh);
+
+extern struct gl_shader *
+_mesa_lookup_shader(struct gl_context *ctx, GLuint name);
+
+extern struct gl_shader *
+_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller);
+
+
+
+extern void
+_mesa_reference_shader_program(struct gl_context *ctx,
+ struct gl_shader_program **ptr,
+ struct gl_shader_program *shProg);
+extern void
+_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader);
+
+extern struct gl_shader *
+_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type);
+
+extern void
+_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog);
+
+extern struct gl_shader_program *
+_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name);
+
+extern struct gl_shader_program *
+_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name,
+ const char *caller);
+
+extern void
+_mesa_clear_shader_program_data(struct gl_context *ctx,
+ struct gl_shader_program *shProg);
+
+extern void
+_mesa_free_shader_program_data(struct gl_context *ctx,
+ struct gl_shader_program *shProg);
+
+
+
+extern void
+_mesa_init_shader_object_functions(struct dd_function_table *driver);
+
+extern void
+_mesa_init_shader_state(struct gl_context *ctx);
+
+extern void
+_mesa_free_shader_state(struct gl_context *ctx);
+
+
+static inline gl_shader_type
+_mesa_shader_type_to_index(GLenum v)
+{
+ switch (v) {
+ case GL_VERTEX_SHADER:
+ return MESA_SHADER_VERTEX;
+ case GL_FRAGMENT_SHADER:
+ return MESA_SHADER_FRAGMENT;
+ case GL_GEOMETRY_SHADER:
+ return MESA_SHADER_GEOMETRY;
+ default:
+ ASSERT(0 && "bad value in _mesa_shader_type_to_index()");
+ return MESA_SHADER_TYPES;
+ }
+}
+
+
+static inline GLenum
+_mesa_shader_index_to_type(GLuint i)
+{
+ static const GLenum enums[MESA_SHADER_TYPES] = {
+ GL_VERTEX_SHADER,
+ GL_FRAGMENT_SHADER,
+ GL_GEOMETRY_SHADER ,
+ };
+ if (i >= MESA_SHADER_TYPES)
+ return 0;
+ else
+ return enums[i];
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SHADEROBJ_H */
diff --git a/mesalib/src/mesa/main/state.h b/mesalib/src/mesa/main/state.h
index 7feeb9007..2b5b3d514 100644
--- a/mesalib/src/mesa/main/state.h
+++ b/mesalib/src/mesa/main/state.h
@@ -49,7 +49,7 @@ _mesa_set_vp_override(struct gl_context *ctx, GLboolean flag);
/**
* Is the secondary color needed?
*/
-static INLINE GLboolean
+static inline GLboolean
_mesa_need_secondary_color(const struct gl_context *ctx)
{
if (ctx->Light.Enabled &&
diff --git a/mesalib/src/mesa/main/syncobj.h b/mesalib/src/mesa/main/syncobj.h
index e83ac8b0e..e2e92b0ac 100644
--- a/mesalib/src/mesa/main/syncobj.h
+++ b/mesalib/src/mesa/main/syncobj.h
@@ -1,119 +1,119 @@
-/*
- * Copyright © 2009 Intel Corporation
- *
- * 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.
- */
-
-/**
- * \file syncobj.h
- * Sync object management.
- *
- * \author Ian Romanick <ian.d.romanick@intel.com>
- */
-
-#ifndef SYNCOBJ_H
-#define SYNCOBJ_H
-
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct dd_function_table;
-struct gl_context;
-struct gl_sync_object;
-
-#if FEATURE_ARB_sync
-
-extern void GLAPIENTRY
-_mesa_init_sync_object_functions(struct dd_function_table *driver);
-
-extern void GLAPIENTRY
-_mesa_init_sync_dispatch(struct _glapi_table *disp);
-
-extern void GLAPIENTRY
-_mesa_init_sync(struct gl_context *);
-
-extern void GLAPIENTRY
-_mesa_free_sync_data(struct gl_context *);
-
-extern void GLAPIENTRY
-_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj);
-
-extern void GLAPIENTRY
-_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsSync(GLsync sync);
-
-extern void GLAPIENTRY
-_mesa_DeleteSync(GLsync sync);
-
-extern GLsync GLAPIENTRY
-_mesa_FenceSync(GLenum condition, GLbitfield flags);
-
-extern GLenum GLAPIENTRY
-_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
-
-extern void GLAPIENTRY
-_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
-
-extern void GLAPIENTRY
-_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
- GLint *values);
-
-#else /* FEATURE_ARB_sync */
-
-#include "main/compiler.h"
-
-static INLINE void
-_mesa_init_sync_object_functions(struct dd_function_table *driver)
-{
-}
-
-static INLINE void
-_mesa_init_sync_dispatch(struct _glapi_table *disp)
-{
-}
-
-static INLINE void
-_mesa_init_sync(struct gl_context *ctx)
-{
-}
-
-static INLINE void
-_mesa_free_sync_data(struct gl_context *ctx)
-{
-}
-
-static INLINE void
-_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- ASSERT_NO_FEATURE();
-}
-
-static INLINE void
-_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
-{
- ASSERT_NO_FEATURE();
-}
-
-#endif /* FEATURE_ARB_sync */
-
-#endif /* SYNCOBJ_H */
+/*
+ * Copyright © 2009 Intel Corporation
+ *
+ * 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.
+ */
+
+/**
+ * \file syncobj.h
+ * Sync object management.
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+
+#ifndef SYNCOBJ_H
+#define SYNCOBJ_H
+
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct dd_function_table;
+struct gl_context;
+struct gl_sync_object;
+
+#if FEATURE_ARB_sync
+
+extern void GLAPIENTRY
+_mesa_init_sync_object_functions(struct dd_function_table *driver);
+
+extern void GLAPIENTRY
+_mesa_init_sync_dispatch(struct _glapi_table *disp);
+
+extern void GLAPIENTRY
+_mesa_init_sync(struct gl_context *);
+
+extern void GLAPIENTRY
+_mesa_free_sync_data(struct gl_context *);
+
+extern void GLAPIENTRY
+_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj);
+
+extern void GLAPIENTRY
+_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsSync(GLsync sync);
+
+extern void GLAPIENTRY
+_mesa_DeleteSync(GLsync sync);
+
+extern GLsync GLAPIENTRY
+_mesa_FenceSync(GLenum condition, GLbitfield flags);
+
+extern GLenum GLAPIENTRY
+_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+extern void GLAPIENTRY
+_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout);
+
+extern void GLAPIENTRY
+_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
+ GLint *values);
+
+#else /* FEATURE_ARB_sync */
+
+#include "main/compiler.h"
+
+static inline void
+_mesa_init_sync_object_functions(struct dd_function_table *driver)
+{
+}
+
+static inline void
+_mesa_init_sync_dispatch(struct _glapi_table *disp)
+{
+}
+
+static inline void
+_mesa_init_sync(struct gl_context *ctx)
+{
+}
+
+static inline void
+_mesa_free_sync_data(struct gl_context *ctx)
+{
+}
+
+static inline void
+_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ ASSERT_NO_FEATURE();
+}
+
+static inline void
+_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj)
+{
+ ASSERT_NO_FEATURE();
+}
+
+#endif /* FEATURE_ARB_sync */
+
+#endif /* SYNCOBJ_H */
diff --git a/mesalib/src/mesa/main/texcompress_s3tc.c b/mesalib/src/mesa/main/texcompress_s3tc.c
index 42dc1ae2f..2cc6e5f4b 100644
--- a/mesalib/src/mesa/main/texcompress_s3tc.c
+++ b/mesalib/src/mesa/main/texcompress_s3tc.c
@@ -70,7 +70,7 @@
* linear RGB value in [0, 1].
* Implemented with a 256-entry lookup table.
*/
-static INLINE GLfloat
+static inline GLfloat
nonlinear_to_linear(GLubyte cs8)
{
static GLfloat table[256];
diff --git a/mesalib/src/mesa/main/texcompress_s3tc.h b/mesalib/src/mesa/main/texcompress_s3tc.h
index 709c35ae7..23793d167 100644
--- a/mesalib/src/mesa/main/texcompress_s3tc.h
+++ b/mesalib/src/mesa/main/texcompress_s3tc.h
@@ -100,7 +100,7 @@ _mesa_init_texture_s3tc(struct gl_context *ctx);
#define _mesa_fetch_texel_2d_f_srgba_dxt3 NULL
#define _mesa_fetch_texel_2d_f_srgba_dxt5 NULL
-static INLINE void
+static inline void
_mesa_init_texture_s3tc(struct gl_context *ctx)
{
}
diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c
index b763a689a..ccc3c49f5 100644
--- a/mesalib/src/mesa/main/texformat.c
+++ b/mesalib/src/mesa/main/texformat.c
@@ -609,35 +609,67 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
break;
case GL_RGBA8UI_EXT:
case GL_RGB8UI_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_UINT8);
+ break;
case GL_ALPHA8UI_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_UINT8);
+ break;
case GL_INTENSITY8UI_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_UINT8);
+ break;
case GL_LUMINANCE8UI_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_UINT8);
+ break;
case GL_LUMINANCE_ALPHA8UI_EXT:
- RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_UINT8);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_UINT8);
break;
case GL_RGBA32I_EXT:
case GL_RGB32I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32);
+ break;
case GL_ALPHA32I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT32);
+ break;
case GL_INTENSITY32I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT32);
+ break;
case GL_LUMINANCE32I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT32);
+ break;
case GL_LUMINANCE_ALPHA32I_EXT:
- RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT32);
break;
case GL_RGBA16I_EXT:
case GL_RGB16I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT16);
+ break;
case GL_ALPHA16I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT16);
+ break;
case GL_INTENSITY16I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT16);
+ break;
case GL_LUMINANCE16I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT16);
+ break;
case GL_LUMINANCE_ALPHA16I_EXT:
- RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT16);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT16);
break;
case GL_RGBA8I_EXT:
case GL_RGB8I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT8);
+ break;
case GL_ALPHA8I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT8);
+ break;
case GL_INTENSITY8I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT8);
+ break;
case GL_LUMINANCE8I_EXT:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT8);
+ break;
case GL_LUMINANCE_ALPHA8I_EXT:
- RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT8);
+ RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT8);
break;
}
}
@@ -703,6 +735,49 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat,
}
}
+ if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.EXT_texture_integer) {
+ switch (internalFormat) {
+ case GL_R8UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT8);
+ break;
+ case GL_RG8UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT8);
+ break;
+ case GL_R16UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT16);
+ break;
+ case GL_RG16UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT16);
+ break;
+ case GL_R32UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT32);
+ break;
+ case GL_RG32UI:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT32);
+ break;
+ case GL_R8I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT8);
+ break;
+ case GL_RG8I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT8);
+ break;
+ case GL_R16I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT16);
+ break;
+ case GL_RG16I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT16);
+ break;
+ case GL_R32I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT32);
+ break;
+ case GL_RG32I:
+ RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT32);
+ break;
+ default:
+ break;
+ }
+ }
+
/* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0).
*/
if (ctx->API != API_OPENGL) {
diff --git a/mesalib/src/mesa/main/texgen.h b/mesalib/src/mesa/main/texgen.h
index 9160af002..60a9522af 100644
--- a/mesalib/src/mesa/main/texgen.h
+++ b/mesalib/src/mesa/main/texgen.h
@@ -1,85 +1,85 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 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 TEXGEN_H
-#define TEXGEN_H
-
-
-#include "compiler.h"
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-
-
-#if FEATURE_texgen
-
-extern void GLAPIENTRY
-_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
-
-extern void GLAPIENTRY
-_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param );
-
-extern void GLAPIENTRY
-_mesa_TexGeni( GLenum coord, GLenum pname, GLint param );
-
-extern void GLAPIENTRY
-_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 */
-
-static void
-_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
-{
-}
-
-static void INLINE
-_mesa_TexGeni( GLenum coord, GLenum pname, GLint param )
-{
-}
-
-static INLINE void
-_mesa_init_texgen_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_texgen */
-
-
-#endif /* TEXGEN_H */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 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 TEXGEN_H
+#define TEXGEN_H
+
+
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+
+
+#if FEATURE_texgen
+
+extern void GLAPIENTRY
+_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params );
+
+extern void GLAPIENTRY
+_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param );
+
+extern void GLAPIENTRY
+_mesa_TexGeni( GLenum coord, GLenum pname, GLint param );
+
+extern void GLAPIENTRY
+_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 */
+
+static void
+_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
+{
+}
+
+static void inline
+_mesa_TexGeni( GLenum coord, GLenum pname, GLint param )
+{
+}
+
+static inline void
+_mesa_init_texgen_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_texgen */
+
+
+#endif /* TEXGEN_H */
diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c
index d2f25b9f8..f9118860b 100644
--- a/mesalib/src/mesa/main/texgetimage.c
+++ b/mesalib/src/mesa/main/texgetimage.c
@@ -49,7 +49,7 @@
/**
* Can the given type represent negative values?
*/
-static INLINE GLboolean
+static inline GLboolean
type_with_negative_values(GLenum type)
{
switch (type) {
@@ -373,9 +373,9 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions,
static GLboolean
get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type,
GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
+ const GLenum target = texImage->TexObject->Target;
GLboolean memCopy = GL_FALSE;
/*
@@ -384,11 +384,11 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type,
* so we don't have to worry about those.
* XXX more format combinations could be supported here.
*/
- if ((texObj->Target == GL_TEXTURE_1D ||
- texObj->Target == GL_TEXTURE_2D ||
- texObj->Target == GL_TEXTURE_RECTANGLE ||
- (texObj->Target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
- texObj->Target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) {
+ if ((target == GL_TEXTURE_1D ||
+ target == GL_TEXTURE_2D ||
+ target == GL_TEXTURE_RECTANGLE ||
+ (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X &&
+ target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) {
if ((texImage->TexFormat == MESA_FORMAT_ARGB8888 ||
texImage->TexFormat == MESA_FORMAT_SARGB8) &&
format == GL_BGRA &&
@@ -471,14 +471,13 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type,
* unmap with ctx->Driver.UnmapTextureImage().
*/
void
-_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_get_teximage(struct gl_context *ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
GLuint dimensions;
- switch (target) {
+ switch (texImage->TexObject->Target) {
case GL_TEXTURE_1D:
dimensions = 1;
break;
@@ -511,7 +510,7 @@ _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
pixels = ADD_POINTERS(buf, pixels);
}
- if (get_tex_memcpy(ctx, format, type, pixels, texObj, texImage)) {
+ if (get_tex_memcpy(ctx, format, type, pixels, texImage)) {
/* all done */
}
else if (format == GL_DEPTH_COMPONENT) {
@@ -772,8 +771,7 @@ _mesa_GetnTexImageARB( GLenum target, GLint level, GLenum format,
_mesa_lock_texture(ctx, texObj);
{
- ctx->Driver.GetTexImage(ctx, target, level, format, type, pixels,
- texObj, texImage);
+ ctx->Driver.GetTexImage(ctx, format, type, pixels, texImage);
}
_mesa_unlock_texture(ctx, texObj);
}
diff --git a/mesalib/src/mesa/main/texgetimage.h b/mesalib/src/mesa/main/texgetimage.h
index 8612705ca..02b1cf459 100644
--- a/mesalib/src/mesa/main/texgetimage.h
+++ b/mesalib/src/mesa/main/texgetimage.h
@@ -34,9 +34,8 @@ struct gl_texture_image;
struct gl_texture_object;
extern void
-_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
+_mesa_get_teximage(struct gl_context *ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage);
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index daa71fd7b..8efe715fe 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -2253,7 +2253,7 @@ update_fbo_texture(struct gl_context *ctx, struct gl_texture_object *texObj,
* changed the texture base level image, regenerate the rest of the
* mipmap levels now.
*/
-static INLINE void
+static inline void
check_gen_mipmap(struct gl_context *ctx, GLenum target,
struct gl_texture_object *texObj, GLint level)
{
diff --git a/mesalib/src/mesa/main/teximage.h b/mesalib/src/mesa/main/teximage.h
index 8ef1d4560..6ce0fe92c 100644
--- a/mesalib/src/mesa/main/teximage.h
+++ b/mesalib/src/mesa/main/teximage.h
@@ -136,7 +136,7 @@ _mesa_get_texture_dimensions(GLenum target);
/**
* Lock a texture for updating. See also _mesa_lock_context_textures().
*/
-static INLINE void
+static inline void
_mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
_glthread_LOCK_MUTEX(ctx->Shared->TexMutex);
@@ -144,7 +144,7 @@ _mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
(void) texObj;
}
-static INLINE void
+static inline void
_mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj)
{
(void) texObj;
diff --git a/mesalib/src/mesa/main/texobj.h b/mesalib/src/mesa/main/texobj.h
index 1faae6f7e..9ca7a4c9e 100644
--- a/mesalib/src/mesa/main/texobj.h
+++ b/mesalib/src/mesa/main/texobj.h
@@ -68,7 +68,7 @@ extern void
_mesa_reference_texobj_(struct gl_texture_object **ptr,
struct gl_texture_object *tex);
-static INLINE void
+static inline void
_mesa_reference_texobj(struct gl_texture_object **ptr,
struct gl_texture_object *tex)
{
diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c
index f232cfc86..dc5ee33a2 100644
--- a/mesalib/src/mesa/main/texparam.c
+++ b/mesalib/src/mesa/main/texparam.c
@@ -180,7 +180,7 @@ set_swizzle_component(GLuint *swizzle, GLuint comp, GLuint swz)
* This is called just prior to changing any texture object state which
* will not effect texture completeness.
*/
-static INLINE void
+static inline void
flush(struct gl_context *ctx)
{
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
@@ -195,7 +195,7 @@ flush(struct gl_context *ctx)
* state flag and then mark the texture object as 'incomplete' so that any
* per-texture derived state gets recomputed.
*/
-static INLINE void
+static inline void
incomplete(struct gl_context *ctx, struct gl_texture_object *texObj)
{
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
diff --git a/mesalib/src/mesa/main/texstate.h b/mesalib/src/mesa/main/texstate.h
index 1258a0705..7dc6dc6a2 100644
--- a/mesalib/src/mesa/main/texstate.h
+++ b/mesalib/src/mesa/main/texstate.h
@@ -1,92 +1,92 @@
-/**
- * \file texstate.h
- * Texture state management.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 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 TEXSTATE_H
-#define TEXSTATE_H
-
-
-#include "compiler.h"
-#include "mtypes.h"
-
-
-/**
- * Return pointer to current texture unit.
- * This the texture unit set by glActiveTexture(), not glClientActiveTexture().
- */
-static INLINE struct gl_texture_unit *
-_mesa_get_current_tex_unit(struct gl_context *ctx)
-{
- ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->Texture.Unit));
- return &(ctx->Texture.Unit[ctx->Texture.CurrentUnit]);
-}
-
-
-extern void
-_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst );
-
-extern void
-_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit );
-
-
-
-/**
- * \name Called from API
- */
-/*@{*/
-
-extern void GLAPIENTRY
-_mesa_ActiveTextureARB( GLenum target );
-
-extern void GLAPIENTRY
-_mesa_ClientActiveTextureARB( GLenum target );
-
-/*@}*/
-
-
-/**
- * \name Initialization, state maintenance
- */
-/*@{*/
-
-extern void
-_mesa_update_texture( struct gl_context *ctx, GLuint new_state );
-
-extern GLboolean
-_mesa_init_texture( struct gl_context *ctx );
-
-extern void
-_mesa_free_texture_data( struct gl_context *ctx );
-
-extern void
-_mesa_update_default_objects_texture(struct gl_context *ctx);
-
-/*@}*/
-
-#endif
+/**
+ * \file texstate.h
+ * Texture state management.
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 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 TEXSTATE_H
+#define TEXSTATE_H
+
+
+#include "compiler.h"
+#include "mtypes.h"
+
+
+/**
+ * Return pointer to current texture unit.
+ * This the texture unit set by glActiveTexture(), not glClientActiveTexture().
+ */
+static inline struct gl_texture_unit *
+_mesa_get_current_tex_unit(struct gl_context *ctx)
+{
+ ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->Texture.Unit));
+ return &(ctx->Texture.Unit[ctx->Texture.CurrentUnit]);
+}
+
+
+extern void
+_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst );
+
+extern void
+_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit );
+
+
+
+/**
+ * \name Called from API
+ */
+/*@{*/
+
+extern void GLAPIENTRY
+_mesa_ActiveTextureARB( GLenum target );
+
+extern void GLAPIENTRY
+_mesa_ClientActiveTextureARB( GLenum target );
+
+/*@}*/
+
+
+/**
+ * \name Initialization, state maintenance
+ */
+/*@{*/
+
+extern void
+_mesa_update_texture( struct gl_context *ctx, GLuint new_state );
+
+extern GLboolean
+_mesa_init_texture( struct gl_context *ctx );
+
+extern void
+_mesa_free_texture_data( struct gl_context *ctx );
+
+extern void
+_mesa_update_default_objects_texture(struct gl_context *ctx);
+
+/*@}*/
+
+#endif
diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c
index cbed26cd4..d70cb8ac7 100644
--- a/mesalib/src/mesa/main/texstore.c
+++ b/mesalib/src/mesa/main/texstore.c
@@ -458,6 +458,7 @@ make_temp_uint_image(struct gl_context *ctx, GLuint dims,
textureBaseFormat == GL_RED ||
textureBaseFormat == GL_LUMINANCE_ALPHA ||
textureBaseFormat == GL_LUMINANCE ||
+ textureBaseFormat == GL_INTENSITY ||
textureBaseFormat == GL_ALPHA);
tempImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth
@@ -3636,7 +3637,14 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_INT8);
+ ASSERT(dstFormat == MESA_FORMAT_R_INT8 ||
+ dstFormat == MESA_FORMAT_RG_INT8 ||
+ dstFormat == MESA_FORMAT_RGB_INT8 ||
+ dstFormat == MESA_FORMAT_RGBA_INT8 ||
+ dstFormat == MESA_FORMAT_ALPHA_INT8 ||
+ dstFormat == MESA_FORMAT_INTENSITY_INT8 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_INT8 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT8);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -3701,7 +3709,14 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_INT16);
+ ASSERT(dstFormat == MESA_FORMAT_R_INT16 ||
+ dstFormat == MESA_FORMAT_RG_INT16 ||
+ dstFormat == MESA_FORMAT_RGB_INT16 ||
+ dstFormat == MESA_FORMAT_RGBA_INT16 ||
+ dstFormat == MESA_FORMAT_ALPHA_INT16 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_INT16 ||
+ dstFormat == MESA_FORMAT_INTENSITY_INT16 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT16);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -3766,7 +3781,14 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_INT32);
+ ASSERT(dstFormat == MESA_FORMAT_R_INT32 ||
+ dstFormat == MESA_FORMAT_RG_INT32 ||
+ dstFormat == MESA_FORMAT_RGB_INT32 ||
+ dstFormat == MESA_FORMAT_RGBA_INT32 ||
+ dstFormat == MESA_FORMAT_ALPHA_INT32 ||
+ dstFormat == MESA_FORMAT_INTENSITY_INT32 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_INT32 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT32);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -3831,7 +3853,14 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT8);
+ ASSERT(dstFormat == MESA_FORMAT_R_UINT8 ||
+ dstFormat == MESA_FORMAT_RG_UINT8 ||
+ dstFormat == MESA_FORMAT_RGB_UINT8 ||
+ dstFormat == MESA_FORMAT_RGBA_UINT8 ||
+ dstFormat == MESA_FORMAT_ALPHA_UINT8 ||
+ dstFormat == MESA_FORMAT_INTENSITY_UINT8 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_UINT8 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT8);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -3894,7 +3923,14 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT16);
+ ASSERT(dstFormat == MESA_FORMAT_R_UINT16 ||
+ dstFormat == MESA_FORMAT_RG_UINT16 ||
+ dstFormat == MESA_FORMAT_RGB_UINT16 ||
+ dstFormat == MESA_FORMAT_RGBA_UINT16 ||
+ dstFormat == MESA_FORMAT_ALPHA_UINT16 ||
+ dstFormat == MESA_FORMAT_INTENSITY_UINT16 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_UINT16 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT16);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -3957,7 +3993,14 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS)
const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
const GLint components = _mesa_components_in_format(baseFormat);
- ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT32);
+ ASSERT(dstFormat == MESA_FORMAT_R_UINT32 ||
+ dstFormat == MESA_FORMAT_RG_UINT32 ||
+ dstFormat == MESA_FORMAT_RGB_UINT32 ||
+ dstFormat == MESA_FORMAT_RGBA_UINT32 ||
+ dstFormat == MESA_FORMAT_ALPHA_UINT32 ||
+ dstFormat == MESA_FORMAT_INTENSITY_UINT32 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_UINT32 ||
+ dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT32);
ASSERT(baseInternalFormat == GL_RGBA ||
baseInternalFormat == GL_RGB ||
baseInternalFormat == GL_ALPHA ||
@@ -4307,145 +4350,6 @@ _mesa_texstore_z32f_x24s8(TEXSTORE_PARAMS)
return GL_TRUE;
}
-
-/**
- * Table mapping MESA_FORMAT_* to _mesa_texstore_*()
- * XXX this is somewhat temporary.
- */
-static const struct {
- gl_format Name;
- StoreTexImageFunc Store;
-}
-texstore_funcs[MESA_FORMAT_COUNT] =
-{
- { MESA_FORMAT_NONE, NULL },
- { MESA_FORMAT_RGBA8888, _mesa_texstore_rgba8888 },
- { MESA_FORMAT_RGBA8888_REV, _mesa_texstore_rgba8888 },
- { MESA_FORMAT_ARGB8888, _mesa_texstore_argb8888 },
- { MESA_FORMAT_ARGB8888_REV, _mesa_texstore_argb8888 },
- { MESA_FORMAT_XRGB8888, _mesa_texstore_argb8888 },
- { MESA_FORMAT_XRGB8888_REV, _mesa_texstore_argb8888 },
- { MESA_FORMAT_RGB888, _mesa_texstore_rgb888 },
- { MESA_FORMAT_BGR888, _mesa_texstore_bgr888 },
- { MESA_FORMAT_RGB565, _mesa_texstore_rgb565 },
- { MESA_FORMAT_RGB565_REV, _mesa_texstore_rgb565 },
- { MESA_FORMAT_ARGB4444, _mesa_texstore_argb4444 },
- { MESA_FORMAT_ARGB4444_REV, _mesa_texstore_argb4444 },
- { MESA_FORMAT_RGBA5551, _mesa_texstore_rgba5551 },
- { MESA_FORMAT_ARGB1555, _mesa_texstore_argb1555 },
- { MESA_FORMAT_ARGB1555_REV, _mesa_texstore_argb1555 },
- { MESA_FORMAT_AL44, _mesa_texstore_unorm44 },
- { MESA_FORMAT_AL88, _mesa_texstore_unorm88 },
- { MESA_FORMAT_AL88_REV, _mesa_texstore_unorm88 },
- { MESA_FORMAT_AL1616, _mesa_texstore_unorm1616 },
- { MESA_FORMAT_AL1616_REV, _mesa_texstore_unorm1616 },
- { MESA_FORMAT_RGB332, _mesa_texstore_rgb332 },
- { MESA_FORMAT_A8, _mesa_texstore_unorm8 },
- { MESA_FORMAT_A16, _mesa_texstore_unorm16 },
- { MESA_FORMAT_L8, _mesa_texstore_unorm8 },
- { MESA_FORMAT_L16, _mesa_texstore_unorm16 },
- { MESA_FORMAT_I8, _mesa_texstore_unorm8 },
- { MESA_FORMAT_I16, _mesa_texstore_unorm16 },
- { MESA_FORMAT_YCBCR, _mesa_texstore_ycbcr },
- { MESA_FORMAT_YCBCR_REV, _mesa_texstore_ycbcr },
- { MESA_FORMAT_R8, _mesa_texstore_unorm8 },
- { MESA_FORMAT_RG88, _mesa_texstore_unorm88 },
- { MESA_FORMAT_RG88_REV, _mesa_texstore_unorm88 },
- { MESA_FORMAT_R16, _mesa_texstore_unorm16 },
- { MESA_FORMAT_RG1616, _mesa_texstore_unorm1616 },
- { MESA_FORMAT_RG1616_REV, _mesa_texstore_unorm1616 },
- { MESA_FORMAT_ARGB2101010, _mesa_texstore_argb2101010 },
- { MESA_FORMAT_Z24_S8, _mesa_texstore_z24_s8 },
- { MESA_FORMAT_S8_Z24, _mesa_texstore_s8_z24 },
- { MESA_FORMAT_Z16, _mesa_texstore_z16 },
- { MESA_FORMAT_X8_Z24, _mesa_texstore_x8_z24 },
- { MESA_FORMAT_Z24_X8, _mesa_texstore_z24_x8 },
- { MESA_FORMAT_Z32, _mesa_texstore_z32 },
- { MESA_FORMAT_S8, _mesa_texstore_s8 },
- { MESA_FORMAT_SRGB8, _mesa_texstore_srgb8 },
- { MESA_FORMAT_SRGBA8, _mesa_texstore_srgba8 },
- { MESA_FORMAT_SARGB8, _mesa_texstore_sargb8 },
- { MESA_FORMAT_SL8, _mesa_texstore_sl8 },
- { MESA_FORMAT_SLA8, _mesa_texstore_sla8 },
- { MESA_FORMAT_SRGB_DXT1, _mesa_texstore_rgb_dxt1 },
- { MESA_FORMAT_SRGBA_DXT1, _mesa_texstore_rgba_dxt1 },
- { MESA_FORMAT_SRGBA_DXT3, _mesa_texstore_rgba_dxt3 },
- { MESA_FORMAT_SRGBA_DXT5, _mesa_texstore_rgba_dxt5 },
- { MESA_FORMAT_RGB_FXT1, _mesa_texstore_rgb_fxt1 },
- { MESA_FORMAT_RGBA_FXT1, _mesa_texstore_rgba_fxt1 },
- { MESA_FORMAT_RGB_DXT1, _mesa_texstore_rgb_dxt1 },
- { MESA_FORMAT_RGBA_DXT1, _mesa_texstore_rgba_dxt1 },
- { MESA_FORMAT_RGBA_DXT3, _mesa_texstore_rgba_dxt3 },
- { MESA_FORMAT_RGBA_DXT5, _mesa_texstore_rgba_dxt5 },
- { MESA_FORMAT_RGBA_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_RGBA_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_RGB_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_RGB_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_ALPHA_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_LUMINANCE_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_LUMINANCE_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_R_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_R_FLOAT16, _mesa_texstore_rgba_float16 },
- { MESA_FORMAT_RG_FLOAT32, _mesa_texstore_rgba_float32 },
- { MESA_FORMAT_RG_FLOAT16, _mesa_texstore_rgba_float16 },
-
- { MESA_FORMAT_RGBA_INT8, _mesa_texstore_rgba_int8 },
- { MESA_FORMAT_RGBA_INT16, _mesa_texstore_rgba_int16 },
- { MESA_FORMAT_RGBA_INT32, _mesa_texstore_rgba_int32 },
- { MESA_FORMAT_RGBA_UINT8, _mesa_texstore_rgba_uint8 },
- { MESA_FORMAT_RGBA_UINT16, _mesa_texstore_rgba_uint16 },
- { MESA_FORMAT_RGBA_UINT32, _mesa_texstore_rgba_uint32 },
-
- { MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 },
-
- { MESA_FORMAT_SIGNED_R8, _mesa_texstore_snorm8 },
- { MESA_FORMAT_SIGNED_RG88_REV, _mesa_texstore_snorm88 },
- { MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 },
-
- { MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 },
- { MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 },
-
- { MESA_FORMAT_SIGNED_R16, _mesa_texstore_snorm16 },
- { MESA_FORMAT_SIGNED_GR1616, _mesa_texstore_snorm1616 },
- { MESA_FORMAT_SIGNED_RGB_16, _mesa_texstore_signed_rgba_16 },
- { MESA_FORMAT_SIGNED_RGBA_16, _mesa_texstore_signed_rgba_16 },
- { MESA_FORMAT_RGBA_16, _mesa_texstore_rgba_16 },
-
- { MESA_FORMAT_RED_RGTC1, _mesa_texstore_red_rgtc1 },
- { MESA_FORMAT_SIGNED_RED_RGTC1, _mesa_texstore_signed_red_rgtc1 },
- { MESA_FORMAT_RG_RGTC2, _mesa_texstore_rg_rgtc2 },
- { MESA_FORMAT_SIGNED_RG_RGTC2, _mesa_texstore_signed_rg_rgtc2 },
-
- /* Re-use the R/RG texstore functions.
- * The code is generic enough to handle LATC too. */
- { MESA_FORMAT_L_LATC1, _mesa_texstore_red_rgtc1 },
- { MESA_FORMAT_SIGNED_L_LATC1, _mesa_texstore_signed_red_rgtc1 },
- { MESA_FORMAT_LA_LATC2, _mesa_texstore_rg_rgtc2 },
- { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 },
-
- { MESA_FORMAT_SIGNED_A8, _mesa_texstore_snorm8 },
- { MESA_FORMAT_SIGNED_L8, _mesa_texstore_snorm8 },
- { MESA_FORMAT_SIGNED_AL88, _mesa_texstore_snorm88 },
- { MESA_FORMAT_SIGNED_I8, _mesa_texstore_snorm8 },
-
- { MESA_FORMAT_SIGNED_A16, _mesa_texstore_snorm16 },
- { MESA_FORMAT_SIGNED_L16, _mesa_texstore_snorm16 },
- { MESA_FORMAT_SIGNED_AL1616, _mesa_texstore_snorm1616 },
- { MESA_FORMAT_SIGNED_I16, _mesa_texstore_snorm16 },
-
- { MESA_FORMAT_RGB9_E5_FLOAT, _mesa_texstore_rgb9_e5 },
- { MESA_FORMAT_R11_G11_B10_FLOAT, _mesa_texstore_r11_g11_b10f },
-
- { MESA_FORMAT_Z32_FLOAT, _mesa_texstore_z32 },
- { MESA_FORMAT_Z32_FLOAT_X24S8, _mesa_texstore_z32f_x24s8 },
-};
-
-
static GLboolean
_mesa_texstore_null(TEXSTORE_PARAMS)
{
@@ -4472,18 +4376,177 @@ _mesa_texstore_null(TEXSTORE_PARAMS)
static StoreTexImageFunc
_mesa_get_texstore_func(gl_format format)
{
-#ifdef DEBUG
- GLuint i;
- for (i = 0; i < MESA_FORMAT_COUNT; i++) {
- ASSERT(texstore_funcs[i].Name == i);
+ static StoreTexImageFunc table[MESA_FORMAT_COUNT];
+ static GLboolean initialized = GL_FALSE;
+
+ if (!initialized) {
+ table[MESA_FORMAT_NONE] = _mesa_texstore_null;
+
+ table[MESA_FORMAT_RGBA8888] = _mesa_texstore_rgba8888;
+ table[MESA_FORMAT_RGBA8888_REV] = _mesa_texstore_rgba8888;
+ table[MESA_FORMAT_ARGB8888] = _mesa_texstore_argb8888;
+ table[MESA_FORMAT_ARGB8888_REV] = _mesa_texstore_argb8888;
+ table[MESA_FORMAT_XRGB8888] = _mesa_texstore_argb8888;
+ table[MESA_FORMAT_XRGB8888_REV] = _mesa_texstore_argb8888;
+ table[MESA_FORMAT_RGB888] = _mesa_texstore_rgb888;
+ table[MESA_FORMAT_BGR888] = _mesa_texstore_bgr888;
+ table[MESA_FORMAT_RGB565] = _mesa_texstore_rgb565;
+ table[MESA_FORMAT_RGB565_REV] = _mesa_texstore_rgb565;
+ table[MESA_FORMAT_ARGB4444] = _mesa_texstore_argb4444;
+ table[MESA_FORMAT_ARGB4444_REV] = _mesa_texstore_argb4444;
+ table[MESA_FORMAT_RGBA5551] = _mesa_texstore_rgba5551;
+ table[MESA_FORMAT_ARGB1555] = _mesa_texstore_argb1555;
+ table[MESA_FORMAT_ARGB1555_REV] = _mesa_texstore_argb1555;
+ table[MESA_FORMAT_AL44] = _mesa_texstore_unorm44;
+ table[MESA_FORMAT_AL88] = _mesa_texstore_unorm88;
+ table[MESA_FORMAT_AL88_REV] = _mesa_texstore_unorm88;
+ table[MESA_FORMAT_AL1616] = _mesa_texstore_unorm1616;
+ table[MESA_FORMAT_AL1616_REV] = _mesa_texstore_unorm1616;
+ table[MESA_FORMAT_RGB332] = _mesa_texstore_rgb332;
+ table[MESA_FORMAT_A8] = _mesa_texstore_unorm8;
+ table[MESA_FORMAT_A16] = _mesa_texstore_unorm16;
+ table[MESA_FORMAT_L8] = _mesa_texstore_unorm8;
+ table[MESA_FORMAT_L16] = _mesa_texstore_unorm16;
+ table[MESA_FORMAT_I8] = _mesa_texstore_unorm8;
+ table[MESA_FORMAT_I16] = _mesa_texstore_unorm16;
+ table[MESA_FORMAT_YCBCR] = _mesa_texstore_ycbcr;
+ table[MESA_FORMAT_YCBCR_REV] = _mesa_texstore_ycbcr;
+ table[MESA_FORMAT_R8] = _mesa_texstore_unorm8;
+ table[MESA_FORMAT_RG88] = _mesa_texstore_unorm88;
+ table[MESA_FORMAT_RG88_REV] = _mesa_texstore_unorm88;
+ table[MESA_FORMAT_R16] = _mesa_texstore_unorm16;
+ table[MESA_FORMAT_RG1616] = _mesa_texstore_unorm1616;
+ table[MESA_FORMAT_RG1616_REV] = _mesa_texstore_unorm1616;
+ table[MESA_FORMAT_ARGB2101010] = _mesa_texstore_argb2101010;
+ table[MESA_FORMAT_Z24_S8] = _mesa_texstore_z24_s8;
+ table[MESA_FORMAT_S8_Z24] = _mesa_texstore_s8_z24;
+ table[MESA_FORMAT_Z16] = _mesa_texstore_z16;
+ table[MESA_FORMAT_X8_Z24] = _mesa_texstore_x8_z24;
+ table[MESA_FORMAT_Z24_X8] = _mesa_texstore_z24_x8;
+ table[MESA_FORMAT_Z32] = _mesa_texstore_z32;
+ table[MESA_FORMAT_S8] = _mesa_texstore_s8;
+ table[MESA_FORMAT_SRGB8] = _mesa_texstore_srgb8;
+ table[MESA_FORMAT_SRGBA8] = _mesa_texstore_srgba8;
+ table[MESA_FORMAT_SARGB8] = _mesa_texstore_sargb8;
+ table[MESA_FORMAT_SL8] = _mesa_texstore_sl8;
+ table[MESA_FORMAT_SLA8] = _mesa_texstore_sla8;
+ table[MESA_FORMAT_SRGB_DXT1] = _mesa_texstore_rgb_dxt1;
+ table[MESA_FORMAT_SRGBA_DXT1] = _mesa_texstore_rgba_dxt1;
+ table[MESA_FORMAT_SRGBA_DXT3] = _mesa_texstore_rgba_dxt3;
+ table[MESA_FORMAT_SRGBA_DXT5] = _mesa_texstore_rgba_dxt5;
+ table[MESA_FORMAT_RGB_FXT1] = _mesa_texstore_rgb_fxt1;
+ table[MESA_FORMAT_RGBA_FXT1] = _mesa_texstore_rgba_fxt1;
+ table[MESA_FORMAT_RGB_DXT1] = _mesa_texstore_rgb_dxt1;
+ table[MESA_FORMAT_RGBA_DXT1] = _mesa_texstore_rgba_dxt1;
+ table[MESA_FORMAT_RGBA_DXT3] = _mesa_texstore_rgba_dxt3;
+ table[MESA_FORMAT_RGBA_DXT5] = _mesa_texstore_rgba_dxt5;
+ table[MESA_FORMAT_RGBA_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_RGBA_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_RGB_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_RGB_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_LUMINANCE_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_INTENSITY_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_R_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_R_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_RG_FLOAT32] = _mesa_texstore_rgba_float32;
+ table[MESA_FORMAT_RG_FLOAT16] = _mesa_texstore_rgba_float16;
+ table[MESA_FORMAT_DUDV8] = _mesa_texstore_dudv8;
+ table[MESA_FORMAT_SIGNED_R8] = _mesa_texstore_snorm8;
+ table[MESA_FORMAT_SIGNED_RG88_REV] = _mesa_texstore_snorm88;
+ table[MESA_FORMAT_SIGNED_RGBX8888] = _mesa_texstore_signed_rgbx8888;
+ table[MESA_FORMAT_SIGNED_RGBA8888] = _mesa_texstore_signed_rgba8888;
+ table[MESA_FORMAT_SIGNED_RGBA8888_REV] = _mesa_texstore_signed_rgba8888;
+ table[MESA_FORMAT_SIGNED_R16] = _mesa_texstore_snorm16;
+ table[MESA_FORMAT_SIGNED_GR1616] = _mesa_texstore_snorm1616;
+ table[MESA_FORMAT_SIGNED_RGB_16] = _mesa_texstore_signed_rgba_16;
+ table[MESA_FORMAT_SIGNED_RGBA_16] = _mesa_texstore_signed_rgba_16;
+ table[MESA_FORMAT_RGBA_16] = _mesa_texstore_rgba_16;
+ table[MESA_FORMAT_RED_RGTC1] = _mesa_texstore_red_rgtc1;
+ table[MESA_FORMAT_SIGNED_RED_RGTC1] = _mesa_texstore_signed_red_rgtc1;
+ table[MESA_FORMAT_RG_RGTC2] = _mesa_texstore_rg_rgtc2;
+ table[MESA_FORMAT_SIGNED_RG_RGTC2] = _mesa_texstore_signed_rg_rgtc2;
+ table[MESA_FORMAT_L_LATC1] = _mesa_texstore_red_rgtc1;
+ table[MESA_FORMAT_SIGNED_L_LATC1] = _mesa_texstore_signed_red_rgtc1;
+ table[MESA_FORMAT_LA_LATC2] = _mesa_texstore_rg_rgtc2;
+ table[MESA_FORMAT_SIGNED_LA_LATC2] = _mesa_texstore_signed_rg_rgtc2;
+ table[MESA_FORMAT_SIGNED_A8] = _mesa_texstore_snorm8;
+ table[MESA_FORMAT_SIGNED_L8] = _mesa_texstore_snorm8;
+ table[MESA_FORMAT_SIGNED_AL88] = _mesa_texstore_snorm88;
+ table[MESA_FORMAT_SIGNED_I8] = _mesa_texstore_snorm8;
+ table[MESA_FORMAT_SIGNED_A16] = _mesa_texstore_snorm16;
+ table[MESA_FORMAT_SIGNED_L16] = _mesa_texstore_snorm16;
+ table[MESA_FORMAT_SIGNED_AL1616] = _mesa_texstore_snorm1616;
+ table[MESA_FORMAT_SIGNED_I16] = _mesa_texstore_snorm16;
+ table[MESA_FORMAT_RGB9_E5_FLOAT] = _mesa_texstore_rgb9_e5;
+ table[MESA_FORMAT_R11_G11_B10_FLOAT] = _mesa_texstore_r11_g11_b10f;
+ table[MESA_FORMAT_Z32_FLOAT] = _mesa_texstore_z32;
+ table[MESA_FORMAT_Z32_FLOAT_X24S8] = _mesa_texstore_z32f_x24s8;
+
+ table[MESA_FORMAT_ALPHA_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_ALPHA_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_ALPHA_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_ALPHA_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_ALPHA_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_ALPHA_INT32] = _mesa_texstore_rgba_int32;
+
+ table[MESA_FORMAT_INTENSITY_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_INTENSITY_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_INTENSITY_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_INTENSITY_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_INTENSITY_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_INTENSITY_INT32] = _mesa_texstore_rgba_int32;
+
+ table[MESA_FORMAT_LUMINANCE_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_LUMINANCE_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_LUMINANCE_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_LUMINANCE_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_LUMINANCE_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_LUMINANCE_INT32] = _mesa_texstore_rgba_int32;
+
+ table[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_LUMINANCE_ALPHA_INT32] = _mesa_texstore_rgba_int32;
+
+ table[MESA_FORMAT_R_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_RG_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_RGB_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_RGBA_INT8] = _mesa_texstore_rgba_int8;
+ table[MESA_FORMAT_R_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_RG_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_RGB_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_RGBA_INT16] = _mesa_texstore_rgba_int16;
+ table[MESA_FORMAT_R_INT32] = _mesa_texstore_rgba_int32;
+ table[MESA_FORMAT_RG_INT32] = _mesa_texstore_rgba_int32;
+ table[MESA_FORMAT_RGB_INT32] = _mesa_texstore_rgba_int32;
+ table[MESA_FORMAT_RGBA_INT32] = _mesa_texstore_rgba_int32;
+
+ table[MESA_FORMAT_R_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_RG_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_RGB_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_RGBA_UINT8] = _mesa_texstore_rgba_uint8;
+ table[MESA_FORMAT_R_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_RG_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_RGB_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_RGBA_UINT16] = _mesa_texstore_rgba_uint16;
+ table[MESA_FORMAT_R_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_RG_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_RGB_UINT32] = _mesa_texstore_rgba_uint32;
+ table[MESA_FORMAT_RGBA_UINT32] = _mesa_texstore_rgba_uint32;
+
+ initialized = GL_TRUE;
}
-#endif
- ASSERT(texstore_funcs[format].Name == format);
- if (texstore_funcs[format].Store)
- return texstore_funcs[format].Store;
- else
- return _mesa_texstore_null;
+ ASSERT(table[format]);
+ return table[format];
}
@@ -4626,22 +4689,53 @@ _mesa_store_teximage2d(struct gl_context *ctx, GLenum target, GLint level,
return;
}
- /* Map dest texture buffer (write to whole region) */
- ctx->Driver.MapTextureImage(ctx, texImage, 0,
- 0, 0, width, height,
- rwMode,
- &dstMap, &dstRowStride);
- assert(dstMap);
- success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
- texImage->TexFormat,
- dstMap,
- 0, 0, 0, /* dstX/Y/Zoffset */
- dstRowStride,
- &zeroImageOffset,
- width, height, 1,
- format, type, pixels, packing);
-
- ctx->Driver.UnmapTextureImage(ctx, texImage, 0);
+ if (target == GL_TEXTURE_1D_ARRAY) {
+ const GLint srcStride =
+ _mesa_image_row_stride(packing, width, format, type);
+ int y;
+
+ success = GL_TRUE;
+
+ for (y = 0; y < height; y++) {
+ /* Map dest texture buffer (write to whole region) */
+ ctx->Driver.MapTextureImage(ctx, texImage, y,
+ 0, 0, width, 1,
+ rwMode,
+ &dstMap, &dstRowStride);
+ assert(dstMap);
+ success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
+ texImage->TexFormat,
+ dstMap,
+ 0, 0, 0, /* dstX/Y/Zoffset */
+ dstRowStride,
+ &zeroImageOffset,
+ width, 1, 1,
+ format, type, pixels, packing);
+ ctx->Driver.UnmapTextureImage(ctx, texImage, y);
+
+ if (!success)
+ break;
+
+ pixels = (const GLubyte *) pixels + srcStride;
+ }
+ } else {
+ /* Map dest texture buffer (write to whole region) */
+ ctx->Driver.MapTextureImage(ctx, texImage, 0,
+ 0, 0, width, height,
+ rwMode,
+ &dstMap, &dstRowStride);
+ assert(dstMap);
+ success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
+ texImage->TexFormat,
+ dstMap,
+ 0, 0, 0, /* dstX/Y/Zoffset */
+ dstRowStride,
+ &zeroImageOffset,
+ width, height, 1,
+ format, type, pixels, packing);
+
+ ctx->Driver.UnmapTextureImage(ctx, texImage, 0);
+ }
if (!success)
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
@@ -4691,6 +4785,11 @@ _mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level,
return;
}
+ if (target == GL_TEXTURE_1D_ARRAY) {
+ depth = height;
+ height = 1;
+ }
+
sliceMaps = (GLubyte **) malloc(depth * sizeof(GLubyte *));
dstImageOffsets = (GLuint *) malloc(depth * sizeof(GLuint));
diff --git a/mesalib/src/mesa/main/transformfeedback.h b/mesalib/src/mesa/main/transformfeedback.h
index add8d22d6..9447effa9 100644
--- a/mesalib/src/mesa/main/transformfeedback.h
+++ b/mesalib/src/mesa/main/transformfeedback.h
@@ -1,137 +1,137 @@
-/*
- * Mesa 3-D graphics library
- *
- * Copyright (C) 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, 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
- * THE AUTHORS 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 TRANSFORM_FEEDBACK_H
-#define TRANSFORM_FEEDBACK_H
-
-#include "compiler.h"
-#include "glheader.h"
-#include "mfeatures.h"
-
-struct _glapi_table;
-struct dd_function_table;
-struct gl_context;
-
-extern void
-_mesa_init_transform_feedback(struct gl_context *ctx);
-
-extern void
-_mesa_free_transform_feedback(struct gl_context *ctx);
-
-#if FEATURE_EXT_transform_feedback
-
-extern GLboolean
-_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode);
-
-extern GLboolean
-_mesa_validate_transform_feedback_buffers(struct gl_context *ctx);
-
-
-extern void
-_mesa_init_transform_feedback_functions(struct dd_function_table *driver);
-
-extern void
-_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp);
-
-
-/*** GL_EXT_transform_feedback ***/
-
-extern void GLAPIENTRY
-_mesa_BeginTransformFeedback(GLenum mode);
-
-extern void GLAPIENTRY
-_mesa_EndTransformFeedback(void);
-
-extern void GLAPIENTRY
-_mesa_BindBufferRange(GLenum target, GLuint index,
- GLuint buffer, GLintptr offset, GLsizeiptr size);
-
-extern void GLAPIENTRY
-_mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer);
-
-extern void GLAPIENTRY
-_mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer,
- GLintptr offset);
-
-extern void GLAPIENTRY
-_mesa_TransformFeedbackVaryings(GLuint program, GLsizei count,
- const GLchar **varyings, GLenum bufferMode);
-
-extern void GLAPIENTRY
-_mesa_GetTransformFeedbackVarying(GLuint program, GLuint index,
- GLsizei bufSize, GLsizei *length,
- GLsizei *size, GLenum *type, GLchar *name);
-
-
-
-/*** GL_ARB_transform_feedback2 ***/
-
-extern void GLAPIENTRY
-_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names);
-
-extern GLboolean GLAPIENTRY
-_mesa_IsTransformFeedback(GLuint name);
-
-extern void GLAPIENTRY
-_mesa_BindTransformFeedback(GLenum target, GLuint name);
-
-extern void GLAPIENTRY
-_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names);
-
-extern void GLAPIENTRY
-_mesa_PauseTransformFeedback(void);
-
-extern void GLAPIENTRY
-_mesa_ResumeTransformFeedback(void);
-
-extern void GLAPIENTRY
-_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
-
-#else /* FEATURE_EXT_transform_feedback */
-
-static INLINE GLboolean
-_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode)
-{
- return GL_TRUE;
-}
-
-static INLINE GLboolean
-_mesa_validate_transform_feedback_buffers(struct gl_context *ctx)
-{
- return GL_TRUE;
-}
-
-static INLINE void
-_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
-{
-}
-
-static INLINE void
-_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
-{
-}
-
-#endif /* FEATURE_EXT_transform_feedback */
-
-#endif /* TRANSFORM_FEEDBACK_H */
+/*
+ * Mesa 3-D graphics library
+ *
+ * Copyright (C) 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, 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
+ * THE AUTHORS 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 TRANSFORM_FEEDBACK_H
+#define TRANSFORM_FEEDBACK_H
+
+#include "compiler.h"
+#include "glheader.h"
+#include "mfeatures.h"
+
+struct _glapi_table;
+struct dd_function_table;
+struct gl_context;
+
+extern void
+_mesa_init_transform_feedback(struct gl_context *ctx);
+
+extern void
+_mesa_free_transform_feedback(struct gl_context *ctx);
+
+#if FEATURE_EXT_transform_feedback
+
+extern GLboolean
+_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode);
+
+extern GLboolean
+_mesa_validate_transform_feedback_buffers(struct gl_context *ctx);
+
+
+extern void
+_mesa_init_transform_feedback_functions(struct dd_function_table *driver);
+
+extern void
+_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp);
+
+
+/*** GL_EXT_transform_feedback ***/
+
+extern void GLAPIENTRY
+_mesa_BeginTransformFeedback(GLenum mode);
+
+extern void GLAPIENTRY
+_mesa_EndTransformFeedback(void);
+
+extern void GLAPIENTRY
+_mesa_BindBufferRange(GLenum target, GLuint index,
+ GLuint buffer, GLintptr offset, GLsizeiptr size);
+
+extern void GLAPIENTRY
+_mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer);
+
+extern void GLAPIENTRY
+_mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer,
+ GLintptr offset);
+
+extern void GLAPIENTRY
+_mesa_TransformFeedbackVaryings(GLuint program, GLsizei count,
+ const GLchar **varyings, GLenum bufferMode);
+
+extern void GLAPIENTRY
+_mesa_GetTransformFeedbackVarying(GLuint program, GLuint index,
+ GLsizei bufSize, GLsizei *length,
+ GLsizei *size, GLenum *type, GLchar *name);
+
+
+
+/*** GL_ARB_transform_feedback2 ***/
+
+extern void GLAPIENTRY
+_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsTransformFeedback(GLuint name);
+
+extern void GLAPIENTRY
+_mesa_BindTransformFeedback(GLenum target, GLuint name);
+
+extern void GLAPIENTRY
+_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names);
+
+extern void GLAPIENTRY
+_mesa_PauseTransformFeedback(void);
+
+extern void GLAPIENTRY
+_mesa_ResumeTransformFeedback(void);
+
+extern void GLAPIENTRY
+_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
+
+#else /* FEATURE_EXT_transform_feedback */
+
+static inline GLboolean
+_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode)
+{
+ return GL_TRUE;
+}
+
+static inline GLboolean
+_mesa_validate_transform_feedback_buffers(struct gl_context *ctx)
+{
+ return GL_TRUE;
+}
+
+static inline void
+_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
+{
+}
+
+static inline void
+_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_EXT_transform_feedback */
+
+#endif /* TRANSFORM_FEEDBACK_H */
diff --git a/mesalib/src/mesa/main/varray.h b/mesalib/src/mesa/main/varray.h
index 1c423200f..6fcc0a336 100644
--- a/mesalib/src/mesa/main/varray.h
+++ b/mesalib/src/mesa/main/varray.h
@@ -41,7 +41,7 @@ struct gl_context;
* The array->_MaxElement field will be updated.
* Later in glDrawArrays/Elements/etc we can do some bounds checking.
*/
-static INLINE void
+static inline void
_mesa_update_array_max_element(struct gl_client_array *array)
{
assert(array->Enabled);
diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c
index ff9b09e29..fbe211182 100644
--- a/mesalib/src/mesa/main/version.c
+++ b/mesalib/src/mesa/main/version.c
@@ -104,7 +104,6 @@ compute_version(struct gl_context *ctx)
ctx->Extensions.ARB_occlusion_query &&
ctx->Extensions.EXT_shadow_funcs);
const GLboolean ver_2_0 = (ver_1_5 &&
- ctx->Extensions.ARB_draw_buffers &&
ctx->Extensions.ARB_point_sprite &&
ctx->Extensions.ARB_shader_objects &&
ctx->Extensions.ARB_vertex_shader &&
diff --git a/mesalib/src/mesa/main/vtxfmt.h b/mesalib/src/mesa/main/vtxfmt.h
index d403669c2..aac656879 100644
--- a/mesalib/src/mesa/main/vtxfmt.h
+++ b/mesalib/src/mesa/main/vtxfmt.h
@@ -1,59 +1,59 @@
-/**
- * \file vtxfmt.h
- *
- * \author Keith Whitwell <keith@tungstengraphics.com>
- * \author Gareth Hughes
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2004 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 _VTXFMT_H_
-#define _VTXFMT_H_
-
-#include "compiler.h"
-#include "mfeatures.h"
-#include "mtypes.h"
-
-#if FEATURE_beginend
-
-extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt );
-extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt );
-
-#else /* FEATURE_beginend */
-
-static INLINE void
-_mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
-{
-}
-
-static INLINE void
-_mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
-{
-}
-
-#endif /* FEATURE_beginend */
-
-#endif /* _VTXFMT_H_ */
+/**
+ * \file vtxfmt.h
+ *
+ * \author Keith Whitwell <keith@tungstengraphics.com>
+ * \author Gareth Hughes
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.1
+ *
+ * Copyright (C) 1999-2004 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 _VTXFMT_H_
+#define _VTXFMT_H_
+
+#include "compiler.h"
+#include "mfeatures.h"
+#include "mtypes.h"
+
+#if FEATURE_beginend
+
+extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt );
+extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt );
+
+#else /* FEATURE_beginend */
+
+static inline void
+_mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
+{
+}
+
+static inline void
+_mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt )
+{
+}
+
+#endif /* FEATURE_beginend */
+
+#endif /* _VTXFMT_H_ */
diff --git a/mesalib/src/mesa/program/hash_table.c b/mesalib/src/mesa/program/hash_table.c
index 877a9e2ff..dc8563a33 100644
--- a/mesalib/src/mesa/program/hash_table.c
+++ b/mesalib/src/mesa/program/hash_table.c
@@ -108,8 +108,8 @@ hash_table_clear(struct hash_table *ht)
}
-void *
-hash_table_find(struct hash_table *ht, const void *key)
+static struct hash_node *
+get_node(struct hash_table *ht, const void *key)
{
const unsigned hash_value = (*ht->hash)(key);
const unsigned bucket = hash_value % ht->num_buckets;
@@ -119,13 +119,20 @@ hash_table_find(struct hash_table *ht, const void *key)
struct hash_node *hn = (struct hash_node *) node;
if ((*ht->compare)(hn->key, key) == 0) {
- return hn->data;
+ return hn;
}
}
return NULL;
}
+void *
+hash_table_find(struct hash_table *ht, const void *key)
+{
+ struct hash_node *hn = get_node(ht, key);
+
+ return (hn == NULL) ? NULL : hn->data;
+}
void
hash_table_insert(struct hash_table *ht, void *data, const void *key)
@@ -143,21 +150,39 @@ hash_table_insert(struct hash_table *ht, void *data, const void *key)
}
void
-hash_table_remove(struct hash_table *ht, const void *key)
+hash_table_replace(struct hash_table *ht, void *data, const void *key)
{
const unsigned hash_value = (*ht->hash)(key);
const unsigned bucket = hash_value % ht->num_buckets;
struct node *node;
+ struct hash_node *hn;
foreach(node, & ht->buckets[bucket]) {
- struct hash_node *hn = (struct hash_node *) node;
+ hn = (struct hash_node *) node;
if ((*ht->compare)(hn->key, key) == 0) {
- remove_from_list(node);
- free(node);
+ hn->data = data;
return;
}
}
+
+ hn = calloc(1, sizeof(*hn));
+
+ hn->data = data;
+ hn->key = key;
+
+ insert_at_head(& ht->buckets[bucket], & hn->link);
+}
+
+void
+hash_table_remove(struct hash_table *ht, const void *key)
+{
+ struct node *node = (struct node *) get_node(ht, key);
+ if (node != NULL) {
+ remove_from_list(node);
+ free(node);
+ return;
+ }
}
void
diff --git a/mesalib/src/mesa/program/hash_table.h b/mesalib/src/mesa/program/hash_table.h
index e715bb1cc..bfe221b24 100644
--- a/mesalib/src/mesa/program/hash_table.h
+++ b/mesalib/src/mesa/program/hash_table.h
@@ -31,7 +31,13 @@
#ifndef HASH_TABLE_H
#define HASH_TABLE_H
+#include <string.h>
+#include <stdint.h>
+#include <limits.h>
+#include <assert.h>
+
struct hash_table;
+struct string_to_uint_map;
typedef unsigned (*hash_func_t)(const void *key);
typedef int (*hash_compare_func_t)(const void *key1, const void *key2);
@@ -88,11 +94,31 @@ extern void *hash_table_find(struct hash_table *ht, const void *key);
/**
* Add an element to a hash table
+ *
+ * \warning
+ * If \c key is already in the hash table, it will be added again. Future
+ * calls to \c hash_table_find and \c hash_table_remove will return or remove,
+ * repsectively, the most recently added instance of \c key.
+ *
+ * \sa hash_table_replace
*/
extern void hash_table_insert(struct hash_table *ht, void *data,
const void *key);
/**
+ * Add an element to a hash table with replacement
+ *
+ * \warning
+ * If \c key is already in the hash table, \c data will \b replace the most
+ * recently inserted \c data (see the warning in \c hash_table_insert) for
+ * that key.
+ *
+ * \sa hash_table_insert
+ */
+extern void hash_table_replace(struct hash_table *ht, void *data,
+ const void *key);
+
+/**
* Remove a specific element from a hash table.
*/
extern void hash_table_remove(struct hash_table *ht, const void *key);
@@ -151,7 +177,78 @@ hash_table_call_foreach(struct hash_table *ht,
void *closure),
void *closure);
+struct string_to_uint_map *
+string_to_uint_map_ctor();
+
+void
+string_to_uint_map_dtor(struct string_to_uint_map *);
+
+
#ifdef __cplusplus
}
-#endif
+
+/**
+ * Map from a string (name) to an unsigned integer value
+ *
+ * \note
+ * Because of the way this class interacts with the \c hash_table
+ * implementation, values of \c UINT_MAX cannot be stored in the map.
+ */
+struct string_to_uint_map {
+public:
+ string_to_uint_map()
+ {
+ this->ht = hash_table_ctor(0, hash_table_string_hash,
+ hash_table_string_compare);
+ }
+
+ ~string_to_uint_map()
+ {
+ hash_table_dtor(this->ht);
+ }
+
+ /**
+ * Get the value associated with a particular key
+ *
+ * \return
+ * If \c key is found in the map, \c true is returned. Otherwise \c false
+ * is returned.
+ *
+ * \note
+ * If \c key is not found in the table, \c value is not modified.
+ */
+ bool get(unsigned &value, const char *key)
+ {
+ const intptr_t v =
+ (intptr_t) hash_table_find(this->ht, (const void *) key);
+
+ if (v == 0)
+ return false;
+
+ value = (unsigned)(v - 1);
+ return true;
+ }
+
+ void put(unsigned value, const char *key)
+ {
+ /* The low-level hash table structure returns NULL if key is not in the
+ * hash table. However, users of this map might want to store zero as a
+ * valid value in the table. Bias the value by +1 so that a
+ * user-specified zero is stored as 1. This enables ::get to tell the
+ * difference between a user-specified zero (returned as 1 by
+ * hash_table_find) and the key not in the table (returned as 0 by
+ * hash_table_find).
+ *
+ * The net effect is that we can't store UINT_MAX in the table. This is
+ * because UINT_MAX+1 = 0.
+ */
+ assert(value != UINT_MAX);
+ hash_table_replace(ht, (void *) (intptr_t) (value + 1), key);
+ }
+
+private:
+ struct hash_table *ht;
+};
+
+#endif /* __cplusplus */
#endif /* HASH_TABLE_H */
diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp
index c5b71b3f0..2e1b8fba3 100644
--- a/mesalib/src/mesa/program/ir_to_mesa.cpp
+++ b/mesalib/src/mesa/program/ir_to_mesa.cpp
@@ -1261,8 +1261,11 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
break;
case ir_binop_div:
assert(!"not reached: should be handled by ir_div_to_mul_rcp");
+ break;
case ir_binop_mod:
- assert(!"ir_binop_mod should have been converted to b * fract(a/b)");
+ /* Floating point should be lowered by MOD_TO_FRACT in the compiler. */
+ assert(ir->type->is_integer());
+ emit(ir, OPCODE_MUL, result_dst, op[0], op[1]);
break;
case ir_binop_less:
@@ -1556,14 +1559,6 @@ ir_to_mesa_visitor::visit(ir_dereference_variable *ir)
entry = new(mem_ctx) variable_storage(var,
PROGRAM_INPUT,
var->location);
- if (this->prog->Target == GL_VERTEX_PROGRAM_ARB &&
- var->location >= VERT_ATTRIB_GENERIC0) {
- _mesa_add_attribute(this->prog->Attributes,
- var->name,
- _mesa_sizeof_glsl_type(var->type->gl_type),
- var->type->gl_type,
- var->location - VERT_ATTRIB_GENERIC0);
- }
break;
case ir_var_out:
assert(var->location != -1);
@@ -3045,8 +3040,6 @@ get_mesa_program(struct gl_context *ctx,
if (!prog)
return NULL;
prog->Parameters = _mesa_new_parameter_list();
- prog->Varying = _mesa_new_parameter_list();
- prog->Attributes = _mesa_new_parameter_list();
v.ctx = ctx;
v.prog = prog;
v.shader_program = shader_program;
@@ -3434,7 +3427,6 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
}
}
- prog->Varying = _mesa_new_parameter_list();
_mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
_mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
_mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
diff --git a/mesalib/src/mesa/program/prog_execute.c b/mesalib/src/mesa/program/prog_execute.c
index 77f842a16..848c2fec1 100644
--- a/mesalib/src/mesa/program/prog_execute.c
+++ b/mesalib/src/mesa/program/prog_execute.c
@@ -84,7 +84,7 @@ static const GLfloat ZeroVec[4] = { 0.0F, 0.0F, 0.0F, 0.0F };
* Return TRUE for +0 and other positive values, FALSE otherwise.
* Used for RCC opcode.
*/
-static INLINE GLboolean
+static inline GLboolean
positive(float x)
{
fi_type fi;
@@ -100,7 +100,7 @@ positive(float x)
* Return a pointer to the 4-element float vector specified by the given
* source register.
*/
-static INLINE const GLfloat *
+static inline const GLfloat *
get_src_register_pointer(const struct prog_src_register *source,
const struct gl_program_machine *machine)
{
@@ -176,7 +176,7 @@ get_src_register_pointer(const struct prog_src_register *source,
* Return a pointer to the 4-element float vector specified by the given
* destination register.
*/
-static INLINE GLfloat *
+static inline GLfloat *
get_dst_register_pointer(const struct prog_dst_register *dest,
struct gl_program_machine *machine)
{
@@ -383,7 +383,7 @@ fetch_vector1ui(const struct prog_src_register *source,
/**
* Fetch texel from texture. Use partial derivatives when possible.
*/
-static INLINE void
+static inline void
fetch_texel(struct gl_context *ctx,
const struct gl_program_machine *machine,
const struct prog_instruction *inst,
@@ -413,7 +413,7 @@ fetch_texel(struct gl_context *ctx,
/**
* Test value against zero and return GT, LT, EQ or UN if NaN.
*/
-static INLINE GLuint
+static inline GLuint
generate_cc(float value)
{
if (value != value)
@@ -430,7 +430,7 @@ generate_cc(float value)
* Test if the ccMaskRule is satisfied by the given condition code.
* Used to mask destination writes according to the current condition code.
*/
-static INLINE GLboolean
+static inline GLboolean
test_cc(GLuint condCode, GLuint ccMaskRule)
{
switch (ccMaskRule) {
@@ -451,7 +451,7 @@ test_cc(GLuint condCode, GLuint ccMaskRule)
* Evaluate the 4 condition codes against a predicate and return GL_TRUE
* or GL_FALSE to indicate result.
*/
-static INLINE GLboolean
+static inline GLboolean
eval_condition(const struct gl_program_machine *machine,
const struct prog_instruction *inst)
{
diff --git a/mesalib/src/mesa/program/prog_parameter.c b/mesalib/src/mesa/program/prog_parameter.c
index 49b3ffbdd..2018fa520 100644
--- a/mesalib/src/mesa/program/prog_parameter.c
+++ b/mesalib/src/mesa/program/prog_parameter.c
@@ -640,28 +640,6 @@ _mesa_combine_parameter_lists(const struct gl_program_parameter_list *listA,
}
-
-/**
- * Find longest name of all uniform parameters in list.
- */
-GLuint
-_mesa_longest_parameter_name(const struct gl_program_parameter_list *list,
- gl_register_file type)
-{
- GLuint i, maxLen = 0;
- if (!list)
- return 0;
- for (i = 0; i < list->NumParameters; i++) {
- if (list->Parameters[i].Type == type) {
- GLuint len = strlen(list->Parameters[i].Name);
- if (len > maxLen)
- maxLen = len;
- }
- }
- return maxLen;
-}
-
-
/**
* Count the number of parameters in the last that match the given type.
*/
diff --git a/mesalib/src/mesa/program/prog_parameter.h b/mesalib/src/mesa/program/prog_parameter.h
index 4c2773a62..a6793d0d8 100644
--- a/mesalib/src/mesa/program/prog_parameter.h
+++ b/mesalib/src/mesa/program/prog_parameter.h
@@ -114,7 +114,7 @@ extern struct gl_program_parameter_list *
_mesa_combine_parameter_lists(const struct gl_program_parameter_list *a,
const struct gl_program_parameter_list *b);
-static INLINE GLuint
+static inline GLuint
_mesa_num_parameters(const struct gl_program_parameter_list *list)
{
return list ? list->NumParameters : 0;
@@ -174,10 +174,6 @@ _mesa_lookup_parameter_constant(const struct gl_program_parameter_list *list,
GLint *posOut, GLuint *swizzleOut);
extern GLuint
-_mesa_longest_parameter_name(const struct gl_program_parameter_list *list,
- gl_register_file type);
-
-extern GLuint
_mesa_num_parameters_of_type(const struct gl_program_parameter_list *list,
gl_register_file type);
diff --git a/mesalib/src/mesa/program/prog_statevars.c b/mesalib/src/mesa/program/prog_statevars.c
index 6aa2409e8..f34a6d360 100644
--- a/mesalib/src/mesa/program/prog_statevars.c
+++ b/mesalib/src/mesa/program/prog_statevars.c
@@ -664,10 +664,13 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
{
switch (state[0]) {
case STATE_MATERIAL:
+ case STATE_LIGHTPROD:
+ case STATE_LIGHTMODEL_SCENECOLOR:
+ /* these can be effected by glColor when colormaterial mode is used */
+ return _NEW_LIGHT | _NEW_CURRENT_ATTRIB;
+
case STATE_LIGHT:
case STATE_LIGHTMODEL_AMBIENT:
- case STATE_LIGHTMODEL_SCENECOLOR:
- case STATE_LIGHTPROD:
return _NEW_LIGHT;
case STATE_TEXGEN:
diff --git a/mesalib/src/mesa/program/program.c b/mesalib/src/mesa/program/program.c
index ecff2344a..4d6c60b9d 100644
--- a/mesalib/src/mesa/program/program.c
+++ b/mesalib/src/mesa/program/program.c
@@ -394,12 +394,6 @@ _mesa_delete_program(struct gl_context *ctx, struct gl_program *prog)
if (prog->Parameters) {
_mesa_free_parameter_list(prog->Parameters);
}
- if (prog->Varying) {
- _mesa_free_parameter_list(prog->Varying);
- }
- if (prog->Attributes) {
- _mesa_free_parameter_list(prog->Attributes);
- }
free(prog);
}
@@ -522,10 +516,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog)
if (prog->Parameters)
clone->Parameters = _mesa_clone_parameter_list(prog->Parameters);
memcpy(clone->LocalParams, prog->LocalParams, sizeof(clone->LocalParams));
- if (prog->Varying)
- clone->Varying = _mesa_clone_parameter_list(prog->Varying);
- if (prog->Attributes)
- clone->Attributes = _mesa_clone_parameter_list(prog->Attributes);
memcpy(clone->LocalParams, prog->LocalParams, sizeof(clone->LocalParams));
clone->IndirectRegisterFiles = prog->IndirectRegisterFiles;
clone->NumInstructions = prog->NumInstructions;
diff --git a/mesalib/src/mesa/program/program.h b/mesalib/src/mesa/program/program.h
index 0f32a6af7..9cd1780b8 100644
--- a/mesalib/src/mesa/program/program.h
+++ b/mesalib/src/mesa/program/program.h
@@ -93,7 +93,7 @@ _mesa_reference_program_(struct gl_context *ctx,
struct gl_program **ptr,
struct gl_program *prog);
-static INLINE void
+static inline void
_mesa_reference_program(struct gl_context *ctx,
struct gl_program **ptr,
struct gl_program *prog)
@@ -102,7 +102,7 @@ _mesa_reference_program(struct gl_context *ctx,
_mesa_reference_program_(ctx, ptr, prog);
}
-static INLINE void
+static inline void
_mesa_reference_vertprog(struct gl_context *ctx,
struct gl_vertex_program **ptr,
struct gl_vertex_program *prog)
@@ -111,7 +111,7 @@ _mesa_reference_vertprog(struct gl_context *ctx,
(struct gl_program *) prog);
}
-static INLINE void
+static inline void
_mesa_reference_fragprog(struct gl_context *ctx,
struct gl_fragment_program **ptr,
struct gl_fragment_program *prog)
@@ -120,7 +120,7 @@ _mesa_reference_fragprog(struct gl_context *ctx,
(struct gl_program *) prog);
}
-static INLINE void
+static inline void
_mesa_reference_geomprog(struct gl_context *ctx,
struct gl_geometry_program **ptr,
struct gl_geometry_program *prog)
@@ -132,21 +132,21 @@ _mesa_reference_geomprog(struct gl_context *ctx,
extern struct gl_program *
_mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog);
-static INLINE struct gl_vertex_program *
+static inline struct gl_vertex_program *
_mesa_clone_vertex_program(struct gl_context *ctx,
const struct gl_vertex_program *prog)
{
return (struct gl_vertex_program *) _mesa_clone_program(ctx, &prog->Base);
}
-static INLINE struct gl_geometry_program *
+static inline struct gl_geometry_program *
_mesa_clone_geometry_program(struct gl_context *ctx,
const struct gl_geometry_program *prog)
{
return (struct gl_geometry_program *) _mesa_clone_program(ctx, &prog->Base);
}
-static INLINE struct gl_fragment_program *
+static inline struct gl_fragment_program *
_mesa_clone_fragment_program(struct gl_context *ctx,
const struct gl_fragment_program *prog)
{
@@ -185,7 +185,7 @@ _mesa_postprocess_program(struct gl_context *ctx, struct gl_program *prog);
/* keep these in the same order as TGSI_PROCESSOR_* */
-static INLINE GLuint
+static inline GLuint
_mesa_program_target_to_index(GLenum v)
{
switch(v)
@@ -202,7 +202,7 @@ _mesa_program_target_to_index(GLenum v)
}
}
-static INLINE GLenum
+static inline GLenum
_mesa_program_index_to_target(GLuint i)
{
GLenum enums[MESA_SHADER_TYPES] = {
diff --git a/mesalib/src/mesa/program/sampler.cpp b/mesalib/src/mesa/program/sampler.cpp
index e8d34c670..3b459d59c 100644
--- a/mesalib/src/mesa/program/sampler.cpp
+++ b/mesalib/src/mesa/program/sampler.cpp
@@ -26,6 +26,7 @@
#include "ir.h"
#include "glsl_types.h"
#include "ir_visitor.h"
+#include "../glsl/program.h"
extern "C" {
#include "main/compiler.h"
@@ -33,18 +34,6 @@ extern "C" {
#include "program/prog_parameter.h"
}
-static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3);
-
-static void fail_link(struct gl_shader_program *prog, const char *fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
- ralloc_vasprintf_append(&prog->InfoLog, fmt, args);
- va_end(args);
-
- prog->LinkStatus = GL_FALSE;
-}
-
class get_sampler_name : public ir_hierarchical_visitor
{
public:
@@ -125,8 +114,8 @@ _mesa_get_sampler_uniform_value(class ir_dereference *sampler,
getname.name);
if (index < 0) {
- fail_link(shader_program,
- "failed to find sampler named %s.\n", getname.name);
+ linker_error(shader_program,
+ "failed to find sampler named %s.\n", getname.name);
return 0;
}
diff --git a/mesalib/src/mesa/program/string_to_uint_map.cpp b/mesalib/src/mesa/program/string_to_uint_map.cpp
new file mode 100644
index 000000000..cfa73abe0
--- /dev/null
+++ b/mesalib/src/mesa/program/string_to_uint_map.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright © 2011 Intel Corporation
+ *
+ * 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.
+ */
+
+/**
+ * \file string_to_uint_map.cpp
+ * \brief Dumb wrapprs so that C code can create and destroy maps.
+ *
+ * \author Ian Romanick <ian.d.romanick@intel.com>
+ */
+#include "hash_table.h"
+
+extern "C" struct string_to_uint_map *
+string_to_uint_map_ctor()
+{
+ return new string_to_uint_map;
+}
+
+extern "C" void
+string_to_uint_map_dtor(struct string_to_uint_map *map)
+{
+ delete map;
+}
diff --git a/mesalib/src/mesa/sources.mak b/mesalib/src/mesa/sources.mak
index da5d90ec4..f29213ec0 100644
--- a/mesalib/src/mesa/sources.mak
+++ b/mesalib/src/mesa/sources.mak
@@ -104,7 +104,8 @@ MAIN_SOURCES = \
$(MAIN_ES_SOURCES)
MAIN_CXX_SOURCES = \
- main/ff_fragment_shader.cpp
+ main/ff_fragment_shader.cpp \
+ main/shader_query.cpp
MATH_SOURCES = \
math/m_debug_clip.c \
@@ -266,7 +267,8 @@ PROGRAM_SOURCES = \
SHADER_CXX_SOURCES = \
program/ir_to_mesa.cpp \
- program/sampler.cpp
+ program/sampler.cpp \
+ program/string_to_uint_map.cpp
ASM_C_SOURCES = \
x86/common_x86.c \
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c
index 260df09f5..76bf78bbf 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texture.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c
@@ -460,6 +460,91 @@ guess_and_alloc_texture(struct st_context *st,
/**
+ * Called via ctx->Driver.AllocTextureImageBuffer().
+ * If the texture object/buffer already has space for the indicated image,
+ * we're done. Otherwise, allocate memory for the new texture image.
+ * XXX This function and st_TexImage() have some duplicated code. That
+ * can be cleaned up in the future.
+ */
+static GLboolean
+st_AllocTextureImageBuffer(struct gl_context *ctx,
+ struct gl_texture_image *texImage,
+ gl_format format, GLsizei width,
+ GLsizei height, GLsizei depth)
+{
+ struct st_context *st = st_context(ctx);
+ struct st_texture_image *stImage = st_texture_image(texImage);
+ struct st_texture_object *stObj = st_texture_object(texImage->TexObject);
+ const GLuint level = texImage->Level;
+
+ DBG("%s\n", __FUNCTION__);
+
+ assert(width > 0);
+ assert(height > 0);
+ assert(depth > 0);
+ assert(!texImage->Data);
+ assert(!stImage->pt); /* xxx this might be wrong */
+
+ /* Look if the parent texture object has space for this image */
+ if (stObj->pt &&
+ level <= stObj->pt->last_level &&
+ st_texture_match_image(stObj->pt, texImage)) {
+ /* this image will fit in the existing texture object's memory */
+ pipe_resource_reference(&stImage->pt, stObj->pt);
+ return GL_TRUE;
+ }
+
+ /* The parent texture object does not have space for this image */
+
+ pipe_resource_reference(&stObj->pt, NULL);
+ pipe_sampler_view_reference(&stObj->sampler_view, NULL);
+
+ if (!guess_and_alloc_texture(st, stObj, stImage)) {
+ /* Probably out of memory.
+ * Try flushing any pending rendering, then retry.
+ */
+ st_finish(st);
+ if (!guess_and_alloc_texture(st, stObj, stImage)) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
+ return GL_FALSE;
+ }
+ }
+
+ if (stObj->pt &&
+ st_texture_match_image(stObj->pt, texImage)) {
+ /* The image will live in the object's mipmap memory */
+ pipe_resource_reference(&stImage->pt, stObj->pt);
+ assert(stImage->pt);
+ return GL_TRUE;
+ }
+ else {
+ /* Create a new, temporary texture/resource/buffer to hold this
+ * one texture image.
+ */
+ enum pipe_format format =
+ st_mesa_format_to_pipe_format(texImage->TexFormat);
+ GLuint bindings = default_bindings(st, format);
+ GLuint ptWidth, ptHeight, ptDepth, ptLayers;
+
+ st_gl_texture_dims_to_pipe_dims(stObj->base.Target,
+ width, height, depth,
+ &ptWidth, &ptHeight, &ptDepth, &ptLayers);
+
+ stImage->pt = st_texture_create(st,
+ gl_target_to_pipe(stObj->base.Target),
+ format,
+ 0, /* lastLevel */
+ ptWidth,
+ ptHeight,
+ ptDepth,
+ ptLayers,
+ bindings);
+ return stImage->pt != NULL;
+ }
+}
+
+
+/**
* Adjust pixel unpack params and image dimensions to strip off the
* texture border.
* Gallium doesn't support texture borders. They've seldem been used
@@ -815,15 +900,14 @@ st_CompressedTexImage2D(struct gl_context *ctx, GLenum target, GLint level,
* a textured quad. Store the results in the user's buffer.
*/
static void
-decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
+decompress_with_blit(struct gl_context * ctx,
GLenum format, GLenum type, GLvoid *pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
struct st_texture_image *stImage = st_texture_image(texImage);
- struct st_texture_object *stObj = st_texture_object(texObj);
+ struct st_texture_object *stObj = st_texture_object(texImage->TexObject);
struct pipe_sampler_view *src_view =
st_get_texture_sampler_view(stObj, pipe);
const GLuint width = texImage->Width;
@@ -848,7 +932,7 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
}
/* Choose the source mipmap level */
- src_view->u.tex.first_level = src_view->u.tex.last_level = level;
+ src_view->u.tex.first_level = src_view->u.tex.last_level = texImage->Level;
/* blit/render/decompress */
util_blit_pixels_tex(st->blit,
@@ -925,9 +1009,8 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level,
* Called via ctx->Driver.GetTexImage()
*/
static void
-st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
+st_GetTexImage(struct gl_context * ctx,
GLenum format, GLenum type, GLvoid * pixels,
- struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
struct st_texture_image *stImage = st_texture_image(texImage);
@@ -938,12 +1021,10 @@ st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level,
* faster than using the fallback code in texcompress.c.
* Note that we only expect RGBA formats (no Z/depth formats).
*/
- decompress_with_blit(ctx, target, level, format, type, pixels,
- texObj, texImage);
+ decompress_with_blit(ctx, format, type, pixels, texImage);
}
else {
- _mesa_get_teximage(ctx, target, level, format, type, pixels,
- texObj, texImage);
+ _mesa_get_teximage(ctx, format, type, pixels, texImage);
}
}
@@ -1841,6 +1922,7 @@ st_init_texture_functions(struct dd_function_table *functions)
functions->NewTextureImage = st_NewTextureImage;
functions->DeleteTextureImage = st_DeleteTextureImage;
functions->DeleteTexture = st_DeleteTextureObject;
+ functions->AllocTextureImageBuffer = st_AllocTextureImageBuffer;
functions->FreeTextureImageBuffer = st_FreeTextureImageBuffer;
functions->MapTextureImage = st_MapTextureImage;
functions->UnmapTextureImage = st_UnmapTextureImage;
diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c
index 27fff39a8..6707fcae1 100644
--- a/mesalib/src/mesa/state_tracker/st_extensions.c
+++ b/mesalib/src/mesa/state_tracker/st_extensions.c
@@ -90,11 +90,13 @@ void st_init_limits(struct st_context *st)
= screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS);
c->MaxTextureImageUnits
- = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS),
+ = _min(screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT,
+ PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
MAX_TEXTURE_IMAGE_UNITS);
c->MaxVertexTextureImageUnits
- = _min(screen->get_param(screen, PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS),
+ = _min(screen->get_shader_param(screen, PIPE_SHADER_VERTEX,
+ PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS),
MAX_VERTEX_TEXTURE_IMAGE_UNITS);
c->MaxCombinedTextureImageUnits
@@ -305,10 +307,6 @@ void st_init_extensions(struct st_context *st)
/*
* Extensions that depend on the driver/hardware:
*/
- if (screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS) > 0) {
- ctx->Extensions.ARB_draw_buffers = GL_TRUE;
- }
-
if (screen->get_param(screen, PIPE_CAP_TEXTURE_SWIZZLE) > 0) {
ctx->Extensions.EXT_texture_swizzle = GL_TRUE;
}
@@ -499,7 +497,7 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_framebuffer_object = GL_TRUE;
}
- if (st->pipe->render_condition) {
+ if (screen->get_param(screen, PIPE_CAP_CONDITIONAL_RENDER)) {
ctx->Extensions.NV_conditional_render = GL_TRUE;
}
@@ -609,7 +607,7 @@ void st_init_extensions(struct st_context *st)
ctx->Extensions.ARB_sync = GL_TRUE;
}
- if (st->pipe->texture_barrier) {
+ if (screen->get_param(screen, PIPE_CAP_TEXTURE_BARRIER)) {
ctx->Extensions.NV_texture_barrier = GL_TRUE;
}
diff --git a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
index e53da5fd4..36fea3d7f 100644
--- a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
@@ -106,209 +106,6 @@ st_render_mipmap(struct st_context *st,
return TRUE;
}
-
-/**
- * Helper function to decompress an image. The result is a 32-bpp RGBA
- * image with stride==width.
- */
-static void
-decompress_image(enum pipe_format format, int datatype,
- const uint8_t *src, void *dst,
- unsigned width, unsigned height, unsigned src_stride)
-{
- const struct util_format_description *desc = util_format_description(format);
- const uint bw = util_format_get_blockwidth(format);
- const uint bh = util_format_get_blockheight(format);
- uint dst_stride = 4 * MAX2(width, bw);
-
- if (datatype == GL_FLOAT) {
- desc->unpack_rgba_float((float *)dst, dst_stride * sizeof(GLfloat), src, src_stride, width, height);
- if (width < bw || height < bh) {
- float *dst_p = (float *)dst;
- /* We're decompressing an image smaller than the compression
- * block size. We don't want garbage pixel values in the region
- * outside (width x height) so replicate pixels from the (width
- * x height) region to fill out the (bw x bh) block size.
- */
- uint x, y;
- for (y = 0; y < bh; y++) {
- for (x = 0; x < bw; x++) {
- if (x >= width || y >= height) {
- uint p = (y * bw + x) * 4;
- dst_p[p + 0] = dst_p[0];
- dst_p[p + 1] = dst_p[1];
- dst_p[p + 2] = dst_p[2];
- dst_p[p + 3] = dst_p[3];
- }
- }
- }
- }
- } else {
- desc->unpack_rgba_8unorm((uint8_t *)dst, dst_stride, src, src_stride, width, height);
- if (width < bw || height < bh) {
- uint8_t *dst_p = (uint8_t *)dst;
- /* We're decompressing an image smaller than the compression
- * block size. We don't want garbage pixel values in the region
- * outside (width x height) so replicate pixels from the (width
- * x height) region to fill out the (bw x bh) block size.
- */
- uint x, y;
- for (y = 0; y < bh; y++) {
- for (x = 0; x < bw; x++) {
- if (x >= width || y >= height) {
- uint p = (y * bw + x) * 4;
- dst_p[p + 0] = dst_p[0];
- dst_p[p + 1] = dst_p[1];
- dst_p[p + 2] = dst_p[2];
- dst_p[p + 3] = dst_p[3];
- }
- }
- }
- }
- }
-}
-
-/**
- * Helper function to compress an image. The source is a 32-bpp RGBA image
- * with stride==width.
- */
-static void
-compress_image(enum pipe_format format, int datatype,
- const void *src, uint8_t *dst,
- unsigned width, unsigned height, unsigned dst_stride)
-{
- const struct util_format_description *desc = util_format_description(format);
- const uint src_stride = 4 * width;
-
- if (datatype == GL_FLOAT)
- desc->pack_rgba_float(dst, dst_stride, (GLfloat *)src, src_stride * sizeof(GLfloat), width, height);
- else
- desc->pack_rgba_8unorm(dst, dst_stride, (uint8_t *)src, src_stride, width, height);
-}
-
-
-/**
- * Software fallback for generate mipmap levels.
- */
-static void
-fallback_generate_mipmap(struct gl_context *ctx, GLenum target,
- struct gl_texture_object *texObj)
-{
- struct pipe_context *pipe = st_context(ctx)->pipe;
- struct pipe_resource *pt = st_get_texobj_resource(texObj);
- const uint baseLevel = texObj->BaseLevel;
- const uint lastLevel = pt->last_level;
- const uint face = _mesa_tex_target_to_face(target);
- uint dstLevel;
- GLenum datatype;
- GLuint comps;
- GLboolean compressed;
-
- if (ST_DEBUG & DEBUG_FALLBACK)
- debug_printf("%s: fallback processing\n", __FUNCTION__);
-
- assert(target != GL_TEXTURE_3D); /* not done yet */
-
- compressed =
- _mesa_is_format_compressed(texObj->Image[face][baseLevel]->TexFormat);
-
- if (compressed) {
- GLenum type =
- _mesa_get_format_datatype(texObj->Image[face][baseLevel]->TexFormat);
-
- datatype = type == GL_UNSIGNED_NORMALIZED ? GL_UNSIGNED_BYTE : GL_FLOAT;
- comps = 4;
- }
- else {
- _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat,
- &datatype, &comps);
- assert(comps > 0 && "bad texture format in fallback_generate_mipmap()");
- }
-
- for (dstLevel = baseLevel + 1; dstLevel <= lastLevel; dstLevel++) {
- const uint srcLevel = dstLevel - 1;
- const uint srcWidth = u_minify(pt->width0, srcLevel);
- const uint srcHeight = u_minify(pt->height0, srcLevel);
- const uint srcDepth = u_minify(pt->depth0, srcLevel);
- const uint dstWidth = u_minify(pt->width0, dstLevel);
- const uint dstHeight = u_minify(pt->height0, dstLevel);
- const uint dstDepth = u_minify(pt->depth0, dstLevel);
- struct pipe_transfer *srcTrans, *dstTrans;
- const ubyte *srcData;
- ubyte *dstData;
- int srcStride, dstStride;
-
- srcTrans = pipe_get_transfer(pipe, pt, srcLevel,
- face,
- PIPE_TRANSFER_READ, 0, 0,
- srcWidth, srcHeight);
-
- dstTrans = pipe_get_transfer(pipe, pt, dstLevel,
- face,
- PIPE_TRANSFER_WRITE, 0, 0,
- dstWidth, dstHeight);
-
- srcData = (ubyte *) pipe_transfer_map(pipe, srcTrans);
- dstData = (ubyte *) pipe_transfer_map(pipe, dstTrans);
-
- srcStride = srcTrans->stride / util_format_get_blocksize(srcTrans->resource->format);
- dstStride = dstTrans->stride / util_format_get_blocksize(dstTrans->resource->format);
-
- /* this cannot work correctly for 3d since it does
- not respect layerStride. */
- if (compressed) {
- const enum pipe_format format = pt->format;
- const uint bw = util_format_get_blockwidth(format);
- const uint bh = util_format_get_blockheight(format);
- const uint srcWidth2 = align(srcWidth, bw);
- const uint srcHeight2 = align(srcHeight, bh);
- const uint dstWidth2 = align(dstWidth, bw);
- const uint dstHeight2 = align(dstHeight, bh);
- uint8_t *srcTemp, *dstTemp;
-
- assert(comps == 4);
-
- srcTemp = malloc(srcWidth2 * srcHeight2 * comps * (datatype == GL_FLOAT ? 4 : 1));
- dstTemp = malloc(dstWidth2 * dstHeight2 * comps * (datatype == GL_FLOAT ? 4 : 1));
-
- /* decompress the src image: srcData -> srcTemp */
- decompress_image(format, datatype, srcData, srcTemp, srcWidth2, srcHeight2, srcTrans->stride);
-
- _mesa_generate_mipmap_level(target, datatype, comps,
- 0 /*border*/,
- srcWidth2, srcHeight2, srcDepth,
- srcTemp,
- srcWidth2, /* stride in texels */
- dstWidth2, dstHeight2, dstDepth,
- dstTemp,
- dstWidth2); /* stride in texels */
-
- /* compress the new image: dstTemp -> dstData */
- compress_image(format, datatype, dstTemp, dstData, dstWidth2, dstHeight2, dstTrans->stride);
-
- free(srcTemp);
- free(dstTemp);
- }
- else {
- _mesa_generate_mipmap_level(target, datatype, comps,
- 0 /*border*/,
- srcWidth, srcHeight, srcDepth,
- srcData,
- srcStride, /* stride in texels */
- dstWidth, dstHeight, dstDepth,
- dstData,
- dstStride); /* stride in texels */
- }
-
- pipe_transfer_unmap(pipe, srcTrans);
- pipe_transfer_unmap(pipe, dstTrans);
-
- pipe->transfer_destroy(pipe, srcTrans);
- pipe->transfer_destroy(pipe, dstTrans);
- }
-}
-
-
/**
* Compute the expected number of mipmap levels in the texture given
* the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/
@@ -422,7 +219,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) {
/* since the util code actually also has a fallback, should
probably make it never fail and kill this */
- fallback_generate_mipmap(ctx, target, texObj);
+ _mesa_generate_mipmap(ctx, target, texObj);
}
/* Fill in the Mesa gl_texture_image fields */
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index f68270d0f..d8ef8a3ce 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -1933,14 +1933,6 @@ glsl_to_tgsi_visitor::visit(ir_dereference_variable *ir)
entry = new(mem_ctx) variable_storage(var,
PROGRAM_INPUT,
var->location);
- if (this->prog->Target == GL_VERTEX_PROGRAM_ARB &&
- var->location >= VERT_ATTRIB_GENERIC0) {
- _mesa_add_attribute(this->prog->Attributes,
- var->name,
- _mesa_sizeof_glsl_type(var->type->gl_type),
- var->type->gl_type,
- var->location - VERT_ATTRIB_GENERIC0);
- }
break;
case ir_var_out:
assert(var->location != -1);
@@ -3986,8 +3978,6 @@ get_pixel_transfer_visitor(struct st_fragment_program *fp,
/* Make modifications to fragment program info. */
prog->Parameters = _mesa_combine_parameter_lists(params,
original->prog->Parameters);
- prog->Attributes = _mesa_clone_parameter_list(original->prog->Attributes);
- prog->Varying = _mesa_clone_parameter_list(original->prog->Varying);
_mesa_free_parameter_list(params);
count_resources(v, prog);
fp->glsl_to_tgsi = v;
@@ -4062,8 +4052,6 @@ get_bitmap_visitor(struct st_fragment_program *fp,
/* Make modifications to fragment program info. */
prog->Parameters = _mesa_clone_parameter_list(original->prog->Parameters);
- prog->Attributes = _mesa_clone_parameter_list(original->prog->Attributes);
- prog->Varying = _mesa_clone_parameter_list(original->prog->Varying);
count_resources(v, prog);
fp->glsl_to_tgsi = v;
}
@@ -4969,8 +4957,6 @@ get_mesa_program(struct gl_context *ctx,
if (!prog)
return NULL;
prog->Parameters = _mesa_new_parameter_list();
- prog->Varying = _mesa_new_parameter_list();
- prog->Attributes = _mesa_new_parameter_list();
v->ctx = ctx;
v->prog = prog;
v->shader_program = shader_program;
diff --git a/mesalib/src/mesa/swrast/s_aaline.c b/mesalib/src/mesa/swrast/s_aaline.c
index be817f326..d4b1805d9 100644
--- a/mesalib/src/mesa/swrast/s_aaline.c
+++ b/mesalib/src/mesa/swrast/s_aaline.c
@@ -1,492 +1,492 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 1999-2007 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.
- */
-
-
-#include "main/glheader.h"
-#include "main/imports.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "swrast/s_aaline.h"
-#include "swrast/s_context.h"
-#include "swrast/s_span.h"
-#include "swrast/swrast.h"
-
-
-#define SUB_PIXEL 4
-
-
-/*
- * Info about the AA line we're rendering
- */
-struct LineInfo
-{
- GLfloat x0, y0; /* start */
- GLfloat x1, y1; /* end */
- GLfloat dx, dy; /* direction vector */
- GLfloat len; /* length */
- GLfloat halfWidth; /* half of line width */
- GLfloat xAdj, yAdj; /* X and Y adjustment for quad corners around line */
- /* for coverage computation */
- GLfloat qx0, qy0; /* quad vertices */
- GLfloat qx1, qy1;
- GLfloat qx2, qy2;
- GLfloat qx3, qy3;
- GLfloat ex0, ey0; /* quad edge vectors */
- GLfloat ex1, ey1;
- GLfloat ex2, ey2;
- GLfloat ex3, ey3;
-
- /* DO_Z */
- GLfloat zPlane[4];
- /* DO_RGBA - always enabled */
- GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4];
- /* DO_ATTRIBS */
- GLfloat wPlane[4];
- GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4];
- GLfloat lambda[FRAG_ATTRIB_MAX];
- GLfloat texWidth[FRAG_ATTRIB_MAX];
- GLfloat texHeight[FRAG_ATTRIB_MAX];
-
- SWspan span;
-};
-
-
-
-/*
- * Compute the equation of a plane used to interpolate line fragment data
- * such as color, Z, texture coords, etc.
- * Input: (x0, y0) and (x1,y1) are the endpoints of the line.
- * z0, and z1 are the end point values to interpolate.
- * Output: plane - the plane equation.
- *
- * Note: we don't really have enough parameters to specify a plane.
- * We take the endpoints of the line and compute a plane such that
- * the cross product of the line vector and the plane normal is
- * parallel to the projection plane.
- */
-static void
-compute_plane(GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1,
- GLfloat z0, GLfloat z1, GLfloat plane[4])
-{
-#if 0
- /* original */
- const GLfloat px = x1 - x0;
- const GLfloat py = y1 - y0;
- const GLfloat pz = z1 - z0;
- const GLfloat qx = -py;
- const GLfloat qy = px;
- const GLfloat qz = 0;
- const GLfloat a = py * qz - pz * qy;
- const GLfloat b = pz * qx - px * qz;
- const GLfloat c = px * qy - py * qx;
- const GLfloat d = -(a * x0 + b * y0 + c * z0);
- plane[0] = a;
- plane[1] = b;
- plane[2] = c;
- plane[3] = d;
-#else
- /* simplified */
- const GLfloat px = x1 - x0;
- const GLfloat py = y1 - y0;
- const GLfloat pz = z0 - z1;
- const GLfloat a = pz * px;
- const GLfloat b = pz * py;
- const GLfloat c = px * px + py * py;
- const GLfloat d = -(a * x0 + b * y0 + c * z0);
- if (a == 0.0 && b == 0.0 && c == 0.0 && d == 0.0) {
- plane[0] = 0.0;
- plane[1] = 0.0;
- plane[2] = 1.0;
- plane[3] = 0.0;
- }
- else {
- plane[0] = a;
- plane[1] = b;
- plane[2] = c;
- plane[3] = d;
- }
-#endif
-}
-
-
-static INLINE void
-constant_plane(GLfloat value, GLfloat plane[4])
-{
- plane[0] = 0.0;
- plane[1] = 0.0;
- plane[2] = -1.0;
- plane[3] = value;
-}
-
-
-static INLINE GLfloat
-solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
- return z;
-}
-
-#define SOLVE_PLANE(X, Y, PLANE) \
- ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2])
-
-
-/*
- * Return 1 / solve_plane().
- */
-static INLINE GLfloat
-solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y;
- if (denom == 0.0)
- return 0.0;
- else
- return -plane[2] / denom;
-}
-
-
-/*
- * Solve plane and return clamped GLchan value.
- */
-static INLINE GLchan
-solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
-#if CHAN_TYPE == GL_FLOAT
- return CLAMP(z, 0.0F, CHAN_MAXF);
-#else
- if (z < 0)
- return 0;
- else if (z > CHAN_MAX)
- return CHAN_MAX;
- return (GLchan) IROUND_POS(z);
-#endif
-}
-
-
-/*
- * Compute mipmap level of detail.
- */
-static INLINE GLfloat
-compute_lambda(const GLfloat sPlane[4], const GLfloat tPlane[4],
- GLfloat invQ, GLfloat width, GLfloat height)
-{
- GLfloat dudx = sPlane[0] / sPlane[2] * invQ * width;
- GLfloat dudy = sPlane[1] / sPlane[2] * invQ * width;
- GLfloat dvdx = tPlane[0] / tPlane[2] * invQ * height;
- GLfloat dvdy = tPlane[1] / tPlane[2] * invQ * height;
- GLfloat r1 = dudx * dudx + dudy * dudy;
- GLfloat r2 = dvdx * dvdx + dvdy * dvdy;
- GLfloat rho2 = r1 + r2;
- /* return log base 2 of rho */
- if (rho2 == 0.0F)
- return 0.0;
- else
- return (GLfloat) (LOGF(rho2) * 1.442695 * 0.5);/* 1.442695 = 1/log(2) */
-}
-
-
-
-
-/*
- * Fill in the samples[] array with the (x,y) subpixel positions of
- * xSamples * ySamples sample positions.
- * Note that the four corner samples are put into the first four
- * positions of the array. This allows us to optimize for the common
- * case of all samples being inside the polygon.
- */
-static void
-make_sample_table(GLint xSamples, GLint ySamples, GLfloat samples[][2])
-{
- const GLfloat dx = 1.0F / (GLfloat) xSamples;
- const GLfloat dy = 1.0F / (GLfloat) ySamples;
- GLint x, y;
- GLint i;
-
- i = 4;
- for (x = 0; x < xSamples; x++) {
- for (y = 0; y < ySamples; y++) {
- GLint j;
- if (x == 0 && y == 0) {
- /* lower left */
- j = 0;
- }
- else if (x == xSamples - 1 && y == 0) {
- /* lower right */
- j = 1;
- }
- else if (x == 0 && y == ySamples - 1) {
- /* upper left */
- j = 2;
- }
- else if (x == xSamples - 1 && y == ySamples - 1) {
- /* upper right */
- j = 3;
- }
- else {
- j = i++;
- }
- samples[j][0] = x * dx + 0.5F * dx;
- samples[j][1] = y * dy + 0.5F * dy;
- }
- }
-}
-
-
-
-/*
- * Compute how much of the given pixel's area is inside the rectangle
- * defined by vertices v0, v1, v2, v3.
- * Vertices MUST be specified in counter-clockwise order.
- * Return: coverage in [0, 1].
- */
-static GLfloat
-compute_coveragef(const struct LineInfo *info,
- GLint winx, GLint winy)
-{
- static GLfloat samples[SUB_PIXEL * SUB_PIXEL][2];
- static GLboolean haveSamples = GL_FALSE;
- const GLfloat x = (GLfloat) winx;
- const GLfloat y = (GLfloat) winy;
- GLint stop = 4, i;
- GLfloat insideCount = SUB_PIXEL * SUB_PIXEL;
-
- if (!haveSamples) {
- make_sample_table(SUB_PIXEL, SUB_PIXEL, samples);
- haveSamples = GL_TRUE;
- }
-
-#if 0 /*DEBUG*/
- {
- const GLfloat area = dx0 * dy1 - dx1 * dy0;
- assert(area >= 0.0);
- }
-#endif
-
- for (i = 0; i < stop; i++) {
- const GLfloat sx = x + samples[i][0];
- const GLfloat sy = y + samples[i][1];
- const GLfloat fx0 = sx - info->qx0;
- const GLfloat fy0 = sy - info->qy0;
- const GLfloat fx1 = sx - info->qx1;
- const GLfloat fy1 = sy - info->qy1;
- const GLfloat fx2 = sx - info->qx2;
- const GLfloat fy2 = sy - info->qy2;
- const GLfloat fx3 = sx - info->qx3;
- const GLfloat fy3 = sy - info->qy3;
- /* cross product determines if sample is inside or outside each edge */
- GLfloat cross0 = (info->ex0 * fy0 - info->ey0 * fx0);
- GLfloat cross1 = (info->ex1 * fy1 - info->ey1 * fx1);
- GLfloat cross2 = (info->ex2 * fy2 - info->ey2 * fx2);
- GLfloat cross3 = (info->ex3 * fy3 - info->ey3 * fx3);
- /* Check if the sample is exactly on an edge. If so, let cross be a
- * positive or negative value depending on the direction of the edge.
- */
- if (cross0 == 0.0F)
- cross0 = info->ex0 + info->ey0;
- if (cross1 == 0.0F)
- cross1 = info->ex1 + info->ey1;
- if (cross2 == 0.0F)
- cross2 = info->ex2 + info->ey2;
- if (cross3 == 0.0F)
- cross3 = info->ex3 + info->ey3;
- if (cross0 < 0.0F || cross1 < 0.0F || cross2 < 0.0F || cross3 < 0.0F) {
- /* point is outside quadrilateral */
- insideCount -= 1.0F;
- stop = SUB_PIXEL * SUB_PIXEL;
- }
- }
- if (stop == 4)
- return 1.0F;
- else
- return insideCount * (1.0F / (SUB_PIXEL * SUB_PIXEL));
-}
-
-
-typedef void (*plot_func)(struct gl_context *ctx, struct LineInfo *line,
- int ix, int iy);
-
-
-
-/*
- * Draw an AA line segment (called many times per line when stippling)
- */
-static void
-segment(struct gl_context *ctx,
- struct LineInfo *line,
- plot_func plot,
- GLfloat t0, GLfloat t1)
-{
- const GLfloat absDx = (line->dx < 0.0F) ? -line->dx : line->dx;
- const GLfloat absDy = (line->dy < 0.0F) ? -line->dy : line->dy;
- /* compute the actual segment's endpoints */
- const GLfloat x0 = line->x0 + t0 * line->dx;
- const GLfloat y0 = line->y0 + t0 * line->dy;
- const GLfloat x1 = line->x0 + t1 * line->dx;
- const GLfloat y1 = line->y0 + t1 * line->dy;
-
- /* compute vertices of the line-aligned quadrilateral */
- line->qx0 = x0 - line->yAdj;
- line->qy0 = y0 + line->xAdj;
- line->qx1 = x0 + line->yAdj;
- line->qy1 = y0 - line->xAdj;
- line->qx2 = x1 + line->yAdj;
- line->qy2 = y1 - line->xAdj;
- line->qx3 = x1 - line->yAdj;
- line->qy3 = y1 + line->xAdj;
- /* compute the quad's edge vectors (for coverage calc) */
- line->ex0 = line->qx1 - line->qx0;
- line->ey0 = line->qy1 - line->qy0;
- line->ex1 = line->qx2 - line->qx1;
- line->ey1 = line->qy2 - line->qy1;
- line->ex2 = line->qx3 - line->qx2;
- line->ey2 = line->qy3 - line->qy2;
- line->ex3 = line->qx0 - line->qx3;
- line->ey3 = line->qy0 - line->qy3;
-
- if (absDx > absDy) {
- /* X-major line */
- GLfloat dydx = line->dy / line->dx;
- GLfloat xLeft, xRight, yBot, yTop;
- GLint ix, ixRight;
- if (x0 < x1) {
- xLeft = x0 - line->halfWidth;
- xRight = x1 + line->halfWidth;
- if (line->dy >= 0.0) {
- yBot = y0 - 3.0F * line->halfWidth;
- yTop = y0 + line->halfWidth;
- }
- else {
- yBot = y0 - line->halfWidth;
- yTop = y0 + 3.0F * line->halfWidth;
- }
- }
- else {
- xLeft = x1 - line->halfWidth;
- xRight = x0 + line->halfWidth;
- if (line->dy <= 0.0) {
- yBot = y1 - 3.0F * line->halfWidth;
- yTop = y1 + line->halfWidth;
- }
- else {
- yBot = y1 - line->halfWidth;
- yTop = y1 + 3.0F * line->halfWidth;
- }
- }
-
- /* scan along the line, left-to-right */
- ixRight = (GLint) (xRight + 1.0F);
-
- /*printf("avg span height: %g\n", yTop - yBot);*/
- for (ix = (GLint) xLeft; ix < ixRight; ix++) {
- const GLint iyBot = (GLint) yBot;
- const GLint iyTop = (GLint) (yTop + 1.0F);
- GLint iy;
- /* scan across the line, bottom-to-top */
- for (iy = iyBot; iy < iyTop; iy++) {
- (*plot)(ctx, line, ix, iy);
- }
- yBot += dydx;
- yTop += dydx;
- }
- }
- else {
- /* Y-major line */
- GLfloat dxdy = line->dx / line->dy;
- GLfloat yBot, yTop, xLeft, xRight;
- GLint iy, iyTop;
- if (y0 < y1) {
- yBot = y0 - line->halfWidth;
- yTop = y1 + line->halfWidth;
- if (line->dx >= 0.0) {
- xLeft = x0 - 3.0F * line->halfWidth;
- xRight = x0 + line->halfWidth;
- }
- else {
- xLeft = x0 - line->halfWidth;
- xRight = x0 + 3.0F * line->halfWidth;
- }
- }
- else {
- yBot = y1 - line->halfWidth;
- yTop = y0 + line->halfWidth;
- if (line->dx <= 0.0) {
- xLeft = x1 - 3.0F * line->halfWidth;
- xRight = x1 + line->halfWidth;
- }
- else {
- xLeft = x1 - line->halfWidth;
- xRight = x1 + 3.0F * line->halfWidth;
- }
- }
-
- /* scan along the line, bottom-to-top */
- iyTop = (GLint) (yTop + 1.0F);
-
- /*printf("avg span width: %g\n", xRight - xLeft);*/
- for (iy = (GLint) yBot; iy < iyTop; iy++) {
- const GLint ixLeft = (GLint) xLeft;
- const GLint ixRight = (GLint) (xRight + 1.0F);
- GLint ix;
- /* scan across the line, left-to-right */
- for (ix = ixLeft; ix < ixRight; ix++) {
- (*plot)(ctx, line, ix, iy);
- }
- xLeft += dxdy;
- xRight += dxdy;
- }
- }
-}
-
-
-#define NAME(x) aa_rgba_##x
-#define DO_Z
-#include "s_aalinetemp.h"
-
-
-#define NAME(x) aa_general_rgba_##x
-#define DO_Z
-#define DO_ATTRIBS
-#include "s_aalinetemp.h"
-
-
-
-void
-_swrast_choose_aa_line_function(struct gl_context *ctx)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
-
- ASSERT(ctx->Line.SmoothFlag);
-
- if (ctx->Texture._EnabledCoordUnits != 0
- || ctx->FragmentProgram._Current
- || (ctx->Light.Enabled &&
- ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
- || ctx->Fog.ColorSumEnabled
- || swrast->_FogEnabled) {
- swrast->Line = aa_general_rgba_line;
- }
- else {
- swrast->Line = aa_rgba_line;
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 1999-2007 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.
+ */
+
+
+#include "main/glheader.h"
+#include "main/imports.h"
+#include "main/macros.h"
+#include "main/mtypes.h"
+#include "swrast/s_aaline.h"
+#include "swrast/s_context.h"
+#include "swrast/s_span.h"
+#include "swrast/swrast.h"
+
+
+#define SUB_PIXEL 4
+
+
+/*
+ * Info about the AA line we're rendering
+ */
+struct LineInfo
+{
+ GLfloat x0, y0; /* start */
+ GLfloat x1, y1; /* end */
+ GLfloat dx, dy; /* direction vector */
+ GLfloat len; /* length */
+ GLfloat halfWidth; /* half of line width */
+ GLfloat xAdj, yAdj; /* X and Y adjustment for quad corners around line */
+ /* for coverage computation */
+ GLfloat qx0, qy0; /* quad vertices */
+ GLfloat qx1, qy1;
+ GLfloat qx2, qy2;
+ GLfloat qx3, qy3;
+ GLfloat ex0, ey0; /* quad edge vectors */
+ GLfloat ex1, ey1;
+ GLfloat ex2, ey2;
+ GLfloat ex3, ey3;
+
+ /* DO_Z */
+ GLfloat zPlane[4];
+ /* DO_RGBA - always enabled */
+ GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4];
+ /* DO_ATTRIBS */
+ GLfloat wPlane[4];
+ GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4];
+ GLfloat lambda[FRAG_ATTRIB_MAX];
+ GLfloat texWidth[FRAG_ATTRIB_MAX];
+ GLfloat texHeight[FRAG_ATTRIB_MAX];
+
+ SWspan span;
+};
+
+
+
+/*
+ * Compute the equation of a plane used to interpolate line fragment data
+ * such as color, Z, texture coords, etc.
+ * Input: (x0, y0) and (x1,y1) are the endpoints of the line.
+ * z0, and z1 are the end point values to interpolate.
+ * Output: plane - the plane equation.
+ *
+ * Note: we don't really have enough parameters to specify a plane.
+ * We take the endpoints of the line and compute a plane such that
+ * the cross product of the line vector and the plane normal is
+ * parallel to the projection plane.
+ */
+static void
+compute_plane(GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1,
+ GLfloat z0, GLfloat z1, GLfloat plane[4])
+{
+#if 0
+ /* original */
+ const GLfloat px = x1 - x0;
+ const GLfloat py = y1 - y0;
+ const GLfloat pz = z1 - z0;
+ const GLfloat qx = -py;
+ const GLfloat qy = px;
+ const GLfloat qz = 0;
+ const GLfloat a = py * qz - pz * qy;
+ const GLfloat b = pz * qx - px * qz;
+ const GLfloat c = px * qy - py * qx;
+ const GLfloat d = -(a * x0 + b * y0 + c * z0);
+ plane[0] = a;
+ plane[1] = b;
+ plane[2] = c;
+ plane[3] = d;
+#else
+ /* simplified */
+ const GLfloat px = x1 - x0;
+ const GLfloat py = y1 - y0;
+ const GLfloat pz = z0 - z1;
+ const GLfloat a = pz * px;
+ const GLfloat b = pz * py;
+ const GLfloat c = px * px + py * py;
+ const GLfloat d = -(a * x0 + b * y0 + c * z0);
+ if (a == 0.0 && b == 0.0 && c == 0.0 && d == 0.0) {
+ plane[0] = 0.0;
+ plane[1] = 0.0;
+ plane[2] = 1.0;
+ plane[3] = 0.0;
+ }
+ else {
+ plane[0] = a;
+ plane[1] = b;
+ plane[2] = c;
+ plane[3] = d;
+ }
+#endif
+}
+
+
+static inline void
+constant_plane(GLfloat value, GLfloat plane[4])
+{
+ plane[0] = 0.0;
+ plane[1] = 0.0;
+ plane[2] = -1.0;
+ plane[3] = value;
+}
+
+
+static inline GLfloat
+solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+ return z;
+}
+
+#define SOLVE_PLANE(X, Y, PLANE) \
+ ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2])
+
+
+/*
+ * Return 1 / solve_plane().
+ */
+static inline GLfloat
+solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y;
+ if (denom == 0.0)
+ return 0.0;
+ else
+ return -plane[2] / denom;
+}
+
+
+/*
+ * Solve plane and return clamped GLchan value.
+ */
+static inline GLchan
+solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+#if CHAN_TYPE == GL_FLOAT
+ return CLAMP(z, 0.0F, CHAN_MAXF);
+#else
+ if (z < 0)
+ return 0;
+ else if (z > CHAN_MAX)
+ return CHAN_MAX;
+ return (GLchan) IROUND_POS(z);
+#endif
+}
+
+
+/*
+ * Compute mipmap level of detail.
+ */
+static inline GLfloat
+compute_lambda(const GLfloat sPlane[4], const GLfloat tPlane[4],
+ GLfloat invQ, GLfloat width, GLfloat height)
+{
+ GLfloat dudx = sPlane[0] / sPlane[2] * invQ * width;
+ GLfloat dudy = sPlane[1] / sPlane[2] * invQ * width;
+ GLfloat dvdx = tPlane[0] / tPlane[2] * invQ * height;
+ GLfloat dvdy = tPlane[1] / tPlane[2] * invQ * height;
+ GLfloat r1 = dudx * dudx + dudy * dudy;
+ GLfloat r2 = dvdx * dvdx + dvdy * dvdy;
+ GLfloat rho2 = r1 + r2;
+ /* return log base 2 of rho */
+ if (rho2 == 0.0F)
+ return 0.0;
+ else
+ return (GLfloat) (LOGF(rho2) * 1.442695 * 0.5);/* 1.442695 = 1/log(2) */
+}
+
+
+
+
+/*
+ * Fill in the samples[] array with the (x,y) subpixel positions of
+ * xSamples * ySamples sample positions.
+ * Note that the four corner samples are put into the first four
+ * positions of the array. This allows us to optimize for the common
+ * case of all samples being inside the polygon.
+ */
+static void
+make_sample_table(GLint xSamples, GLint ySamples, GLfloat samples[][2])
+{
+ const GLfloat dx = 1.0F / (GLfloat) xSamples;
+ const GLfloat dy = 1.0F / (GLfloat) ySamples;
+ GLint x, y;
+ GLint i;
+
+ i = 4;
+ for (x = 0; x < xSamples; x++) {
+ for (y = 0; y < ySamples; y++) {
+ GLint j;
+ if (x == 0 && y == 0) {
+ /* lower left */
+ j = 0;
+ }
+ else if (x == xSamples - 1 && y == 0) {
+ /* lower right */
+ j = 1;
+ }
+ else if (x == 0 && y == ySamples - 1) {
+ /* upper left */
+ j = 2;
+ }
+ else if (x == xSamples - 1 && y == ySamples - 1) {
+ /* upper right */
+ j = 3;
+ }
+ else {
+ j = i++;
+ }
+ samples[j][0] = x * dx + 0.5F * dx;
+ samples[j][1] = y * dy + 0.5F * dy;
+ }
+ }
+}
+
+
+
+/*
+ * Compute how much of the given pixel's area is inside the rectangle
+ * defined by vertices v0, v1, v2, v3.
+ * Vertices MUST be specified in counter-clockwise order.
+ * Return: coverage in [0, 1].
+ */
+static GLfloat
+compute_coveragef(const struct LineInfo *info,
+ GLint winx, GLint winy)
+{
+ static GLfloat samples[SUB_PIXEL * SUB_PIXEL][2];
+ static GLboolean haveSamples = GL_FALSE;
+ const GLfloat x = (GLfloat) winx;
+ const GLfloat y = (GLfloat) winy;
+ GLint stop = 4, i;
+ GLfloat insideCount = SUB_PIXEL * SUB_PIXEL;
+
+ if (!haveSamples) {
+ make_sample_table(SUB_PIXEL, SUB_PIXEL, samples);
+ haveSamples = GL_TRUE;
+ }
+
+#if 0 /*DEBUG*/
+ {
+ const GLfloat area = dx0 * dy1 - dx1 * dy0;
+ assert(area >= 0.0);
+ }
+#endif
+
+ for (i = 0; i < stop; i++) {
+ const GLfloat sx = x + samples[i][0];
+ const GLfloat sy = y + samples[i][1];
+ const GLfloat fx0 = sx - info->qx0;
+ const GLfloat fy0 = sy - info->qy0;
+ const GLfloat fx1 = sx - info->qx1;
+ const GLfloat fy1 = sy - info->qy1;
+ const GLfloat fx2 = sx - info->qx2;
+ const GLfloat fy2 = sy - info->qy2;
+ const GLfloat fx3 = sx - info->qx3;
+ const GLfloat fy3 = sy - info->qy3;
+ /* cross product determines if sample is inside or outside each edge */
+ GLfloat cross0 = (info->ex0 * fy0 - info->ey0 * fx0);
+ GLfloat cross1 = (info->ex1 * fy1 - info->ey1 * fx1);
+ GLfloat cross2 = (info->ex2 * fy2 - info->ey2 * fx2);
+ GLfloat cross3 = (info->ex3 * fy3 - info->ey3 * fx3);
+ /* Check if the sample is exactly on an edge. If so, let cross be a
+ * positive or negative value depending on the direction of the edge.
+ */
+ if (cross0 == 0.0F)
+ cross0 = info->ex0 + info->ey0;
+ if (cross1 == 0.0F)
+ cross1 = info->ex1 + info->ey1;
+ if (cross2 == 0.0F)
+ cross2 = info->ex2 + info->ey2;
+ if (cross3 == 0.0F)
+ cross3 = info->ex3 + info->ey3;
+ if (cross0 < 0.0F || cross1 < 0.0F || cross2 < 0.0F || cross3 < 0.0F) {
+ /* point is outside quadrilateral */
+ insideCount -= 1.0F;
+ stop = SUB_PIXEL * SUB_PIXEL;
+ }
+ }
+ if (stop == 4)
+ return 1.0F;
+ else
+ return insideCount * (1.0F / (SUB_PIXEL * SUB_PIXEL));
+}
+
+
+typedef void (*plot_func)(struct gl_context *ctx, struct LineInfo *line,
+ int ix, int iy);
+
+
+
+/*
+ * Draw an AA line segment (called many times per line when stippling)
+ */
+static void
+segment(struct gl_context *ctx,
+ struct LineInfo *line,
+ plot_func plot,
+ GLfloat t0, GLfloat t1)
+{
+ const GLfloat absDx = (line->dx < 0.0F) ? -line->dx : line->dx;
+ const GLfloat absDy = (line->dy < 0.0F) ? -line->dy : line->dy;
+ /* compute the actual segment's endpoints */
+ const GLfloat x0 = line->x0 + t0 * line->dx;
+ const GLfloat y0 = line->y0 + t0 * line->dy;
+ const GLfloat x1 = line->x0 + t1 * line->dx;
+ const GLfloat y1 = line->y0 + t1 * line->dy;
+
+ /* compute vertices of the line-aligned quadrilateral */
+ line->qx0 = x0 - line->yAdj;
+ line->qy0 = y0 + line->xAdj;
+ line->qx1 = x0 + line->yAdj;
+ line->qy1 = y0 - line->xAdj;
+ line->qx2 = x1 + line->yAdj;
+ line->qy2 = y1 - line->xAdj;
+ line->qx3 = x1 - line->yAdj;
+ line->qy3 = y1 + line->xAdj;
+ /* compute the quad's edge vectors (for coverage calc) */
+ line->ex0 = line->qx1 - line->qx0;
+ line->ey0 = line->qy1 - line->qy0;
+ line->ex1 = line->qx2 - line->qx1;
+ line->ey1 = line->qy2 - line->qy1;
+ line->ex2 = line->qx3 - line->qx2;
+ line->ey2 = line->qy3 - line->qy2;
+ line->ex3 = line->qx0 - line->qx3;
+ line->ey3 = line->qy0 - line->qy3;
+
+ if (absDx > absDy) {
+ /* X-major line */
+ GLfloat dydx = line->dy / line->dx;
+ GLfloat xLeft, xRight, yBot, yTop;
+ GLint ix, ixRight;
+ if (x0 < x1) {
+ xLeft = x0 - line->halfWidth;
+ xRight = x1 + line->halfWidth;
+ if (line->dy >= 0.0) {
+ yBot = y0 - 3.0F * line->halfWidth;
+ yTop = y0 + line->halfWidth;
+ }
+ else {
+ yBot = y0 - line->halfWidth;
+ yTop = y0 + 3.0F * line->halfWidth;
+ }
+ }
+ else {
+ xLeft = x1 - line->halfWidth;
+ xRight = x0 + line->halfWidth;
+ if (line->dy <= 0.0) {
+ yBot = y1 - 3.0F * line->halfWidth;
+ yTop = y1 + line->halfWidth;
+ }
+ else {
+ yBot = y1 - line->halfWidth;
+ yTop = y1 + 3.0F * line->halfWidth;
+ }
+ }
+
+ /* scan along the line, left-to-right */
+ ixRight = (GLint) (xRight + 1.0F);
+
+ /*printf("avg span height: %g\n", yTop - yBot);*/
+ for (ix = (GLint) xLeft; ix < ixRight; ix++) {
+ const GLint iyBot = (GLint) yBot;
+ const GLint iyTop = (GLint) (yTop + 1.0F);
+ GLint iy;
+ /* scan across the line, bottom-to-top */
+ for (iy = iyBot; iy < iyTop; iy++) {
+ (*plot)(ctx, line, ix, iy);
+ }
+ yBot += dydx;
+ yTop += dydx;
+ }
+ }
+ else {
+ /* Y-major line */
+ GLfloat dxdy = line->dx / line->dy;
+ GLfloat yBot, yTop, xLeft, xRight;
+ GLint iy, iyTop;
+ if (y0 < y1) {
+ yBot = y0 - line->halfWidth;
+ yTop = y1 + line->halfWidth;
+ if (line->dx >= 0.0) {
+ xLeft = x0 - 3.0F * line->halfWidth;
+ xRight = x0 + line->halfWidth;
+ }
+ else {
+ xLeft = x0 - line->halfWidth;
+ xRight = x0 + 3.0F * line->halfWidth;
+ }
+ }
+ else {
+ yBot = y1 - line->halfWidth;
+ yTop = y0 + line->halfWidth;
+ if (line->dx <= 0.0) {
+ xLeft = x1 - 3.0F * line->halfWidth;
+ xRight = x1 + line->halfWidth;
+ }
+ else {
+ xLeft = x1 - line->halfWidth;
+ xRight = x1 + 3.0F * line->halfWidth;
+ }
+ }
+
+ /* scan along the line, bottom-to-top */
+ iyTop = (GLint) (yTop + 1.0F);
+
+ /*printf("avg span width: %g\n", xRight - xLeft);*/
+ for (iy = (GLint) yBot; iy < iyTop; iy++) {
+ const GLint ixLeft = (GLint) xLeft;
+ const GLint ixRight = (GLint) (xRight + 1.0F);
+ GLint ix;
+ /* scan across the line, left-to-right */
+ for (ix = ixLeft; ix < ixRight; ix++) {
+ (*plot)(ctx, line, ix, iy);
+ }
+ xLeft += dxdy;
+ xRight += dxdy;
+ }
+ }
+}
+
+
+#define NAME(x) aa_rgba_##x
+#define DO_Z
+#include "s_aalinetemp.h"
+
+
+#define NAME(x) aa_general_rgba_##x
+#define DO_Z
+#define DO_ATTRIBS
+#include "s_aalinetemp.h"
+
+
+
+void
+_swrast_choose_aa_line_function(struct gl_context *ctx)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+ ASSERT(ctx->Line.SmoothFlag);
+
+ if (ctx->Texture._EnabledCoordUnits != 0
+ || ctx->FragmentProgram._Current
+ || (ctx->Light.Enabled &&
+ ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
+ || ctx->Fog.ColorSumEnabled
+ || swrast->_FogEnabled) {
+ swrast->Line = aa_general_rgba_line;
+ }
+ else {
+ swrast->Line = aa_rgba_line;
+ }
+}
diff --git a/mesalib/src/mesa/swrast/s_aatriangle.c b/mesalib/src/mesa/swrast/s_aatriangle.c
index ad068d0c0..c68fdf63b 100644
--- a/mesalib/src/mesa/swrast/s_aatriangle.c
+++ b/mesalib/src/mesa/swrast/s_aatriangle.c
@@ -1,312 +1,312 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 1999-2007 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.
- */
-
-
-/*
- * Antialiased Triangle rasterizers
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/state.h"
-#include "s_aatriangle.h"
-#include "s_context.h"
-#include "s_span.h"
-
-
-/*
- * Compute coefficients of a plane using the X,Y coords of the v0, v1, v2
- * vertices and the given Z values.
- * A point (x,y,z) lies on plane iff a*x+b*y+c*z+d = 0.
- */
-static INLINE void
-compute_plane(const GLfloat v0[], const GLfloat v1[], const GLfloat v2[],
- GLfloat z0, GLfloat z1, GLfloat z2, GLfloat plane[4])
-{
- const GLfloat px = v1[0] - v0[0];
- const GLfloat py = v1[1] - v0[1];
- const GLfloat pz = z1 - z0;
-
- const GLfloat qx = v2[0] - v0[0];
- const GLfloat qy = v2[1] - v0[1];
- const GLfloat qz = z2 - z0;
-
- /* Crossproduct "(a,b,c):= dv1 x dv2" is orthogonal to plane. */
- const GLfloat a = py * qz - pz * qy;
- const GLfloat b = pz * qx - px * qz;
- const GLfloat c = px * qy - py * qx;
- /* Point on the plane = "r*(a,b,c) + w", with fixed "r" depending
- on the distance of plane from origin and arbitrary "w" parallel
- to the plane. */
- /* The scalar product "(r*(a,b,c)+w)*(a,b,c)" is "r*(a^2+b^2+c^2)",
- which is equal to "-d" below. */
- const GLfloat d = -(a * v0[0] + b * v0[1] + c * z0);
-
- plane[0] = a;
- plane[1] = b;
- plane[2] = c;
- plane[3] = d;
-}
-
-
-/*
- * Compute coefficients of a plane with a constant Z value.
- */
-static INLINE void
-constant_plane(GLfloat value, GLfloat plane[4])
-{
- plane[0] = 0.0;
- plane[1] = 0.0;
- plane[2] = -1.0;
- plane[3] = value;
-}
-
-#define CONSTANT_PLANE(VALUE, PLANE) \
-do { \
- PLANE[0] = 0.0F; \
- PLANE[1] = 0.0F; \
- PLANE[2] = -1.0F; \
- PLANE[3] = VALUE; \
-} while (0)
-
-
-
-/*
- * Solve plane equation for Z at (X,Y).
- */
-static INLINE GLfloat
-solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- ASSERT(plane[2] != 0.0F);
- return (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
-}
-
-
-#define SOLVE_PLANE(X, Y, PLANE) \
- ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2])
-
-
-/*
- * Return 1 / solve_plane().
- */
-static INLINE GLfloat
-solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y;
- if (denom == 0.0F)
- return 0.0F;
- else
- return -plane[2] / denom;
-}
-
-
-/*
- * Solve plane and return clamped GLchan value.
- */
-static INLINE GLchan
-solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
-{
- const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
-#if CHAN_TYPE == GL_FLOAT
- return CLAMP(z, 0.0F, CHAN_MAXF);
-#else
- if (z < 0)
- return 0;
- else if (z > CHAN_MAX)
- return CHAN_MAX;
- return (GLchan) IROUND_POS(z);
-#endif
-}
-
-
-static INLINE GLfloat
-plane_dx(const GLfloat plane[4])
-{
- return -plane[0] / plane[2];
-}
-
-static INLINE GLfloat
-plane_dy(const GLfloat plane[4])
-{
- return -plane[1] / plane[2];
-}
-
-
-
-/*
- * Compute how much (area) of the given pixel is inside the triangle.
- * Vertices MUST be specified in counter-clockwise order.
- * Return: coverage in [0, 1].
- */
-static GLfloat
-compute_coveragef(const GLfloat v0[3], const GLfloat v1[3],
- const GLfloat v2[3], GLint winx, GLint winy)
-{
- /* Given a position [0,3]x[0,3] return the sub-pixel sample position.
- * Contributed by Ray Tice.
- *
- * Jitter sample positions -
- * - average should be .5 in x & y for each column
- * - each of the 16 rows and columns should be used once
- * - the rectangle formed by the first four points
- * should contain the other points
- * - the distrubition should be fairly even in any given direction
- *
- * The pattern drawn below isn't optimal, but it's better than a regular
- * grid. In the drawing, the center of each subpixel is surrounded by
- * four dots. The "x" marks the jittered position relative to the
- * subpixel center.
- */
-#define POS(a, b) (0.5+a*4+b)/16
- static const GLfloat samples[16][2] = {
- /* start with the four corners */
- { POS(0, 2), POS(0, 0) },
- { POS(3, 3), POS(0, 2) },
- { POS(0, 0), POS(3, 1) },
- { POS(3, 1), POS(3, 3) },
- /* continue with interior samples */
- { POS(1, 1), POS(0, 1) },
- { POS(2, 0), POS(0, 3) },
- { POS(0, 3), POS(1, 3) },
- { POS(1, 2), POS(1, 0) },
- { POS(2, 3), POS(1, 2) },
- { POS(3, 2), POS(1, 1) },
- { POS(0, 1), POS(2, 2) },
- { POS(1, 0), POS(2, 1) },
- { POS(2, 1), POS(2, 3) },
- { POS(3, 0), POS(2, 0) },
- { POS(1, 3), POS(3, 0) },
- { POS(2, 2), POS(3, 2) }
- };
-
- const GLfloat x = (GLfloat) winx;
- const GLfloat y = (GLfloat) winy;
- const GLfloat dx0 = v1[0] - v0[0];
- const GLfloat dy0 = v1[1] - v0[1];
- const GLfloat dx1 = v2[0] - v1[0];
- const GLfloat dy1 = v2[1] - v1[1];
- const GLfloat dx2 = v0[0] - v2[0];
- const GLfloat dy2 = v0[1] - v2[1];
- GLint stop = 4, i;
- GLfloat insideCount = 16.0F;
-
- ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */
-
- for (i = 0; i < stop; i++) {
- const GLfloat sx = x + samples[i][0];
- const GLfloat sy = y + samples[i][1];
- /* cross product determines if sample is inside or outside each edge */
- GLfloat cross = (dx0 * (sy - v0[1]) - dy0 * (sx - v0[0]));
- /* Check if the sample is exactly on an edge. If so, let cross be a
- * positive or negative value depending on the direction of the edge.
- */
- if (cross == 0.0F)
- cross = dx0 + dy0;
- if (cross < 0.0F) {
- /* sample point is outside first edge */
- insideCount -= 1.0F;
- stop = 16;
- }
- else {
- /* sample point is inside first edge */
- cross = (dx1 * (sy - v1[1]) - dy1 * (sx - v1[0]));
- if (cross == 0.0F)
- cross = dx1 + dy1;
- if (cross < 0.0F) {
- /* sample point is outside second edge */
- insideCount -= 1.0F;
- stop = 16;
- }
- else {
- /* sample point is inside first and second edges */
- cross = (dx2 * (sy - v2[1]) - dy2 * (sx - v2[0]));
- if (cross == 0.0F)
- cross = dx2 + dy2;
- if (cross < 0.0F) {
- /* sample point is outside third edge */
- insideCount -= 1.0F;
- stop = 16;
- }
- }
- }
- }
- if (stop == 4)
- return 1.0F;
- else
- return insideCount * (1.0F / 16.0F);
-}
-
-
-
-static void
-rgba_aa_tri(struct gl_context *ctx,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2)
-{
-#define DO_Z
-#include "s_aatritemp.h"
-}
-
-
-static void
-general_aa_tri(struct gl_context *ctx,
- const SWvertex *v0,
- const SWvertex *v1,
- const SWvertex *v2)
-{
-#define DO_Z
-#define DO_ATTRIBS
-#include "s_aatritemp.h"
-}
-
-
-
-/*
- * Examine GL state and set swrast->Triangle to an
- * appropriate antialiased triangle rasterizer function.
- */
-void
-_swrast_set_aa_triangle_function(struct gl_context *ctx)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
-
- ASSERT(ctx->Polygon.SmoothFlag);
-
- if (ctx->Texture._EnabledCoordUnits != 0
- || ctx->FragmentProgram._Current
- || swrast->_FogEnabled
- || _mesa_need_secondary_color(ctx)) {
- SWRAST_CONTEXT(ctx)->Triangle = general_aa_tri;
- }
- else {
- SWRAST_CONTEXT(ctx)->Triangle = rgba_aa_tri;
- }
-
- ASSERT(SWRAST_CONTEXT(ctx)->Triangle);
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 1999-2007 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.
+ */
+
+
+/*
+ * Antialiased Triangle rasterizers
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/state.h"
+#include "s_aatriangle.h"
+#include "s_context.h"
+#include "s_span.h"
+
+
+/*
+ * Compute coefficients of a plane using the X,Y coords of the v0, v1, v2
+ * vertices and the given Z values.
+ * A point (x,y,z) lies on plane iff a*x+b*y+c*z+d = 0.
+ */
+static inline void
+compute_plane(const GLfloat v0[], const GLfloat v1[], const GLfloat v2[],
+ GLfloat z0, GLfloat z1, GLfloat z2, GLfloat plane[4])
+{
+ const GLfloat px = v1[0] - v0[0];
+ const GLfloat py = v1[1] - v0[1];
+ const GLfloat pz = z1 - z0;
+
+ const GLfloat qx = v2[0] - v0[0];
+ const GLfloat qy = v2[1] - v0[1];
+ const GLfloat qz = z2 - z0;
+
+ /* Crossproduct "(a,b,c):= dv1 x dv2" is orthogonal to plane. */
+ const GLfloat a = py * qz - pz * qy;
+ const GLfloat b = pz * qx - px * qz;
+ const GLfloat c = px * qy - py * qx;
+ /* Point on the plane = "r*(a,b,c) + w", with fixed "r" depending
+ on the distance of plane from origin and arbitrary "w" parallel
+ to the plane. */
+ /* The scalar product "(r*(a,b,c)+w)*(a,b,c)" is "r*(a^2+b^2+c^2)",
+ which is equal to "-d" below. */
+ const GLfloat d = -(a * v0[0] + b * v0[1] + c * z0);
+
+ plane[0] = a;
+ plane[1] = b;
+ plane[2] = c;
+ plane[3] = d;
+}
+
+
+/*
+ * Compute coefficients of a plane with a constant Z value.
+ */
+static inline void
+constant_plane(GLfloat value, GLfloat plane[4])
+{
+ plane[0] = 0.0;
+ plane[1] = 0.0;
+ plane[2] = -1.0;
+ plane[3] = value;
+}
+
+#define CONSTANT_PLANE(VALUE, PLANE) \
+do { \
+ PLANE[0] = 0.0F; \
+ PLANE[1] = 0.0F; \
+ PLANE[2] = -1.0F; \
+ PLANE[3] = VALUE; \
+} while (0)
+
+
+
+/*
+ * Solve plane equation for Z at (X,Y).
+ */
+static inline GLfloat
+solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ ASSERT(plane[2] != 0.0F);
+ return (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+}
+
+
+#define SOLVE_PLANE(X, Y, PLANE) \
+ ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2])
+
+
+/*
+ * Return 1 / solve_plane().
+ */
+static inline GLfloat
+solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y;
+ if (denom == 0.0F)
+ return 0.0F;
+ else
+ return -plane[2] / denom;
+}
+
+
+/*
+ * Solve plane and return clamped GLchan value.
+ */
+static inline GLchan
+solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4])
+{
+ const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2];
+#if CHAN_TYPE == GL_FLOAT
+ return CLAMP(z, 0.0F, CHAN_MAXF);
+#else
+ if (z < 0)
+ return 0;
+ else if (z > CHAN_MAX)
+ return CHAN_MAX;
+ return (GLchan) IROUND_POS(z);
+#endif
+}
+
+
+static inline GLfloat
+plane_dx(const GLfloat plane[4])
+{
+ return -plane[0] / plane[2];
+}
+
+static inline GLfloat
+plane_dy(const GLfloat plane[4])
+{
+ return -plane[1] / plane[2];
+}
+
+
+
+/*
+ * Compute how much (area) of the given pixel is inside the triangle.
+ * Vertices MUST be specified in counter-clockwise order.
+ * Return: coverage in [0, 1].
+ */
+static GLfloat
+compute_coveragef(const GLfloat v0[3], const GLfloat v1[3],
+ const GLfloat v2[3], GLint winx, GLint winy)
+{
+ /* Given a position [0,3]x[0,3] return the sub-pixel sample position.
+ * Contributed by Ray Tice.
+ *
+ * Jitter sample positions -
+ * - average should be .5 in x & y for each column
+ * - each of the 16 rows and columns should be used once
+ * - the rectangle formed by the first four points
+ * should contain the other points
+ * - the distrubition should be fairly even in any given direction
+ *
+ * The pattern drawn below isn't optimal, but it's better than a regular
+ * grid. In the drawing, the center of each subpixel is surrounded by
+ * four dots. The "x" marks the jittered position relative to the
+ * subpixel center.
+ */
+#define POS(a, b) (0.5+a*4+b)/16
+ static const GLfloat samples[16][2] = {
+ /* start with the four corners */
+ { POS(0, 2), POS(0, 0) },
+ { POS(3, 3), POS(0, 2) },
+ { POS(0, 0), POS(3, 1) },
+ { POS(3, 1), POS(3, 3) },
+ /* continue with interior samples */
+ { POS(1, 1), POS(0, 1) },
+ { POS(2, 0), POS(0, 3) },
+ { POS(0, 3), POS(1, 3) },
+ { POS(1, 2), POS(1, 0) },
+ { POS(2, 3), POS(1, 2) },
+ { POS(3, 2), POS(1, 1) },
+ { POS(0, 1), POS(2, 2) },
+ { POS(1, 0), POS(2, 1) },
+ { POS(2, 1), POS(2, 3) },
+ { POS(3, 0), POS(2, 0) },
+ { POS(1, 3), POS(3, 0) },
+ { POS(2, 2), POS(3, 2) }
+ };
+
+ const GLfloat x = (GLfloat) winx;
+ const GLfloat y = (GLfloat) winy;
+ const GLfloat dx0 = v1[0] - v0[0];
+ const GLfloat dy0 = v1[1] - v0[1];
+ const GLfloat dx1 = v2[0] - v1[0];
+ const GLfloat dy1 = v2[1] - v1[1];
+ const GLfloat dx2 = v0[0] - v2[0];
+ const GLfloat dy2 = v0[1] - v2[1];
+ GLint stop = 4, i;
+ GLfloat insideCount = 16.0F;
+
+ ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */
+
+ for (i = 0; i < stop; i++) {
+ const GLfloat sx = x + samples[i][0];
+ const GLfloat sy = y + samples[i][1];
+ /* cross product determines if sample is inside or outside each edge */
+ GLfloat cross = (dx0 * (sy - v0[1]) - dy0 * (sx - v0[0]));
+ /* Check if the sample is exactly on an edge. If so, let cross be a
+ * positive or negative value depending on the direction of the edge.
+ */
+ if (cross == 0.0F)
+ cross = dx0 + dy0;
+ if (cross < 0.0F) {
+ /* sample point is outside first edge */
+ insideCount -= 1.0F;
+ stop = 16;
+ }
+ else {
+ /* sample point is inside first edge */
+ cross = (dx1 * (sy - v1[1]) - dy1 * (sx - v1[0]));
+ if (cross == 0.0F)
+ cross = dx1 + dy1;
+ if (cross < 0.0F) {
+ /* sample point is outside second edge */
+ insideCount -= 1.0F;
+ stop = 16;
+ }
+ else {
+ /* sample point is inside first and second edges */
+ cross = (dx2 * (sy - v2[1]) - dy2 * (sx - v2[0]));
+ if (cross == 0.0F)
+ cross = dx2 + dy2;
+ if (cross < 0.0F) {
+ /* sample point is outside third edge */
+ insideCount -= 1.0F;
+ stop = 16;
+ }
+ }
+ }
+ }
+ if (stop == 4)
+ return 1.0F;
+ else
+ return insideCount * (1.0F / 16.0F);
+}
+
+
+
+static void
+rgba_aa_tri(struct gl_context *ctx,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2)
+{
+#define DO_Z
+#include "s_aatritemp.h"
+}
+
+
+static void
+general_aa_tri(struct gl_context *ctx,
+ const SWvertex *v0,
+ const SWvertex *v1,
+ const SWvertex *v2)
+{
+#define DO_Z
+#define DO_ATTRIBS
+#include "s_aatritemp.h"
+}
+
+
+
+/*
+ * Examine GL state and set swrast->Triangle to an
+ * appropriate antialiased triangle rasterizer function.
+ */
+void
+_swrast_set_aa_triangle_function(struct gl_context *ctx)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+ ASSERT(ctx->Polygon.SmoothFlag);
+
+ if (ctx->Texture._EnabledCoordUnits != 0
+ || ctx->FragmentProgram._Current
+ || swrast->_FogEnabled
+ || _mesa_need_secondary_color(ctx)) {
+ SWRAST_CONTEXT(ctx)->Triangle = general_aa_tri;
+ }
+ else {
+ SWRAST_CONTEXT(ctx)->Triangle = rgba_aa_tri;
+ }
+
+ ASSERT(SWRAST_CONTEXT(ctx)->Triangle);
+}
diff --git a/mesalib/src/mesa/swrast/s_blit.c b/mesalib/src/mesa/swrast/s_blit.c
index 7f53f19eb..f094be898 100644
--- a/mesalib/src/mesa/swrast/s_blit.c
+++ b/mesalib/src/mesa/swrast/s_blit.c
@@ -243,7 +243,7 @@ blit_nearest(struct gl_context *ctx,
#define LERP(T, A, B) ( (A) + (T) * ((B) - (A)) )
-static INLINE GLfloat
+static inline GLfloat
lerp_2d(GLfloat a, GLfloat b,
GLfloat v00, GLfloat v10, GLfloat v01, GLfloat v11)
{
diff --git a/mesalib/src/mesa/swrast/s_context.c b/mesalib/src/mesa/swrast/s_context.c
index a4acac233..5287671d7 100644
--- a/mesalib/src/mesa/swrast/s_context.c
+++ b/mesalib/src/mesa/swrast/s_context.c
@@ -780,17 +780,6 @@ _swrast_CreateContext( struct gl_context *ctx )
swrast->PointSpan.facing = 0;
swrast->PointSpan.array = swrast->SpanArrays;
- /* TexelBuffer is also global and normally shared by all SWspan instances;
- * when running with multiple threads, create one per thread.
- */
- swrast->TexelBuffer = (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads *
- MAX_WIDTH * 4 * sizeof(GLfloat));
- if (!swrast->TexelBuffer) {
- FREE(swrast->SpanArrays);
- FREE(swrast);
- return GL_FALSE;
- }
-
init_program_native_limits(&ctx->Const.VertexProgram);
init_program_native_limits(&ctx->Const.GeometryProgram);
init_program_native_limits(&ctx->Const.FragmentProgram);
diff --git a/mesalib/src/mesa/swrast/s_context.h b/mesalib/src/mesa/swrast/s_context.h
index 1e0bfc0f9..12ad688b0 100644
--- a/mesalib/src/mesa/swrast/s_context.h
+++ b/mesalib/src/mesa/swrast/s_context.h
@@ -163,14 +163,14 @@ struct swrast_texture_image
/** cast wrapper */
-static INLINE struct swrast_texture_image *
+static inline struct swrast_texture_image *
swrast_texture_image(struct gl_texture_image *img)
{
return (struct swrast_texture_image *) img;
}
/** cast wrapper */
-static INLINE const struct swrast_texture_image *
+static inline const struct swrast_texture_image *
swrast_texture_image_const(const struct gl_texture_image *img)
{
return (const struct swrast_texture_image *) img;
@@ -308,14 +308,14 @@ _swrast_update_texture_samplers(struct gl_context *ctx);
/** Return SWcontext for the given struct gl_context */
-static INLINE SWcontext *
+static inline SWcontext *
SWRAST_CONTEXT(struct gl_context *ctx)
{
return (SWcontext *) ctx->swrast_context;
}
/** const version of above */
-static INLINE const SWcontext *
+static inline const SWcontext *
CONST_SWRAST_CONTEXT(const struct gl_context *ctx)
{
return (const SWcontext *) ctx->swrast_context;
@@ -327,7 +327,7 @@ CONST_SWRAST_CONTEXT(const struct gl_context *ctx)
* For drivers that rely on swrast for fallback rendering, this is the
* driver's opportunity to map renderbuffers and textures.
*/
-static INLINE void
+static inline void
swrast_render_start(struct gl_context *ctx)
{
SWcontext *swrast = SWRAST_CONTEXT(ctx);
@@ -337,7 +337,7 @@ swrast_render_start(struct gl_context *ctx)
/** Called after framebuffer reading/writing */
-static INLINE void
+static inline void
swrast_render_finish(struct gl_context *ctx)
{
SWcontext *swrast = SWRAST_CONTEXT(ctx);
diff --git a/mesalib/src/mesa/swrast/s_fragprog.c b/mesalib/src/mesa/swrast/s_fragprog.c
index 9513b1c46..7f205a200 100644
--- a/mesalib/src/mesa/swrast/s_fragprog.c
+++ b/mesalib/src/mesa/swrast/s_fragprog.c
@@ -35,7 +35,7 @@
* Apply texture object's swizzle (X/Y/Z/W/0/1) to incoming 'texel'
* and return results in 'colorOut'.
*/
-static INLINE void
+static inline void
swizzle_texel(const GLfloat texel[4], GLfloat colorOut[4], GLuint swizzle)
{
if (swizzle == SWIZZLE_NOOP) {
diff --git a/mesalib/src/mesa/swrast/s_logic.c b/mesalib/src/mesa/swrast/s_logic.c
index 2f0c0ea7c..80ee46c24 100644
--- a/mesalib/src/mesa/swrast/s_logic.c
+++ b/mesalib/src/mesa/swrast/s_logic.c
@@ -1,219 +1,219 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.2
- *
- * Copyright (C) 1999-2006 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.
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/imports.h"
-#include "main/macros.h"
-
-#include "s_context.h"
-#include "s_logic.h"
-#include "s_span.h"
-
-
-/**
- * We do all logic ops on 4-byte GLuints.
- * Depending on bytes per pixel, the mask array elements correspond to
- * 1, 2 or 4 GLuints.
- */
-#define LOGIC_OP_LOOP(MODE, MASKSTRIDE) \
-do { \
- GLuint i; \
- switch (MODE) { \
- case GL_CLEAR: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = 0; \
- } \
- } \
- break; \
- case GL_SET: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~0; \
- } \
- } \
- break; \
- case GL_COPY: \
- /* do nothing */ \
- break; \
- case GL_COPY_INVERTED: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~src[i]; \
- } \
- } \
- break; \
- case GL_NOOP: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = dest[i]; \
- } \
- } \
- break; \
- case GL_INVERT: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~dest[i]; \
- } \
- } \
- break; \
- case GL_AND: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] &= dest[i]; \
- } \
- } \
- break; \
- case GL_NAND: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~(src[i] & dest[i]); \
- } \
- } \
- break; \
- case GL_OR: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] |= dest[i]; \
- } \
- } \
- break; \
- case GL_NOR: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~(src[i] | dest[i]); \
- } \
- } \
- break; \
- case GL_XOR: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] ^= dest[i]; \
- } \
- } \
- break; \
- case GL_EQUIV: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~(src[i] ^ dest[i]); \
- } \
- } \
- break; \
- case GL_AND_REVERSE: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = src[i] & ~dest[i]; \
- } \
- } \
- break; \
- case GL_AND_INVERTED: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~src[i] & dest[i]; \
- } \
- } \
- break; \
- case GL_OR_REVERSE: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = src[i] | ~dest[i]; \
- } \
- } \
- break; \
- case GL_OR_INVERTED: \
- for (i = 0; i < n; i++) { \
- if (mask[i / MASKSTRIDE]) { \
- src[i] = ~src[i] | dest[i]; \
- } \
- } \
- break; \
- default: \
- _mesa_problem(ctx, "bad logicop mode");\
- } \
-} while (0)
-
-
-
-static INLINE void
-logicop_uint1(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
- const GLubyte mask[])
-{
- LOGIC_OP_LOOP(ctx->Color.LogicOp, 1);
-}
-
-
-static INLINE void
-logicop_uint2(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
- const GLubyte mask[])
-{
- LOGIC_OP_LOOP(ctx->Color.LogicOp, 2);
-}
-
-
-static INLINE void
-logicop_uint4(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
- const GLubyte mask[])
-{
- LOGIC_OP_LOOP(ctx->Color.LogicOp, 4);
-}
-
-
-
-/**
- * Apply the current logic operator to a span of RGBA pixels.
- * We can handle horizontal runs of pixels (spans) or arrays of x/y
- * pixel coordinates.
- */
-void
-_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
- SWspan *span)
-{
- void *rbPixels;
-
- ASSERT(span->end < MAX_WIDTH);
- ASSERT(span->arrayMask & SPAN_RGBA);
- ASSERT(rb->DataType == span->array->ChanType);
-
- rbPixels = _swrast_get_dest_rgba(ctx, rb, span);
-
- if (span->array->ChanType == GL_UNSIGNED_BYTE) {
- /* treat 4*GLubyte as GLuint */
- logicop_uint1(ctx, span->end,
- (GLuint *) span->array->rgba8,
- (const GLuint *) rbPixels, span->array->mask);
- }
- else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
- /* treat 2*GLushort as GLuint */
- logicop_uint2(ctx, 2 * span->end,
- (GLuint *) span->array->rgba16,
- (const GLuint *) rbPixels, span->array->mask);
- }
- else {
- logicop_uint4(ctx, 4 * span->end,
- (GLuint *) span->array->attribs[FRAG_ATTRIB_COL0],
- (const GLuint *) rbPixels, span->array->mask);
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.2
+ *
+ * Copyright (C) 1999-2006 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.
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/imports.h"
+#include "main/macros.h"
+
+#include "s_context.h"
+#include "s_logic.h"
+#include "s_span.h"
+
+
+/**
+ * We do all logic ops on 4-byte GLuints.
+ * Depending on bytes per pixel, the mask array elements correspond to
+ * 1, 2 or 4 GLuints.
+ */
+#define LOGIC_OP_LOOP(MODE, MASKSTRIDE) \
+do { \
+ GLuint i; \
+ switch (MODE) { \
+ case GL_CLEAR: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = 0; \
+ } \
+ } \
+ break; \
+ case GL_SET: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~0; \
+ } \
+ } \
+ break; \
+ case GL_COPY: \
+ /* do nothing */ \
+ break; \
+ case GL_COPY_INVERTED: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~src[i]; \
+ } \
+ } \
+ break; \
+ case GL_NOOP: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_INVERT: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_AND: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] &= dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_NAND: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~(src[i] & dest[i]); \
+ } \
+ } \
+ break; \
+ case GL_OR: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] |= dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_NOR: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~(src[i] | dest[i]); \
+ } \
+ } \
+ break; \
+ case GL_XOR: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] ^= dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_EQUIV: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~(src[i] ^ dest[i]); \
+ } \
+ } \
+ break; \
+ case GL_AND_REVERSE: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = src[i] & ~dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_AND_INVERTED: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~src[i] & dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_OR_REVERSE: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = src[i] | ~dest[i]; \
+ } \
+ } \
+ break; \
+ case GL_OR_INVERTED: \
+ for (i = 0; i < n; i++) { \
+ if (mask[i / MASKSTRIDE]) { \
+ src[i] = ~src[i] | dest[i]; \
+ } \
+ } \
+ break; \
+ default: \
+ _mesa_problem(ctx, "bad logicop mode");\
+ } \
+} while (0)
+
+
+
+static inline void
+logicop_uint1(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
+ const GLubyte mask[])
+{
+ LOGIC_OP_LOOP(ctx->Color.LogicOp, 1);
+}
+
+
+static inline void
+logicop_uint2(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
+ const GLubyte mask[])
+{
+ LOGIC_OP_LOOP(ctx->Color.LogicOp, 2);
+}
+
+
+static inline void
+logicop_uint4(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[],
+ const GLubyte mask[])
+{
+ LOGIC_OP_LOOP(ctx->Color.LogicOp, 4);
+}
+
+
+
+/**
+ * Apply the current logic operator to a span of RGBA pixels.
+ * We can handle horizontal runs of pixels (spans) or arrays of x/y
+ * pixel coordinates.
+ */
+void
+_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ SWspan *span)
+{
+ void *rbPixels;
+
+ ASSERT(span->end < MAX_WIDTH);
+ ASSERT(span->arrayMask & SPAN_RGBA);
+ ASSERT(rb->DataType == span->array->ChanType);
+
+ rbPixels = _swrast_get_dest_rgba(ctx, rb, span);
+
+ if (span->array->ChanType == GL_UNSIGNED_BYTE) {
+ /* treat 4*GLubyte as GLuint */
+ logicop_uint1(ctx, span->end,
+ (GLuint *) span->array->rgba8,
+ (const GLuint *) rbPixels, span->array->mask);
+ }
+ else if (span->array->ChanType == GL_UNSIGNED_SHORT) {
+ /* treat 2*GLushort as GLuint */
+ logicop_uint2(ctx, 2 * span->end,
+ (GLuint *) span->array->rgba16,
+ (const GLuint *) rbPixels, span->array->mask);
+ }
+ else {
+ logicop_uint4(ctx, 4 * span->end,
+ (GLuint *) span->array->attribs[FRAG_ATTRIB_COL0],
+ (const GLuint *) rbPixels, span->array->mask);
+ }
+}
diff --git a/mesalib/src/mesa/swrast/s_points.c b/mesalib/src/mesa/swrast/s_points.c
index a46be8f58..11b7ef7b1 100644
--- a/mesalib/src/mesa/swrast/s_points.c
+++ b/mesalib/src/mesa/swrast/s_points.c
@@ -1,572 +1,572 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 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.
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "s_context.h"
-#include "s_feedback.h"
-#include "s_points.h"
-#include "s_span.h"
-
-
-/**
- * Used to cull points with invalid coords
- */
-#define CULL_INVALID(V) \
- do { \
- float tmp = (V)->attrib[FRAG_ATTRIB_WPOS][0] \
- + (V)->attrib[FRAG_ATTRIB_WPOS][1]; \
- if (IS_INF_OR_NAN(tmp)) \
- return; \
- } while(0)
-
-
-
-/**
- * Get/compute the point size.
- * The size may come from a vertex shader, or computed with attentuation
- * or just the glPointSize value.
- * Must also clamp to user-defined range and implmentation limits.
- */
-static INLINE GLfloat
-get_size(const struct gl_context *ctx, const SWvertex *vert, GLboolean smoothed)
-{
- GLfloat size;
-
- if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
- /* use vertex's point size */
- size = vert->pointSize;
- }
- else {
- /* use constant point size */
- size = ctx->Point.Size;
- }
- /* always clamp to user-specified limits */
- size = CLAMP(size, ctx->Point.MinSize, ctx->Point.MaxSize);
- /* clamp to implementation limits */
- if (smoothed)
- size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA);
- else
- size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize);
-
- return size;
-}
-
-
-/**
- * Draw a point sprite
- */
-static void
-sprite_point(struct gl_context *ctx, const SWvertex *vert)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- SWspan span;
- GLfloat size;
- GLuint tCoords[MAX_TEXTURE_COORD_UNITS + 1];
- GLuint numTcoords = 0;
- GLfloat t0, dtdy;
-
- CULL_INVALID(vert);
-
- /* z coord */
- if (ctx->DrawBuffer->Visual.depthBits <= 16)
- span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- else
- span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- span.zStep = 0;
-
- size = get_size(ctx, vert, GL_FALSE);
-
- /* span init */
- INIT_SPAN(span, GL_POINT);
- span.interpMask = SPAN_Z | SPAN_RGBA;
-
- span.facing = swrast->PointLineFacing;
-
- span.red = ChanToFixed(vert->color[0]);
- span.green = ChanToFixed(vert->color[1]);
- span.blue = ChanToFixed(vert->color[2]);
- span.alpha = ChanToFixed(vert->color[3]);
- span.redStep = 0;
- span.greenStep = 0;
- span.blueStep = 0;
- span.alphaStep = 0;
-
- /* need these for fragment programs */
- span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
- span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
- span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
-
- {
- GLfloat s, r, dsdx;
-
- /* texcoord / pointcoord interpolants */
- s = 0.0F;
- dsdx = 1.0F / size;
- if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) {
- dtdy = 1.0F / size;
- t0 = 0.5F * dtdy;
- }
- else {
- /* GL_UPPER_LEFT */
- dtdy = -1.0F / size;
- t0 = 1.0F + 0.5F * dtdy;
- }
-
- ATTRIB_LOOP_BEGIN
- if (attr >= FRAG_ATTRIB_TEX0 && attr <= FRAG_ATTRIB_TEX7) {
- /* a texcoord attribute */
- const GLuint u = attr - FRAG_ATTRIB_TEX0;
- ASSERT(u < Elements(ctx->Point.CoordReplace));
- if (ctx->Point.CoordReplace[u]) {
- tCoords[numTcoords++] = attr;
-
- if (ctx->Point.SpriteRMode == GL_ZERO)
- r = 0.0F;
- else if (ctx->Point.SpriteRMode == GL_S)
- r = vert->attrib[attr][0];
- else /* GL_R */
- r = vert->attrib[attr][2];
-
- span.attrStart[attr][0] = s;
- span.attrStart[attr][1] = 0.0; /* overwritten below */
- span.attrStart[attr][2] = r;
- span.attrStart[attr][3] = 1.0;
-
- span.attrStepX[attr][0] = dsdx;
- span.attrStepX[attr][1] = 0.0;
- span.attrStepX[attr][2] = 0.0;
- span.attrStepX[attr][3] = 0.0;
-
- span.attrStepY[attr][0] = 0.0;
- span.attrStepY[attr][1] = dtdy;
- span.attrStepY[attr][2] = 0.0;
- span.attrStepY[attr][3] = 0.0;
-
- continue;
- }
- }
- else if (attr == FRAG_ATTRIB_PNTC) {
- /* GLSL gl_PointCoord.xy (.zw undefined) */
- span.attrStart[FRAG_ATTRIB_PNTC][0] = 0.0;
- span.attrStart[FRAG_ATTRIB_PNTC][1] = 0.0; /* t0 set below */
- span.attrStepX[FRAG_ATTRIB_PNTC][0] = dsdx;
- span.attrStepX[FRAG_ATTRIB_PNTC][1] = 0.0;
- span.attrStepY[FRAG_ATTRIB_PNTC][0] = 0.0;
- span.attrStepY[FRAG_ATTRIB_PNTC][1] = dtdy;
- tCoords[numTcoords++] = FRAG_ATTRIB_PNTC;
- continue;
- }
- /* use vertex's texcoord/attrib */
- COPY_4V(span.attrStart[attr], vert->attrib[attr]);
- ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
- ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
- ATTRIB_LOOP_END;
- }
-
- /* compute pos, bounds and render */
- {
- const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
- const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
- GLint iSize = (GLint) (size + 0.5F);
- GLint xmin, xmax, ymin, ymax, iy;
- GLint iRadius;
- GLfloat tcoord = t0;
-
- iSize = MAX2(1, iSize);
- iRadius = iSize / 2;
-
- if (iSize & 1) {
- /* odd size */
- xmin = (GLint) (x - iRadius);
- xmax = (GLint) (x + iRadius);
- ymin = (GLint) (y - iRadius);
- ymax = (GLint) (y + iRadius);
- }
- else {
- /* even size */
- /* 0.501 factor allows conformance to pass */
- xmin = (GLint) (x + 0.501) - iRadius;
- xmax = xmin + iSize - 1;
- ymin = (GLint) (y + 0.501) - iRadius;
- ymax = ymin + iSize - 1;
- }
-
- /* render spans */
- for (iy = ymin; iy <= ymax; iy++) {
- GLuint i;
- /* setup texcoord T for this row */
- for (i = 0; i < numTcoords; i++) {
- span.attrStart[tCoords[i]][1] = tcoord;
- }
-
- /* these might get changed by span clipping */
- span.x = xmin;
- span.y = iy;
- span.end = xmax - xmin + 1;
-
- _swrast_write_rgba_span(ctx, &span);
-
- tcoord += dtdy;
- }
- }
-}
-
-
-/**
- * Draw smooth/antialiased point. RGB or CI mode.
- */
-static void
-smooth_point(struct gl_context *ctx, const SWvertex *vert)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- SWspan span;
- GLfloat size, alphaAtten;
-
- CULL_INVALID(vert);
-
- /* z coord */
- if (ctx->DrawBuffer->Visual.depthBits <= 16)
- span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- else
- span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- span.zStep = 0;
-
- size = get_size(ctx, vert, GL_TRUE);
-
- /* alpha attenuation / fade factor */
- if (ctx->Multisample._Enabled) {
- if (vert->pointSize >= ctx->Point.Threshold) {
- alphaAtten = 1.0F;
- }
- else {
- GLfloat dsize = vert->pointSize / ctx->Point.Threshold;
- alphaAtten = dsize * dsize;
- }
- }
- else {
- alphaAtten = 1.0;
- }
- (void) alphaAtten; /* not used */
-
- /* span init */
- INIT_SPAN(span, GL_POINT);
- span.interpMask = SPAN_Z | SPAN_RGBA;
- span.arrayMask = SPAN_COVERAGE | SPAN_MASK;
-
- span.facing = swrast->PointLineFacing;
-
- span.red = ChanToFixed(vert->color[0]);
- span.green = ChanToFixed(vert->color[1]);
- span.blue = ChanToFixed(vert->color[2]);
- span.alpha = ChanToFixed(vert->color[3]);
- span.redStep = 0;
- span.greenStep = 0;
- span.blueStep = 0;
- span.alphaStep = 0;
-
- /* need these for fragment programs */
- span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
- span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
- span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
-
- ATTRIB_LOOP_BEGIN
- COPY_4V(span.attrStart[attr], vert->attrib[attr]);
- ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
- ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
- ATTRIB_LOOP_END
-
- /* compute pos, bounds and render */
- {
- const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
- const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
- const GLfloat radius = 0.5F * size;
- const GLfloat rmin = radius - 0.7071F; /* 0.7071 = sqrt(2)/2 */
- const GLfloat rmax = radius + 0.7071F;
- const GLfloat rmin2 = MAX2(0.0F, rmin * rmin);
- const GLfloat rmax2 = rmax * rmax;
- const GLfloat cscale = 1.0F / (rmax2 - rmin2);
- const GLint xmin = (GLint) (x - radius);
- const GLint xmax = (GLint) (x + radius);
- const GLint ymin = (GLint) (y - radius);
- const GLint ymax = (GLint) (y + radius);
- GLint ix, iy;
-
- for (iy = ymin; iy <= ymax; iy++) {
-
- /* these might get changed by span clipping */
- span.x = xmin;
- span.y = iy;
- span.end = xmax - xmin + 1;
-
- /* compute coverage for each pixel in span */
- for (ix = xmin; ix <= xmax; ix++) {
- const GLfloat dx = ix - x + 0.5F;
- const GLfloat dy = iy - y + 0.5F;
- const GLfloat dist2 = dx * dx + dy * dy;
- GLfloat coverage;
-
- if (dist2 < rmax2) {
- if (dist2 >= rmin2) {
- /* compute partial coverage */
- coverage = 1.0F - (dist2 - rmin2) * cscale;
- }
- else {
- /* full coverage */
- coverage = 1.0F;
- }
- span.array->mask[ix - xmin] = 1;
- }
- else {
- /* zero coverage - fragment outside the radius */
- coverage = 0.0;
- span.array->mask[ix - xmin] = 0;
- }
- span.array->coverage[ix - xmin] = coverage;
- }
-
- /* render span */
- _swrast_write_rgba_span(ctx, &span);
-
- }
- }
-}
-
-
-/**
- * Draw large (size >= 1) non-AA point. RGB or CI mode.
- */
-static void
-large_point(struct gl_context *ctx, const SWvertex *vert)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- SWspan span;
- GLfloat size;
-
- CULL_INVALID(vert);
-
- /* z coord */
- if (ctx->DrawBuffer->Visual.depthBits <= 16)
- span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- else
- span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
- span.zStep = 0;
-
- size = get_size(ctx, vert, GL_FALSE);
-
- /* span init */
- INIT_SPAN(span, GL_POINT);
- span.arrayMask = SPAN_XY;
- span.facing = swrast->PointLineFacing;
-
- span.interpMask = SPAN_Z | SPAN_RGBA;
- span.red = ChanToFixed(vert->color[0]);
- span.green = ChanToFixed(vert->color[1]);
- span.blue = ChanToFixed(vert->color[2]);
- span.alpha = ChanToFixed(vert->color[3]);
- span.redStep = 0;
- span.greenStep = 0;
- span.blueStep = 0;
- span.alphaStep = 0;
-
- /* need these for fragment programs */
- span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
- span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
- span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
-
- ATTRIB_LOOP_BEGIN
- COPY_4V(span.attrStart[attr], vert->attrib[attr]);
- ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
- ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
- ATTRIB_LOOP_END
-
- /* compute pos, bounds and render */
- {
- const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
- const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
- GLint iSize = (GLint) (size + 0.5F);
- GLint xmin, xmax, ymin, ymax, ix, iy;
- GLint iRadius;
-
- iSize = MAX2(1, iSize);
- iRadius = iSize / 2;
-
- if (iSize & 1) {
- /* odd size */
- xmin = (GLint) (x - iRadius);
- xmax = (GLint) (x + iRadius);
- ymin = (GLint) (y - iRadius);
- ymax = (GLint) (y + iRadius);
- }
- else {
- /* even size */
- /* 0.501 factor allows conformance to pass */
- xmin = (GLint) (x + 0.501) - iRadius;
- xmax = xmin + iSize - 1;
- ymin = (GLint) (y + 0.501) - iRadius;
- ymax = ymin + iSize - 1;
- }
-
- /* generate fragments */
- span.end = 0;
- for (iy = ymin; iy <= ymax; iy++) {
- for (ix = xmin; ix <= xmax; ix++) {
- span.array->x[span.end] = ix;
- span.array->y[span.end] = iy;
- span.end++;
- }
- }
- assert(span.end <= MAX_WIDTH);
- _swrast_write_rgba_span(ctx, &span);
- }
-}
-
-
-/**
- * Draw size=1, single-pixel point
- */
-static void
-pixel_point(struct gl_context *ctx, const SWvertex *vert)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- /*
- * Note that unlike the other functions, we put single-pixel points
- * into a special span array in order to render as many points as
- * possible with a single _swrast_write_rgba_span() call.
- */
- SWspan *span = &(swrast->PointSpan);
- GLuint count;
-
- CULL_INVALID(vert);
-
- /* Span init */
- span->interpMask = 0;
- span->arrayMask = SPAN_XY | SPAN_Z;
- span->arrayMask |= SPAN_RGBA;
- /*span->arrayMask |= SPAN_LAMBDA;*/
- span->arrayAttribs = swrast->_ActiveAttribMask; /* we'll produce these vals */
-
- /* need these for fragment programs */
- span->attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
- span->attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
- span->attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
-
- /* check if we need to flush */
- if (span->end >= MAX_WIDTH ||
- (swrast->_RasterMask & (BLEND_BIT | LOGIC_OP_BIT | MASKING_BIT)) ||
- span->facing != swrast->PointLineFacing) {
- if (span->end > 0) {
- _swrast_write_rgba_span(ctx, span);
- span->end = 0;
- }
- }
-
- count = span->end;
-
- span->facing = swrast->PointLineFacing;
-
- /* fragment attributes */
- span->array->rgba[count][RCOMP] = vert->color[0];
- span->array->rgba[count][GCOMP] = vert->color[1];
- span->array->rgba[count][BCOMP] = vert->color[2];
- span->array->rgba[count][ACOMP] = vert->color[3];
-
- ATTRIB_LOOP_BEGIN
- COPY_4V(span->array->attribs[attr][count], vert->attrib[attr]);
- ATTRIB_LOOP_END
-
- /* fragment position */
- span->array->x[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][0];
- span->array->y[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][1];
- span->array->z[count] = (GLint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
-
- span->end = count + 1;
- ASSERT(span->end <= MAX_WIDTH);
-}
-
-
-/**
- * Add specular color to primary color, draw point, restore original
- * primary color.
- */
-void
-_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0)
-{
- SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */
- GLfloat rSum, gSum, bSum;
- GLchan cSave[4];
-
- /* save */
- COPY_CHAN4(cSave, ncv0->color);
- /* sum */
- rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0];
- gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1];
- bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2];
- UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum);
- UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum);
- UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum);
- /* draw */
- SWRAST_CONTEXT(ctx)->SpecPoint(ctx, ncv0);
- /* restore */
- COPY_CHAN4(ncv0->color, cSave);
-}
-
-
-/**
- * Examine current state to determine which point drawing function to use.
- */
-void
-_swrast_choose_point(struct gl_context *ctx)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- const GLfloat size = CLAMP(ctx->Point.Size,
- ctx->Point.MinSize,
- ctx->Point.MaxSize);
-
- if (ctx->RenderMode == GL_RENDER) {
- if (ctx->Point.PointSprite) {
- swrast->Point = sprite_point;
- }
- else if (ctx->Point.SmoothFlag) {
- swrast->Point = smooth_point;
- }
- else if (size > 1.0 ||
- ctx->Point._Attenuated ||
- ctx->VertexProgram.PointSizeEnabled) {
- swrast->Point = large_point;
- }
- else {
- swrast->Point = pixel_point;
- }
- }
- else if (ctx->RenderMode == GL_FEEDBACK) {
- swrast->Point = _swrast_feedback_point;
- }
- else {
- /* GL_SELECT mode */
- swrast->Point = _swrast_select_point;
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 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.
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "s_context.h"
+#include "s_feedback.h"
+#include "s_points.h"
+#include "s_span.h"
+
+
+/**
+ * Used to cull points with invalid coords
+ */
+#define CULL_INVALID(V) \
+ do { \
+ float tmp = (V)->attrib[FRAG_ATTRIB_WPOS][0] \
+ + (V)->attrib[FRAG_ATTRIB_WPOS][1]; \
+ if (IS_INF_OR_NAN(tmp)) \
+ return; \
+ } while(0)
+
+
+
+/**
+ * Get/compute the point size.
+ * The size may come from a vertex shader, or computed with attentuation
+ * or just the glPointSize value.
+ * Must also clamp to user-defined range and implmentation limits.
+ */
+static inline GLfloat
+get_size(const struct gl_context *ctx, const SWvertex *vert, GLboolean smoothed)
+{
+ GLfloat size;
+
+ if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) {
+ /* use vertex's point size */
+ size = vert->pointSize;
+ }
+ else {
+ /* use constant point size */
+ size = ctx->Point.Size;
+ }
+ /* always clamp to user-specified limits */
+ size = CLAMP(size, ctx->Point.MinSize, ctx->Point.MaxSize);
+ /* clamp to implementation limits */
+ if (smoothed)
+ size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA);
+ else
+ size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize);
+
+ return size;
+}
+
+
+/**
+ * Draw a point sprite
+ */
+static void
+sprite_point(struct gl_context *ctx, const SWvertex *vert)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ SWspan span;
+ GLfloat size;
+ GLuint tCoords[MAX_TEXTURE_COORD_UNITS + 1];
+ GLuint numTcoords = 0;
+ GLfloat t0, dtdy;
+
+ CULL_INVALID(vert);
+
+ /* z coord */
+ if (ctx->DrawBuffer->Visual.depthBits <= 16)
+ span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ else
+ span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ span.zStep = 0;
+
+ size = get_size(ctx, vert, GL_FALSE);
+
+ /* span init */
+ INIT_SPAN(span, GL_POINT);
+ span.interpMask = SPAN_Z | SPAN_RGBA;
+
+ span.facing = swrast->PointLineFacing;
+
+ span.red = ChanToFixed(vert->color[0]);
+ span.green = ChanToFixed(vert->color[1]);
+ span.blue = ChanToFixed(vert->color[2]);
+ span.alpha = ChanToFixed(vert->color[3]);
+ span.redStep = 0;
+ span.greenStep = 0;
+ span.blueStep = 0;
+ span.alphaStep = 0;
+
+ /* need these for fragment programs */
+ span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
+ span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
+ span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
+
+ {
+ GLfloat s, r, dsdx;
+
+ /* texcoord / pointcoord interpolants */
+ s = 0.0F;
+ dsdx = 1.0F / size;
+ if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) {
+ dtdy = 1.0F / size;
+ t0 = 0.5F * dtdy;
+ }
+ else {
+ /* GL_UPPER_LEFT */
+ dtdy = -1.0F / size;
+ t0 = 1.0F + 0.5F * dtdy;
+ }
+
+ ATTRIB_LOOP_BEGIN
+ if (attr >= FRAG_ATTRIB_TEX0 && attr <= FRAG_ATTRIB_TEX7) {
+ /* a texcoord attribute */
+ const GLuint u = attr - FRAG_ATTRIB_TEX0;
+ ASSERT(u < Elements(ctx->Point.CoordReplace));
+ if (ctx->Point.CoordReplace[u]) {
+ tCoords[numTcoords++] = attr;
+
+ if (ctx->Point.SpriteRMode == GL_ZERO)
+ r = 0.0F;
+ else if (ctx->Point.SpriteRMode == GL_S)
+ r = vert->attrib[attr][0];
+ else /* GL_R */
+ r = vert->attrib[attr][2];
+
+ span.attrStart[attr][0] = s;
+ span.attrStart[attr][1] = 0.0; /* overwritten below */
+ span.attrStart[attr][2] = r;
+ span.attrStart[attr][3] = 1.0;
+
+ span.attrStepX[attr][0] = dsdx;
+ span.attrStepX[attr][1] = 0.0;
+ span.attrStepX[attr][2] = 0.0;
+ span.attrStepX[attr][3] = 0.0;
+
+ span.attrStepY[attr][0] = 0.0;
+ span.attrStepY[attr][1] = dtdy;
+ span.attrStepY[attr][2] = 0.0;
+ span.attrStepY[attr][3] = 0.0;
+
+ continue;
+ }
+ }
+ else if (attr == FRAG_ATTRIB_PNTC) {
+ /* GLSL gl_PointCoord.xy (.zw undefined) */
+ span.attrStart[FRAG_ATTRIB_PNTC][0] = 0.0;
+ span.attrStart[FRAG_ATTRIB_PNTC][1] = 0.0; /* t0 set below */
+ span.attrStepX[FRAG_ATTRIB_PNTC][0] = dsdx;
+ span.attrStepX[FRAG_ATTRIB_PNTC][1] = 0.0;
+ span.attrStepY[FRAG_ATTRIB_PNTC][0] = 0.0;
+ span.attrStepY[FRAG_ATTRIB_PNTC][1] = dtdy;
+ tCoords[numTcoords++] = FRAG_ATTRIB_PNTC;
+ continue;
+ }
+ /* use vertex's texcoord/attrib */
+ COPY_4V(span.attrStart[attr], vert->attrib[attr]);
+ ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
+ ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
+ ATTRIB_LOOP_END;
+ }
+
+ /* compute pos, bounds and render */
+ {
+ const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
+ const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
+ GLint iSize = (GLint) (size + 0.5F);
+ GLint xmin, xmax, ymin, ymax, iy;
+ GLint iRadius;
+ GLfloat tcoord = t0;
+
+ iSize = MAX2(1, iSize);
+ iRadius = iSize / 2;
+
+ if (iSize & 1) {
+ /* odd size */
+ xmin = (GLint) (x - iRadius);
+ xmax = (GLint) (x + iRadius);
+ ymin = (GLint) (y - iRadius);
+ ymax = (GLint) (y + iRadius);
+ }
+ else {
+ /* even size */
+ /* 0.501 factor allows conformance to pass */
+ xmin = (GLint) (x + 0.501) - iRadius;
+ xmax = xmin + iSize - 1;
+ ymin = (GLint) (y + 0.501) - iRadius;
+ ymax = ymin + iSize - 1;
+ }
+
+ /* render spans */
+ for (iy = ymin; iy <= ymax; iy++) {
+ GLuint i;
+ /* setup texcoord T for this row */
+ for (i = 0; i < numTcoords; i++) {
+ span.attrStart[tCoords[i]][1] = tcoord;
+ }
+
+ /* these might get changed by span clipping */
+ span.x = xmin;
+ span.y = iy;
+ span.end = xmax - xmin + 1;
+
+ _swrast_write_rgba_span(ctx, &span);
+
+ tcoord += dtdy;
+ }
+ }
+}
+
+
+/**
+ * Draw smooth/antialiased point. RGB or CI mode.
+ */
+static void
+smooth_point(struct gl_context *ctx, const SWvertex *vert)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ SWspan span;
+ GLfloat size, alphaAtten;
+
+ CULL_INVALID(vert);
+
+ /* z coord */
+ if (ctx->DrawBuffer->Visual.depthBits <= 16)
+ span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ else
+ span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ span.zStep = 0;
+
+ size = get_size(ctx, vert, GL_TRUE);
+
+ /* alpha attenuation / fade factor */
+ if (ctx->Multisample._Enabled) {
+ if (vert->pointSize >= ctx->Point.Threshold) {
+ alphaAtten = 1.0F;
+ }
+ else {
+ GLfloat dsize = vert->pointSize / ctx->Point.Threshold;
+ alphaAtten = dsize * dsize;
+ }
+ }
+ else {
+ alphaAtten = 1.0;
+ }
+ (void) alphaAtten; /* not used */
+
+ /* span init */
+ INIT_SPAN(span, GL_POINT);
+ span.interpMask = SPAN_Z | SPAN_RGBA;
+ span.arrayMask = SPAN_COVERAGE | SPAN_MASK;
+
+ span.facing = swrast->PointLineFacing;
+
+ span.red = ChanToFixed(vert->color[0]);
+ span.green = ChanToFixed(vert->color[1]);
+ span.blue = ChanToFixed(vert->color[2]);
+ span.alpha = ChanToFixed(vert->color[3]);
+ span.redStep = 0;
+ span.greenStep = 0;
+ span.blueStep = 0;
+ span.alphaStep = 0;
+
+ /* need these for fragment programs */
+ span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
+ span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
+ span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
+
+ ATTRIB_LOOP_BEGIN
+ COPY_4V(span.attrStart[attr], vert->attrib[attr]);
+ ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
+ ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
+ ATTRIB_LOOP_END
+
+ /* compute pos, bounds and render */
+ {
+ const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
+ const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
+ const GLfloat radius = 0.5F * size;
+ const GLfloat rmin = radius - 0.7071F; /* 0.7071 = sqrt(2)/2 */
+ const GLfloat rmax = radius + 0.7071F;
+ const GLfloat rmin2 = MAX2(0.0F, rmin * rmin);
+ const GLfloat rmax2 = rmax * rmax;
+ const GLfloat cscale = 1.0F / (rmax2 - rmin2);
+ const GLint xmin = (GLint) (x - radius);
+ const GLint xmax = (GLint) (x + radius);
+ const GLint ymin = (GLint) (y - radius);
+ const GLint ymax = (GLint) (y + radius);
+ GLint ix, iy;
+
+ for (iy = ymin; iy <= ymax; iy++) {
+
+ /* these might get changed by span clipping */
+ span.x = xmin;
+ span.y = iy;
+ span.end = xmax - xmin + 1;
+
+ /* compute coverage for each pixel in span */
+ for (ix = xmin; ix <= xmax; ix++) {
+ const GLfloat dx = ix - x + 0.5F;
+ const GLfloat dy = iy - y + 0.5F;
+ const GLfloat dist2 = dx * dx + dy * dy;
+ GLfloat coverage;
+
+ if (dist2 < rmax2) {
+ if (dist2 >= rmin2) {
+ /* compute partial coverage */
+ coverage = 1.0F - (dist2 - rmin2) * cscale;
+ }
+ else {
+ /* full coverage */
+ coverage = 1.0F;
+ }
+ span.array->mask[ix - xmin] = 1;
+ }
+ else {
+ /* zero coverage - fragment outside the radius */
+ coverage = 0.0;
+ span.array->mask[ix - xmin] = 0;
+ }
+ span.array->coverage[ix - xmin] = coverage;
+ }
+
+ /* render span */
+ _swrast_write_rgba_span(ctx, &span);
+
+ }
+ }
+}
+
+
+/**
+ * Draw large (size >= 1) non-AA point. RGB or CI mode.
+ */
+static void
+large_point(struct gl_context *ctx, const SWvertex *vert)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ SWspan span;
+ GLfloat size;
+
+ CULL_INVALID(vert);
+
+ /* z coord */
+ if (ctx->DrawBuffer->Visual.depthBits <= 16)
+ span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ else
+ span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+ span.zStep = 0;
+
+ size = get_size(ctx, vert, GL_FALSE);
+
+ /* span init */
+ INIT_SPAN(span, GL_POINT);
+ span.arrayMask = SPAN_XY;
+ span.facing = swrast->PointLineFacing;
+
+ span.interpMask = SPAN_Z | SPAN_RGBA;
+ span.red = ChanToFixed(vert->color[0]);
+ span.green = ChanToFixed(vert->color[1]);
+ span.blue = ChanToFixed(vert->color[2]);
+ span.alpha = ChanToFixed(vert->color[3]);
+ span.redStep = 0;
+ span.greenStep = 0;
+ span.blueStep = 0;
+ span.alphaStep = 0;
+
+ /* need these for fragment programs */
+ span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
+ span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
+ span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
+
+ ATTRIB_LOOP_BEGIN
+ COPY_4V(span.attrStart[attr], vert->attrib[attr]);
+ ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0);
+ ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0);
+ ATTRIB_LOOP_END
+
+ /* compute pos, bounds and render */
+ {
+ const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0];
+ const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1];
+ GLint iSize = (GLint) (size + 0.5F);
+ GLint xmin, xmax, ymin, ymax, ix, iy;
+ GLint iRadius;
+
+ iSize = MAX2(1, iSize);
+ iRadius = iSize / 2;
+
+ if (iSize & 1) {
+ /* odd size */
+ xmin = (GLint) (x - iRadius);
+ xmax = (GLint) (x + iRadius);
+ ymin = (GLint) (y - iRadius);
+ ymax = (GLint) (y + iRadius);
+ }
+ else {
+ /* even size */
+ /* 0.501 factor allows conformance to pass */
+ xmin = (GLint) (x + 0.501) - iRadius;
+ xmax = xmin + iSize - 1;
+ ymin = (GLint) (y + 0.501) - iRadius;
+ ymax = ymin + iSize - 1;
+ }
+
+ /* generate fragments */
+ span.end = 0;
+ for (iy = ymin; iy <= ymax; iy++) {
+ for (ix = xmin; ix <= xmax; ix++) {
+ span.array->x[span.end] = ix;
+ span.array->y[span.end] = iy;
+ span.end++;
+ }
+ }
+ assert(span.end <= MAX_WIDTH);
+ _swrast_write_rgba_span(ctx, &span);
+ }
+}
+
+
+/**
+ * Draw size=1, single-pixel point
+ */
+static void
+pixel_point(struct gl_context *ctx, const SWvertex *vert)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ /*
+ * Note that unlike the other functions, we put single-pixel points
+ * into a special span array in order to render as many points as
+ * possible with a single _swrast_write_rgba_span() call.
+ */
+ SWspan *span = &(swrast->PointSpan);
+ GLuint count;
+
+ CULL_INVALID(vert);
+
+ /* Span init */
+ span->interpMask = 0;
+ span->arrayMask = SPAN_XY | SPAN_Z;
+ span->arrayMask |= SPAN_RGBA;
+ /*span->arrayMask |= SPAN_LAMBDA;*/
+ span->arrayAttribs = swrast->_ActiveAttribMask; /* we'll produce these vals */
+
+ /* need these for fragment programs */
+ span->attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F;
+ span->attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F;
+ span->attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F;
+
+ /* check if we need to flush */
+ if (span->end >= MAX_WIDTH ||
+ (swrast->_RasterMask & (BLEND_BIT | LOGIC_OP_BIT | MASKING_BIT)) ||
+ span->facing != swrast->PointLineFacing) {
+ if (span->end > 0) {
+ _swrast_write_rgba_span(ctx, span);
+ span->end = 0;
+ }
+ }
+
+ count = span->end;
+
+ span->facing = swrast->PointLineFacing;
+
+ /* fragment attributes */
+ span->array->rgba[count][RCOMP] = vert->color[0];
+ span->array->rgba[count][GCOMP] = vert->color[1];
+ span->array->rgba[count][BCOMP] = vert->color[2];
+ span->array->rgba[count][ACOMP] = vert->color[3];
+
+ ATTRIB_LOOP_BEGIN
+ COPY_4V(span->array->attribs[attr][count], vert->attrib[attr]);
+ ATTRIB_LOOP_END
+
+ /* fragment position */
+ span->array->x[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][0];
+ span->array->y[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][1];
+ span->array->z[count] = (GLint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F);
+
+ span->end = count + 1;
+ ASSERT(span->end <= MAX_WIDTH);
+}
+
+
+/**
+ * Add specular color to primary color, draw point, restore original
+ * primary color.
+ */
+void
+_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0)
+{
+ SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */
+ GLfloat rSum, gSum, bSum;
+ GLchan cSave[4];
+
+ /* save */
+ COPY_CHAN4(cSave, ncv0->color);
+ /* sum */
+ rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0];
+ gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1];
+ bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2];
+ UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum);
+ UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum);
+ UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum);
+ /* draw */
+ SWRAST_CONTEXT(ctx)->SpecPoint(ctx, ncv0);
+ /* restore */
+ COPY_CHAN4(ncv0->color, cSave);
+}
+
+
+/**
+ * Examine current state to determine which point drawing function to use.
+ */
+void
+_swrast_choose_point(struct gl_context *ctx)
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ const GLfloat size = CLAMP(ctx->Point.Size,
+ ctx->Point.MinSize,
+ ctx->Point.MaxSize);
+
+ if (ctx->RenderMode == GL_RENDER) {
+ if (ctx->Point.PointSprite) {
+ swrast->Point = sprite_point;
+ }
+ else if (ctx->Point.SmoothFlag) {
+ swrast->Point = smooth_point;
+ }
+ else if (size > 1.0 ||
+ ctx->Point._Attenuated ||
+ ctx->VertexProgram.PointSizeEnabled) {
+ swrast->Point = large_point;
+ }
+ else {
+ swrast->Point = pixel_point;
+ }
+ }
+ else if (ctx->RenderMode == GL_FEEDBACK) {
+ swrast->Point = _swrast_feedback_point;
+ }
+ else {
+ /* GL_SELECT mode */
+ swrast->Point = _swrast_select_point;
+ }
+}
diff --git a/mesalib/src/mesa/swrast/s_span.c b/mesalib/src/mesa/swrast/s_span.c
index 4631ff3d5..1aa20f9d7 100644
--- a/mesalib/src/mesa/swrast/s_span.c
+++ b/mesalib/src/mesa/swrast/s_span.c
@@ -162,7 +162,7 @@ _swrast_span_default_attribs(struct gl_context *ctx, SWspan *span)
* Perspective correction will be done. The point/line/triangle function
* should have computed attrStart/Step values for FRAG_ATTRIB_WPOS[3]!
*/
-static INLINE void
+static inline void
interpolate_active_attribs(struct gl_context *ctx, SWspan *span, GLbitfield attrMask)
{
const SWcontext *swrast = SWRAST_CONTEXT(ctx);
@@ -209,7 +209,7 @@ interpolate_active_attribs(struct gl_context *ctx, SWspan *span, GLbitfield attr
* Interpolate primary colors to fill in the span->array->rgba8 (or rgb16)
* color array.
*/
-static INLINE void
+static inline void
interpolate_int_colors(struct gl_context *ctx, SWspan *span)
{
#if CHAN_BITS != 32
@@ -309,7 +309,7 @@ interpolate_int_colors(struct gl_context *ctx, SWspan *span)
/**
* Populate the FRAG_ATTRIB_COL0 array.
*/
-static INLINE void
+static inline void
interpolate_float_colors(SWspan *span)
{
GLfloat (*col0)[4] = span->array->attribs[FRAG_ATTRIB_COL0];
@@ -611,7 +611,7 @@ interpolate_texcoords(struct gl_context *ctx, SWspan *span)
/**
* Fill in the arrays->attribs[FRAG_ATTRIB_WPOS] array.
*/
-static INLINE void
+static inline void
interpolate_wpos(struct gl_context *ctx, SWspan *span)
{
GLfloat (*wpos)[4] = span->array->attribs[FRAG_ATTRIB_WPOS];
@@ -645,7 +645,7 @@ interpolate_wpos(struct gl_context *ctx, SWspan *span)
/**
* Apply the current polygon stipple pattern to a span of pixels.
*/
-static INLINE void
+static inline void
stipple_polygon_span(struct gl_context *ctx, SWspan *span)
{
GLubyte *mask = span->array->mask;
@@ -690,7 +690,7 @@ stipple_polygon_span(struct gl_context *ctx, SWspan *span)
* Return: GL_TRUE some pixels still visible
* GL_FALSE nothing visible
*/
-static INLINE GLuint
+static inline GLuint
clip_span( struct gl_context *ctx, SWspan *span )
{
const GLint xmin = ctx->DrawBuffer->_Xmin;
@@ -817,7 +817,7 @@ clip_span( struct gl_context *ctx, SWspan *span )
* Only called during fixed-function operation.
* Result is float color array (FRAG_ATTRIB_COL0).
*/
-static INLINE void
+static inline void
add_specular(struct gl_context *ctx, SWspan *span)
{
const SWcontext *swrast = SWRAST_CONTEXT(ctx);
@@ -866,7 +866,7 @@ add_specular(struct gl_context *ctx, SWspan *span)
/**
* Apply antialiasing coverage value to alpha values.
*/
-static INLINE void
+static inline void
apply_aa_coverage(SWspan *span)
{
const GLfloat *coverage = span->array->coverage;
@@ -900,7 +900,7 @@ apply_aa_coverage(SWspan *span)
/**
* Clamp span's float colors to [0,1]
*/
-static INLINE void
+static inline void
clamp_colors(SWspan *span)
{
GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0];
@@ -921,7 +921,7 @@ clamp_colors(SWspan *span)
* program that writes to gl_FragData[1] or higher.
* \param output which fragment program color output is being processed
*/
-static INLINE void
+static inline void
convert_color_type(SWspan *span, GLenum newType, GLuint output)
{
GLvoid *src, *dst;
@@ -961,7 +961,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output)
/**
* Apply fragment shader, fragment program or normal texturing to span.
*/
-static INLINE void
+static inline void
shade_texture_span(struct gl_context *ctx, SWspan *span)
{
if (ctx->FragmentProgram._Current ||
diff --git a/mesalib/src/mesa/swrast/s_stencil.c b/mesalib/src/mesa/swrast/s_stencil.c
index fa5093a34..e713e2393 100644
--- a/mesalib/src/mesa/swrast/s_stencil.c
+++ b/mesalib/src/mesa/swrast/s_stencil.c
@@ -391,7 +391,7 @@ do_stencil_test( struct gl_context *ctx, GLuint face, GLuint n, GLstencil stenci
* Compute the zpass/zfail masks by comparing the pre- and post-depth test
* masks.
*/
-static INLINE void
+static inline void
compute_pass_fail_masks(GLuint n, const GLubyte origMask[],
const GLubyte newMask[],
GLubyte passMask[], GLubyte failMask[])
diff --git a/mesalib/src/mesa/swrast/s_texcombine.c b/mesalib/src/mesa/swrast/s_texcombine.c
index 80b9dff3c..c67c356c1 100644
--- a/mesalib/src/mesa/swrast/s_texcombine.c
+++ b/mesalib/src/mesa/swrast/s_texcombine.c
@@ -45,7 +45,7 @@ typedef float (*float4_array)[4];
/**
* Return array of texels for given unit.
*/
-static INLINE float4_array
+static inline float4_array
get_texel_array(SWcontext *swrast, GLuint unit)
{
#ifdef _OPENMP
@@ -590,6 +590,26 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span )
float4_array primary_rgba;
GLuint unit;
+ if (!swrast->TexelBuffer) {
+#ifdef _OPENMP
+ const GLint maxThreads = omp_get_max_threads();
+#else
+ const GLint maxThreads = 1;
+#endif
+
+ /* TexelBuffer is also global and normally shared by all SWspan
+ * instances; when running with multiple threads, create one per
+ * thread.
+ */
+ swrast->TexelBuffer =
+ (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads *
+ MAX_WIDTH * 4 * sizeof(GLfloat));
+ if (!swrast->TexelBuffer) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
+ return;
+ }
+ }
+
primary_rgba = (float4_array) malloc(span->end * 4 * sizeof(GLfloat));
if (!primary_rgba) {
diff --git a/mesalib/src/mesa/swrast/s_texfetch.c b/mesalib/src/mesa/swrast/s_texfetch.c
index ed17b4bda..73b5af319 100644
--- a/mesalib/src/mesa/swrast/s_texfetch.c
+++ b/mesalib/src/mesa/swrast/s_texfetch.c
@@ -51,7 +51,7 @@
* linear RGB value in [0, 1].
* Implemented with a 256-entry lookup table.
*/
-static INLINE GLfloat
+static inline GLfloat
nonlinear_to_linear(GLubyte cs8)
{
static GLfloat table[256];
diff --git a/mesalib/src/mesa/swrast/s_texfilter.c b/mesalib/src/mesa/swrast/s_texfilter.c
index dd3761986..ca9133b21 100644
--- a/mesalib/src/mesa/swrast/s_texfilter.c
+++ b/mesalib/src/mesa/swrast/s_texfilter.c
@@ -57,7 +57,7 @@
* optimization! If we find that's not true on some systems, convert
* to a macro.
*/
-static INLINE GLfloat
+static inline GLfloat
lerp_2d(GLfloat a, GLfloat b,
GLfloat v00, GLfloat v10, GLfloat v01, GLfloat v11)
{
@@ -71,7 +71,7 @@ lerp_2d(GLfloat a, GLfloat b,
* Do 3D/trilinear interpolation of float values.
* \sa lerp_2d
*/
-static INLINE GLfloat
+static inline GLfloat
lerp_3d(GLfloat a, GLfloat b, GLfloat c,
GLfloat v000, GLfloat v100, GLfloat v010, GLfloat v110,
GLfloat v001, GLfloat v101, GLfloat v011, GLfloat v111)
@@ -89,7 +89,7 @@ lerp_3d(GLfloat a, GLfloat b, GLfloat c,
/**
* Do linear interpolation of colors.
*/
-static INLINE void
+static inline void
lerp_rgba(GLfloat result[4], GLfloat t, const GLfloat a[4], const GLfloat b[4])
{
result[0] = LERP(t, a[0], b[0]);
@@ -102,7 +102,7 @@ lerp_rgba(GLfloat result[4], GLfloat t, const GLfloat a[4], const GLfloat b[4])
/**
* Do bilinear interpolation of colors.
*/
-static INLINE void
+static inline void
lerp_rgba_2d(GLfloat result[4], GLfloat a, GLfloat b,
const GLfloat t00[4], const GLfloat t10[4],
const GLfloat t01[4], const GLfloat t11[4])
@@ -117,7 +117,7 @@ lerp_rgba_2d(GLfloat result[4], GLfloat a, GLfloat b,
/**
* Do trilinear interpolation of colors.
*/
-static INLINE void
+static inline void
lerp_rgba_3d(GLfloat result[4], GLfloat a, GLfloat b, GLfloat c,
const GLfloat t000[4], const GLfloat t100[4],
const GLfloat t010[4], const GLfloat t110[4],
@@ -153,7 +153,7 @@ lerp_rgba_3d(GLfloat result[4], GLfloat a, GLfloat b, GLfloat c,
* i0, i1 = returns two nearest texel indexes
* weight = returns blend factor between texels
*/
-static INLINE void
+static inline void
linear_texel_locations(GLenum wrapMode,
const struct gl_texture_image *img,
GLint size, GLfloat s,
@@ -281,7 +281,7 @@ linear_texel_locations(GLenum wrapMode,
/**
* Used to compute texel location for nearest sampling.
*/
-static INLINE GLint
+static inline GLint
nearest_texel_location(GLenum wrapMode,
const struct gl_texture_image *img,
GLint size, GLfloat s)
@@ -406,7 +406,7 @@ nearest_texel_location(GLenum wrapMode,
/* Power of two image sizes only */
-static INLINE void
+static inline void
linear_repeat_texel_location(GLuint size, GLfloat s,
GLint *i0, GLint *i1, GLfloat *weight)
{
@@ -420,7 +420,7 @@ linear_repeat_texel_location(GLuint size, GLfloat s,
/**
* Do clamp/wrap for a texture rectangle coord, GL_NEAREST filter mode.
*/
-static INLINE GLint
+static inline GLint
clamp_rect_coord_nearest(GLenum wrapMode, GLfloat coord, GLint max)
{
switch (wrapMode) {
@@ -440,7 +440,7 @@ clamp_rect_coord_nearest(GLenum wrapMode, GLfloat coord, GLint max)
/**
* As above, but GL_LINEAR filtering.
*/
-static INLINE void
+static inline void
clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max,
GLint *i0out, GLint *i1out, GLfloat *weight)
{
@@ -481,7 +481,7 @@ clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max,
/**
* Compute slice/image to use for 1D or 2D array texture.
*/
-static INLINE GLint
+static inline GLint
tex_array_slice(GLfloat coord, GLsizei size)
{
GLint slice = IFLOOR(coord + 0.5f);
@@ -494,7 +494,7 @@ tex_array_slice(GLfloat coord, GLsizei size)
* Compute nearest integer texcoords for given texobj and coordinate.
* NOTE: only used for depth texture sampling.
*/
-static INLINE void
+static inline void
nearest_texcoord(const struct gl_texture_object *texObj,
GLuint level,
const GLfloat texcoord[4],
@@ -541,7 +541,7 @@ nearest_texcoord(const struct gl_texture_object *texObj,
* Compute linear integer texcoords for given texobj and coordinate.
* NOTE: only used for depth texture sampling.
*/
-static INLINE void
+static inline void
linear_texcoord(const struct gl_texture_object *texObj,
GLuint level,
const GLfloat texcoord[4],
@@ -598,7 +598,7 @@ linear_texcoord(const struct gl_texture_object *texObj,
* For linear interpolation between mipmap levels N and N+1, this function
* computes N.
*/
-static INLINE GLint
+static inline GLint
linear_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda)
{
if (lambda < 0.0F)
@@ -613,7 +613,7 @@ linear_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda)
/**
* Compute the nearest mipmap level to take texels from.
*/
-static INLINE GLint
+static inline GLint
nearest_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda)
{
GLfloat l;
@@ -649,7 +649,7 @@ nearest_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda)
* will be minified, magnified, or split between the two. This function
* determines the subranges in [0, n-1] that are to be minified or magnified.
*/
-static INLINE void
+static inline void
compute_min_mag_ranges(const struct gl_texture_object *tObj,
GLuint n, const GLfloat lambda[],
GLuint *minStart, GLuint *minEnd,
@@ -758,7 +758,7 @@ compute_min_mag_ranges(const struct gl_texture_object *tObj,
* the base texture format. Ex: if the texture base format it GL_ALPHA,
* we return (0,0,0,BorderAlpha).
*/
-static INLINE void
+static inline void
get_border_color(const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
GLfloat rgba[4])
@@ -798,7 +798,7 @@ get_border_color(const struct gl_texture_object *tObj,
/**
* Return the texture sample for coordinate (s) using GL_NEAREST filter.
*/
-static INLINE void
+static inline void
sample_1d_nearest(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -823,7 +823,7 @@ sample_1d_nearest(struct gl_context *ctx,
/**
* Return the texture sample for coordinate (s) using GL_LINEAR filter.
*/
-static INLINE void
+static inline void
sample_1d_linear(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -1057,7 +1057,7 @@ sample_lambda_1d( struct gl_context *ctx,
/**
* Return the texture sample for coordinate (s,t) using GL_NEAREST filter.
*/
-static INLINE void
+static inline void
sample_2d_nearest(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -1091,7 +1091,7 @@ sample_2d_nearest(struct gl_context *ctx,
* Return the texture sample for coordinate (s,t) using GL_LINEAR filter.
* New sampling code contributed by Lynn Quam <quam@ai.sri.com>.
*/
-static INLINE void
+static inline void
sample_2d_linear(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -1156,7 +1156,7 @@ sample_2d_linear(struct gl_context *ctx,
* As above, but we know WRAP_S == REPEAT and WRAP_T == REPEAT.
* We don't have to worry about the texture border.
*/
-static INLINE void
+static inline void
sample_2d_linear_repeat(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -1760,7 +1760,7 @@ sample_2d_footprint(struct gl_context *ctx,
* Returns the index of the specified texture object in the
* gl_context texture unit array.
*/
-static INLINE GLuint
+static inline GLuint
texture_unit_index(const struct gl_context *ctx,
const struct gl_texture_object *tObj)
{
@@ -1941,7 +1941,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx,
/**
* Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter.
*/
-static INLINE void
+static inline void
sample_3d_nearest(struct gl_context *ctx,
const struct gl_texture_object *tObj,
const struct gl_texture_image *img,
@@ -3282,7 +3282,7 @@ sample_lambda_1d_array(struct gl_context *ctx,
/**
* Compare texcoord against depth sample. Return 1.0 or the ambient value.
*/
-static INLINE GLfloat
+static inline GLfloat
shadow_compare(GLenum function, GLfloat coord, GLfloat depthSample,
GLfloat ambient)
{
@@ -3315,7 +3315,7 @@ shadow_compare(GLenum function, GLfloat coord, GLfloat depthSample,
/**
* Compare texcoord against four depth samples.
*/
-static INLINE GLfloat
+static inline GLfloat
shadow_compare4(GLenum function, GLfloat coord,
GLfloat depth00, GLfloat depth01,
GLfloat depth10, GLfloat depth11,
diff --git a/mesalib/src/mesa/swrast/s_texture.c b/mesalib/src/mesa/swrast/s_texture.c
index aa073753f..36b429cfa 100644
--- a/mesalib/src/mesa/swrast/s_texture.c
+++ b/mesalib/src/mesa/swrast/s_texture.c
@@ -177,6 +177,13 @@ _swrast_map_teximage(struct gl_context *ctx,
1);
assert(slice < texImage->Depth);
map += slice * sliceSize;
+ } else if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY) {
+ GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat,
+ texImage->Width,
+ 1,
+ 1);
+ assert(slice < texImage->Height);
+ map += slice * sliceSize;
}
/* apply x/y offset to map address */
diff --git a/mesalib/src/mesa/swrast/s_triangle.c b/mesalib/src/mesa/swrast/s_triangle.c
index 77bd2a359..839c4fd08 100644
--- a/mesalib/src/mesa/swrast/s_triangle.c
+++ b/mesalib/src/mesa/swrast/s_triangle.c
@@ -237,13 +237,13 @@ struct affine_info
};
-static INLINE GLint
+static inline GLint
ilerp(GLint t, GLint a, GLint b)
{
return a + ((t * (b - a)) >> FIXED_SHIFT);
}
-static INLINE GLint
+static inline GLint
ilerp_2d(GLint ia, GLint ib, GLint v00, GLint v10, GLint v01, GLint v11)
{
const GLint temp0 = ilerp(ia, v00, v10);
@@ -256,7 +256,7 @@ ilerp_2d(GLint ia, GLint ib, GLint v00, GLint v10, GLint v01, GLint v11)
* textures with GL_REPLACE, GL_MODULATE, GL_BLEND, GL_DECAL or GL_ADD
* texture env modes.
*/
-static INLINE void
+static inline void
affine_span(struct gl_context *ctx, SWspan *span,
struct affine_info *info)
{
@@ -591,7 +591,7 @@ struct persp_info
};
-static INLINE void
+static inline void
fast_persp_span(struct gl_context *ctx, SWspan *span,
struct persp_info *info)
{
diff --git a/mesalib/src/mesa/swrast/s_zoom.c b/mesalib/src/mesa/swrast/s_zoom.c
index 3b99bf754..3fb784847 100644
--- a/mesalib/src/mesa/swrast/s_zoom.c
+++ b/mesalib/src/mesa/swrast/s_zoom.c
@@ -1,433 +1,433 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2008 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.
- */
-
-#include "main/glheader.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "main/colormac.h"
-
-#include "s_context.h"
-#include "s_span.h"
-#include "s_stencil.h"
-#include "s_zoom.h"
-
-
-/**
- * Compute the bounds of the region resulting from zooming a pixel span.
- * The resulting region will be entirely inside the window/scissor bounds
- * so no additional clipping is needed.
- * \param imageX, imageY position of the mage being drawn (gl WindowPos)
- * \param spanX, spanY position of span being drawing
- * \param width number of pixels in span
- * \param x0, x1 returned X bounds of zoomed region [x0, x1)
- * \param y0, y1 returned Y bounds of zoomed region [y0, y1)
- * \return GL_TRUE if any zoomed pixels visible, GL_FALSE if totally clipped
- */
-static GLboolean
-compute_zoomed_bounds(struct gl_context *ctx, GLint imageX, GLint imageY,
- GLint spanX, GLint spanY, GLint width,
- GLint *x0, GLint *x1, GLint *y0, GLint *y1)
-{
- const struct gl_framebuffer *fb = ctx->DrawBuffer;
- GLint c0, c1, r0, r1;
-
- ASSERT(spanX >= imageX);
- ASSERT(spanY >= imageY);
-
- /*
- * Compute destination columns: [c0, c1)
- */
- c0 = imageX + (GLint) ((spanX - imageX) * ctx->Pixel.ZoomX);
- c1 = imageX + (GLint) ((spanX + width - imageX) * ctx->Pixel.ZoomX);
- if (c1 < c0) {
- /* swap */
- GLint tmp = c1;
- c1 = c0;
- c0 = tmp;
- }
- c0 = CLAMP(c0, fb->_Xmin, fb->_Xmax);
- c1 = CLAMP(c1, fb->_Xmin, fb->_Xmax);
- if (c0 == c1) {
- return GL_FALSE; /* no width */
- }
-
- /*
- * Compute destination rows: [r0, r1)
- */
- r0 = imageY + (GLint) ((spanY - imageY) * ctx->Pixel.ZoomY);
- r1 = imageY + (GLint) ((spanY + 1 - imageY) * ctx->Pixel.ZoomY);
- if (r1 < r0) {
- /* swap */
- GLint tmp = r1;
- r1 = r0;
- r0 = tmp;
- }
- r0 = CLAMP(r0, fb->_Ymin, fb->_Ymax);
- r1 = CLAMP(r1, fb->_Ymin, fb->_Ymax);
- if (r0 == r1) {
- return GL_FALSE; /* no height */
- }
-
- *x0 = c0;
- *x1 = c1;
- *y0 = r0;
- *y1 = r1;
-
- return GL_TRUE;
-}
-
-
-/**
- * Convert a zoomed x image coordinate back to an unzoomed x coord.
- * 'zx' is screen position of a pixel in the zoomed image, who's left edge
- * is at 'imageX'.
- * return corresponding x coord in the original, unzoomed image.
- * This can use this for unzooming X or Y values.
- */
-static INLINE GLint
-unzoom_x(GLfloat zoomX, GLint imageX, GLint zx)
-{
- /*
- zx = imageX + (x - imageX) * zoomX;
- zx - imageX = (x - imageX) * zoomX;
- (zx - imageX) / zoomX = x - imageX;
- */
- GLint x;
- if (zoomX < 0.0)
- zx++;
- x = imageX + (GLint) ((zx - imageX) / zoomX);
- return x;
-}
-
-
-
-/**
- * Helper function called from _swrast_write_zoomed_rgba/rgb/
- * index/depth_span().
- */
-static void
-zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span,
- const GLvoid *src, GLenum format )
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- SWspan zoomed;
- GLint x0, x1, y0, y1;
- GLint zoomedWidth;
-
- if (!compute_zoomed_bounds(ctx, imgX, imgY, span->x, span->y, span->end,
- &x0, &x1, &y0, &y1)) {
- return; /* totally clipped */
- }
-
- if (!swrast->ZoomedArrays) {
- /* allocate on demand */
- swrast->ZoomedArrays = (SWspanarrays *) CALLOC(sizeof(SWspanarrays));
- if (!swrast->ZoomedArrays)
- return;
- }
-
- zoomedWidth = x1 - x0;
- ASSERT(zoomedWidth > 0);
- ASSERT(zoomedWidth <= MAX_WIDTH);
-
- /* no pixel arrays! must be horizontal spans. */
- ASSERT((span->arrayMask & SPAN_XY) == 0);
- ASSERT(span->primitive == GL_BITMAP);
-
- INIT_SPAN(zoomed, GL_BITMAP);
- zoomed.x = x0;
- zoomed.end = zoomedWidth;
- zoomed.array = swrast->ZoomedArrays;
- zoomed.array->ChanType = span->array->ChanType;
- if (zoomed.array->ChanType == GL_UNSIGNED_BYTE)
- zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba8;
- else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT)
- zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba16;
- else
- zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL0];
-
- COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]);
- COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]);
- COPY_4V(zoomed.attrStepY[FRAG_ATTRIB_WPOS], span->attrStepY[FRAG_ATTRIB_WPOS]);
-
- zoomed.attrStart[FRAG_ATTRIB_FOGC][0] = span->attrStart[FRAG_ATTRIB_FOGC][0];
- zoomed.attrStepX[FRAG_ATTRIB_FOGC][0] = span->attrStepX[FRAG_ATTRIB_FOGC][0];
- zoomed.attrStepY[FRAG_ATTRIB_FOGC][0] = span->attrStepY[FRAG_ATTRIB_FOGC][0];
-
- if (format == GL_RGBA || format == GL_RGB) {
- /* copy Z info */
- zoomed.z = span->z;
- zoomed.zStep = span->zStep;
- /* we'll generate an array of colorss */
- zoomed.interpMask = span->interpMask & ~SPAN_RGBA;
- zoomed.arrayMask |= SPAN_RGBA;
- zoomed.arrayAttribs |= FRAG_BIT_COL0; /* we'll produce these values */
- ASSERT(span->arrayMask & SPAN_RGBA);
- }
- else if (format == GL_DEPTH_COMPONENT) {
- /* Copy color info */
- zoomed.red = span->red;
- zoomed.green = span->green;
- zoomed.blue = span->blue;
- zoomed.alpha = span->alpha;
- zoomed.redStep = span->redStep;
- zoomed.greenStep = span->greenStep;
- zoomed.blueStep = span->blueStep;
- zoomed.alphaStep = span->alphaStep;
- /* we'll generate an array of depth values */
- zoomed.interpMask = span->interpMask & ~SPAN_Z;
- zoomed.arrayMask |= SPAN_Z;
- ASSERT(span->arrayMask & SPAN_Z);
- }
- else {
- _mesa_problem(ctx, "Bad format in zoom_span");
- return;
- }
-
- /* zoom the span horizontally */
- if (format == GL_RGBA) {
- if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) {
- const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < (GLint) span->end);
- COPY_4UBV(zoomed.array->rgba8[i], rgba[j]);
- }
- }
- else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) {
- const GLushort (*rgba)[4] = (const GLushort (*)[4]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < (GLint) span->end);
- COPY_4V(zoomed.array->rgba16[i], rgba[j]);
- }
- }
- else {
- const GLfloat (*rgba)[4] = (const GLfloat (*)[4]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < span->end);
- COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL0][i], rgba[j]);
- }
- }
- }
- else if (format == GL_RGB) {
- if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) {
- const GLubyte (*rgb)[3] = (const GLubyte (*)[3]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < (GLint) span->end);
- zoomed.array->rgba8[i][0] = rgb[j][0];
- zoomed.array->rgba8[i][1] = rgb[j][1];
- zoomed.array->rgba8[i][2] = rgb[j][2];
- zoomed.array->rgba8[i][3] = 0xff;
- }
- }
- else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) {
- const GLushort (*rgb)[3] = (const GLushort (*)[3]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < (GLint) span->end);
- zoomed.array->rgba16[i][0] = rgb[j][0];
- zoomed.array->rgba16[i][1] = rgb[j][1];
- zoomed.array->rgba16[i][2] = rgb[j][2];
- zoomed.array->rgba16[i][3] = 0xffff;
- }
- }
- else {
- const GLfloat (*rgb)[3] = (const GLfloat (*)[3]) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < span->end);
- zoomed.array->attribs[FRAG_ATTRIB_COL0][i][0] = rgb[j][0];
- zoomed.array->attribs[FRAG_ATTRIB_COL0][i][1] = rgb[j][1];
- zoomed.array->attribs[FRAG_ATTRIB_COL0][i][2] = rgb[j][2];
- zoomed.array->attribs[FRAG_ATTRIB_COL0][i][3] = 1.0F;
- }
- }
- }
- else if (format == GL_DEPTH_COMPONENT) {
- const GLuint *zValues = (const GLuint *) src;
- GLint i;
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
- ASSERT(j >= 0);
- ASSERT(j < (GLint) span->end);
- zoomed.array->z[i] = zValues[j];
- }
- /* Now, fall into the RGB path below */
- format = GL_RGBA;
- }
-
- /* write the span in rows [r0, r1) */
- if (format == GL_RGBA || format == GL_RGB) {
- /* Writing the span may modify the colors, so make a backup now if we're
- * going to call _swrast_write_zoomed_span() more than once.
- * Also, clipping may change the span end value, so store it as well.
- */
- const GLint end = zoomed.end; /* save */
- GLuint rgbaSave[MAX_WIDTH][4];
- const GLint pixelSize =
- (zoomed.array->ChanType == GL_UNSIGNED_BYTE) ? 4 * sizeof(GLubyte) :
- ((zoomed.array->ChanType == GL_UNSIGNED_SHORT) ? 4 * sizeof(GLushort)
- : 4 * sizeof(GLfloat));
- if (y1 - y0 > 1) {
- memcpy(rgbaSave, zoomed.array->rgba, zoomed.end * pixelSize);
- }
- for (zoomed.y = y0; zoomed.y < y1; zoomed.y++) {
- _swrast_write_rgba_span(ctx, &zoomed);
- zoomed.end = end; /* restore */
- if (y1 - y0 > 1) {
- /* restore the colors */
- memcpy(zoomed.array->rgba, rgbaSave, zoomed.end * pixelSize);
- }
- }
- }
-}
-
-
-void
-_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY,
- const SWspan *span, const GLvoid *rgba)
-{
- zoom_span(ctx, imgX, imgY, span, rgba, GL_RGBA);
-}
-
-
-void
-_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY,
- const SWspan *span, const GLvoid *rgb)
-{
- zoom_span(ctx, imgX, imgY, span, rgb, GL_RGB);
-}
-
-
-void
-_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY,
- const SWspan *span)
-{
- zoom_span(ctx, imgX, imgY, span,
- (const GLvoid *) span->array->z, GL_DEPTH_COMPONENT);
-}
-
-
-/**
- * Zoom/write stencil values.
- * No per-fragment operations are applied.
- */
-void
-_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY,
- GLint width, GLint spanX, GLint spanY,
- const GLstencil stencil[])
-{
- GLstencil zoomedVals[MAX_WIDTH];
- GLint x0, x1, y0, y1, y;
- GLint i, zoomedWidth;
-
- if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width,
- &x0, &x1, &y0, &y1)) {
- return; /* totally clipped */
- }
-
- zoomedWidth = x1 - x0;
- ASSERT(zoomedWidth > 0);
- ASSERT(zoomedWidth <= MAX_WIDTH);
-
- /* zoom the span horizontally */
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
- ASSERT(j >= 0);
- ASSERT(j < width);
- zoomedVals[i] = stencil[j];
- }
-
- /* write the zoomed spans */
- for (y = y0; y < y1; y++) {
- _swrast_write_stencil_span(ctx, zoomedWidth, x0, y, zoomedVals);
- }
-}
-
-
-/**
- * Zoom/write z values (16 or 32-bit).
- * No per-fragment operations are applied.
- */
-void
-_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY,
- GLint width, GLint spanX, GLint spanY,
- const GLvoid *z)
-{
- struct gl_renderbuffer *rb = ctx->DrawBuffer->_DepthBuffer;
- GLushort zoomedVals16[MAX_WIDTH];
- GLuint zoomedVals32[MAX_WIDTH];
- GLint x0, x1, y0, y1, y;
- GLint i, zoomedWidth;
-
- if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width,
- &x0, &x1, &y0, &y1)) {
- return; /* totally clipped */
- }
-
- zoomedWidth = x1 - x0;
- ASSERT(zoomedWidth > 0);
- ASSERT(zoomedWidth <= MAX_WIDTH);
-
- /* zoom the span horizontally */
- if (rb->DataType == GL_UNSIGNED_SHORT) {
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
- ASSERT(j >= 0);
- ASSERT(j < width);
- zoomedVals16[i] = ((GLushort *) z)[j];
- }
- z = zoomedVals16;
- }
- else {
- ASSERT(rb->DataType == GL_UNSIGNED_INT);
- for (i = 0; i < zoomedWidth; i++) {
- GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
- ASSERT(j >= 0);
- ASSERT(j < width);
- zoomedVals32[i] = ((GLuint *) z)[j];
- }
- z = zoomedVals32;
- }
-
- /* write the zoomed spans */
- for (y = y0; y < y1; y++) {
- rb->PutRow(ctx, rb, zoomedWidth, x0, y, z, NULL);
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2008 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.
+ */
+
+#include "main/glheader.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "main/colormac.h"
+
+#include "s_context.h"
+#include "s_span.h"
+#include "s_stencil.h"
+#include "s_zoom.h"
+
+
+/**
+ * Compute the bounds of the region resulting from zooming a pixel span.
+ * The resulting region will be entirely inside the window/scissor bounds
+ * so no additional clipping is needed.
+ * \param imageX, imageY position of the mage being drawn (gl WindowPos)
+ * \param spanX, spanY position of span being drawing
+ * \param width number of pixels in span
+ * \param x0, x1 returned X bounds of zoomed region [x0, x1)
+ * \param y0, y1 returned Y bounds of zoomed region [y0, y1)
+ * \return GL_TRUE if any zoomed pixels visible, GL_FALSE if totally clipped
+ */
+static GLboolean
+compute_zoomed_bounds(struct gl_context *ctx, GLint imageX, GLint imageY,
+ GLint spanX, GLint spanY, GLint width,
+ GLint *x0, GLint *x1, GLint *y0, GLint *y1)
+{
+ const struct gl_framebuffer *fb = ctx->DrawBuffer;
+ GLint c0, c1, r0, r1;
+
+ ASSERT(spanX >= imageX);
+ ASSERT(spanY >= imageY);
+
+ /*
+ * Compute destination columns: [c0, c1)
+ */
+ c0 = imageX + (GLint) ((spanX - imageX) * ctx->Pixel.ZoomX);
+ c1 = imageX + (GLint) ((spanX + width - imageX) * ctx->Pixel.ZoomX);
+ if (c1 < c0) {
+ /* swap */
+ GLint tmp = c1;
+ c1 = c0;
+ c0 = tmp;
+ }
+ c0 = CLAMP(c0, fb->_Xmin, fb->_Xmax);
+ c1 = CLAMP(c1, fb->_Xmin, fb->_Xmax);
+ if (c0 == c1) {
+ return GL_FALSE; /* no width */
+ }
+
+ /*
+ * Compute destination rows: [r0, r1)
+ */
+ r0 = imageY + (GLint) ((spanY - imageY) * ctx->Pixel.ZoomY);
+ r1 = imageY + (GLint) ((spanY + 1 - imageY) * ctx->Pixel.ZoomY);
+ if (r1 < r0) {
+ /* swap */
+ GLint tmp = r1;
+ r1 = r0;
+ r0 = tmp;
+ }
+ r0 = CLAMP(r0, fb->_Ymin, fb->_Ymax);
+ r1 = CLAMP(r1, fb->_Ymin, fb->_Ymax);
+ if (r0 == r1) {
+ return GL_FALSE; /* no height */
+ }
+
+ *x0 = c0;
+ *x1 = c1;
+ *y0 = r0;
+ *y1 = r1;
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Convert a zoomed x image coordinate back to an unzoomed x coord.
+ * 'zx' is screen position of a pixel in the zoomed image, who's left edge
+ * is at 'imageX'.
+ * return corresponding x coord in the original, unzoomed image.
+ * This can use this for unzooming X or Y values.
+ */
+static inline GLint
+unzoom_x(GLfloat zoomX, GLint imageX, GLint zx)
+{
+ /*
+ zx = imageX + (x - imageX) * zoomX;
+ zx - imageX = (x - imageX) * zoomX;
+ (zx - imageX) / zoomX = x - imageX;
+ */
+ GLint x;
+ if (zoomX < 0.0)
+ zx++;
+ x = imageX + (GLint) ((zx - imageX) / zoomX);
+ return x;
+}
+
+
+
+/**
+ * Helper function called from _swrast_write_zoomed_rgba/rgb/
+ * index/depth_span().
+ */
+static void
+zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span,
+ const GLvoid *src, GLenum format )
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ SWspan zoomed;
+ GLint x0, x1, y0, y1;
+ GLint zoomedWidth;
+
+ if (!compute_zoomed_bounds(ctx, imgX, imgY, span->x, span->y, span->end,
+ &x0, &x1, &y0, &y1)) {
+ return; /* totally clipped */
+ }
+
+ if (!swrast->ZoomedArrays) {
+ /* allocate on demand */
+ swrast->ZoomedArrays = (SWspanarrays *) CALLOC(sizeof(SWspanarrays));
+ if (!swrast->ZoomedArrays)
+ return;
+ }
+
+ zoomedWidth = x1 - x0;
+ ASSERT(zoomedWidth > 0);
+ ASSERT(zoomedWidth <= MAX_WIDTH);
+
+ /* no pixel arrays! must be horizontal spans. */
+ ASSERT((span->arrayMask & SPAN_XY) == 0);
+ ASSERT(span->primitive == GL_BITMAP);
+
+ INIT_SPAN(zoomed, GL_BITMAP);
+ zoomed.x = x0;
+ zoomed.end = zoomedWidth;
+ zoomed.array = swrast->ZoomedArrays;
+ zoomed.array->ChanType = span->array->ChanType;
+ if (zoomed.array->ChanType == GL_UNSIGNED_BYTE)
+ zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba8;
+ else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT)
+ zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba16;
+ else
+ zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL0];
+
+ COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]);
+ COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]);
+ COPY_4V(zoomed.attrStepY[FRAG_ATTRIB_WPOS], span->attrStepY[FRAG_ATTRIB_WPOS]);
+
+ zoomed.attrStart[FRAG_ATTRIB_FOGC][0] = span->attrStart[FRAG_ATTRIB_FOGC][0];
+ zoomed.attrStepX[FRAG_ATTRIB_FOGC][0] = span->attrStepX[FRAG_ATTRIB_FOGC][0];
+ zoomed.attrStepY[FRAG_ATTRIB_FOGC][0] = span->attrStepY[FRAG_ATTRIB_FOGC][0];
+
+ if (format == GL_RGBA || format == GL_RGB) {
+ /* copy Z info */
+ zoomed.z = span->z;
+ zoomed.zStep = span->zStep;
+ /* we'll generate an array of colorss */
+ zoomed.interpMask = span->interpMask & ~SPAN_RGBA;
+ zoomed.arrayMask |= SPAN_RGBA;
+ zoomed.arrayAttribs |= FRAG_BIT_COL0; /* we'll produce these values */
+ ASSERT(span->arrayMask & SPAN_RGBA);
+ }
+ else if (format == GL_DEPTH_COMPONENT) {
+ /* Copy color info */
+ zoomed.red = span->red;
+ zoomed.green = span->green;
+ zoomed.blue = span->blue;
+ zoomed.alpha = span->alpha;
+ zoomed.redStep = span->redStep;
+ zoomed.greenStep = span->greenStep;
+ zoomed.blueStep = span->blueStep;
+ zoomed.alphaStep = span->alphaStep;
+ /* we'll generate an array of depth values */
+ zoomed.interpMask = span->interpMask & ~SPAN_Z;
+ zoomed.arrayMask |= SPAN_Z;
+ ASSERT(span->arrayMask & SPAN_Z);
+ }
+ else {
+ _mesa_problem(ctx, "Bad format in zoom_span");
+ return;
+ }
+
+ /* zoom the span horizontally */
+ if (format == GL_RGBA) {
+ if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) {
+ const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < (GLint) span->end);
+ COPY_4UBV(zoomed.array->rgba8[i], rgba[j]);
+ }
+ }
+ else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) {
+ const GLushort (*rgba)[4] = (const GLushort (*)[4]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < (GLint) span->end);
+ COPY_4V(zoomed.array->rgba16[i], rgba[j]);
+ }
+ }
+ else {
+ const GLfloat (*rgba)[4] = (const GLfloat (*)[4]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < span->end);
+ COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL0][i], rgba[j]);
+ }
+ }
+ }
+ else if (format == GL_RGB) {
+ if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) {
+ const GLubyte (*rgb)[3] = (const GLubyte (*)[3]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < (GLint) span->end);
+ zoomed.array->rgba8[i][0] = rgb[j][0];
+ zoomed.array->rgba8[i][1] = rgb[j][1];
+ zoomed.array->rgba8[i][2] = rgb[j][2];
+ zoomed.array->rgba8[i][3] = 0xff;
+ }
+ }
+ else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) {
+ const GLushort (*rgb)[3] = (const GLushort (*)[3]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < (GLint) span->end);
+ zoomed.array->rgba16[i][0] = rgb[j][0];
+ zoomed.array->rgba16[i][1] = rgb[j][1];
+ zoomed.array->rgba16[i][2] = rgb[j][2];
+ zoomed.array->rgba16[i][3] = 0xffff;
+ }
+ }
+ else {
+ const GLfloat (*rgb)[3] = (const GLfloat (*)[3]) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < span->end);
+ zoomed.array->attribs[FRAG_ATTRIB_COL0][i][0] = rgb[j][0];
+ zoomed.array->attribs[FRAG_ATTRIB_COL0][i][1] = rgb[j][1];
+ zoomed.array->attribs[FRAG_ATTRIB_COL0][i][2] = rgb[j][2];
+ zoomed.array->attribs[FRAG_ATTRIB_COL0][i][3] = 1.0F;
+ }
+ }
+ }
+ else if (format == GL_DEPTH_COMPONENT) {
+ const GLuint *zValues = (const GLuint *) src;
+ GLint i;
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x;
+ ASSERT(j >= 0);
+ ASSERT(j < (GLint) span->end);
+ zoomed.array->z[i] = zValues[j];
+ }
+ /* Now, fall into the RGB path below */
+ format = GL_RGBA;
+ }
+
+ /* write the span in rows [r0, r1) */
+ if (format == GL_RGBA || format == GL_RGB) {
+ /* Writing the span may modify the colors, so make a backup now if we're
+ * going to call _swrast_write_zoomed_span() more than once.
+ * Also, clipping may change the span end value, so store it as well.
+ */
+ const GLint end = zoomed.end; /* save */
+ GLuint rgbaSave[MAX_WIDTH][4];
+ const GLint pixelSize =
+ (zoomed.array->ChanType == GL_UNSIGNED_BYTE) ? 4 * sizeof(GLubyte) :
+ ((zoomed.array->ChanType == GL_UNSIGNED_SHORT) ? 4 * sizeof(GLushort)
+ : 4 * sizeof(GLfloat));
+ if (y1 - y0 > 1) {
+ memcpy(rgbaSave, zoomed.array->rgba, zoomed.end * pixelSize);
+ }
+ for (zoomed.y = y0; zoomed.y < y1; zoomed.y++) {
+ _swrast_write_rgba_span(ctx, &zoomed);
+ zoomed.end = end; /* restore */
+ if (y1 - y0 > 1) {
+ /* restore the colors */
+ memcpy(zoomed.array->rgba, rgbaSave, zoomed.end * pixelSize);
+ }
+ }
+ }
+}
+
+
+void
+_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY,
+ const SWspan *span, const GLvoid *rgba)
+{
+ zoom_span(ctx, imgX, imgY, span, rgba, GL_RGBA);
+}
+
+
+void
+_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY,
+ const SWspan *span, const GLvoid *rgb)
+{
+ zoom_span(ctx, imgX, imgY, span, rgb, GL_RGB);
+}
+
+
+void
+_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY,
+ const SWspan *span)
+{
+ zoom_span(ctx, imgX, imgY, span,
+ (const GLvoid *) span->array->z, GL_DEPTH_COMPONENT);
+}
+
+
+/**
+ * Zoom/write stencil values.
+ * No per-fragment operations are applied.
+ */
+void
+_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY,
+ GLint width, GLint spanX, GLint spanY,
+ const GLstencil stencil[])
+{
+ GLstencil zoomedVals[MAX_WIDTH];
+ GLint x0, x1, y0, y1, y;
+ GLint i, zoomedWidth;
+
+ if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width,
+ &x0, &x1, &y0, &y1)) {
+ return; /* totally clipped */
+ }
+
+ zoomedWidth = x1 - x0;
+ ASSERT(zoomedWidth > 0);
+ ASSERT(zoomedWidth <= MAX_WIDTH);
+
+ /* zoom the span horizontally */
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
+ ASSERT(j >= 0);
+ ASSERT(j < width);
+ zoomedVals[i] = stencil[j];
+ }
+
+ /* write the zoomed spans */
+ for (y = y0; y < y1; y++) {
+ _swrast_write_stencil_span(ctx, zoomedWidth, x0, y, zoomedVals);
+ }
+}
+
+
+/**
+ * Zoom/write z values (16 or 32-bit).
+ * No per-fragment operations are applied.
+ */
+void
+_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY,
+ GLint width, GLint spanX, GLint spanY,
+ const GLvoid *z)
+{
+ struct gl_renderbuffer *rb = ctx->DrawBuffer->_DepthBuffer;
+ GLushort zoomedVals16[MAX_WIDTH];
+ GLuint zoomedVals32[MAX_WIDTH];
+ GLint x0, x1, y0, y1, y;
+ GLint i, zoomedWidth;
+
+ if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width,
+ &x0, &x1, &y0, &y1)) {
+ return; /* totally clipped */
+ }
+
+ zoomedWidth = x1 - x0;
+ ASSERT(zoomedWidth > 0);
+ ASSERT(zoomedWidth <= MAX_WIDTH);
+
+ /* zoom the span horizontally */
+ if (rb->DataType == GL_UNSIGNED_SHORT) {
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
+ ASSERT(j >= 0);
+ ASSERT(j < width);
+ zoomedVals16[i] = ((GLushort *) z)[j];
+ }
+ z = zoomedVals16;
+ }
+ else {
+ ASSERT(rb->DataType == GL_UNSIGNED_INT);
+ for (i = 0; i < zoomedWidth; i++) {
+ GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX;
+ ASSERT(j >= 0);
+ ASSERT(j < width);
+ zoomedVals32[i] = ((GLuint *) z)[j];
+ }
+ z = zoomedVals32;
+ }
+
+ /* write the zoomed spans */
+ for (y = y0; y < y1; y++) {
+ rb->PutRow(ctx, rb, zoomedWidth, x0, y, z, NULL);
+ }
+}
diff --git a/mesalib/src/mesa/tnl/t_vb_program.c b/mesalib/src/mesa/tnl/t_vb_program.c
index 4b1a212fd..cc5e85634 100644
--- a/mesalib/src/mesa/tnl/t_vb_program.c
+++ b/mesalib/src/mesa/tnl/t_vb_program.c
@@ -1,574 +1,572 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.6
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 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, 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.
- */
-
-
-/**
- * \file tnl/t_vb_program.c
- * \brief Pipeline stage for executing vertex programs.
- * \author Brian Paul, Keith Whitwell
- */
-
-
-#include "main/glheader.h"
-#include "main/colormac.h"
-#include "main/macros.h"
-#include "main/imports.h"
-#include "math/m_xform.h"
-#include "program/prog_instruction.h"
-#include "program/prog_statevars.h"
-#include "program/prog_execute.h"
-#include "swrast/s_context.h"
-
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-
-#ifdef NAN_CHECK
-/** Check for NaNs and very large values */
-static INLINE void
-check_float(float x)
-{
- assert(!IS_INF_OR_NAN(x));
- assert(1.0e-15 <= x && x <= 1.0e15);
-}
-#endif
-
-
-/*!
- * Private storage for the vertex program pipeline stage.
- */
-struct vp_stage_data {
- /** The results of running the vertex program go into these arrays. */
- GLvector4f results[VERT_RESULT_MAX];
-
- GLvector4f ndcCoords; /**< normalized device coords */
- GLubyte *clipmask; /**< clip flags */
- GLubyte ormask, andmask; /**< for clipping */
-
- struct gl_program_machine machine;
-};
-
-
-#define VP_STAGE_DATA(stage) ((struct vp_stage_data *)(stage->privatePtr))
-
-
-static void
-userclip( struct gl_context *ctx,
- GLvector4f *clip,
- GLubyte *clipmask,
- GLubyte *clipormask,
- GLubyte *clipandmask )
-{
- GLuint p;
-
- for (p = 0; p < ctx->Const.MaxClipPlanes; p++) {
- if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
- GLuint nr, i;
- const GLfloat a = ctx->Transform._ClipUserPlane[p][0];
- const GLfloat b = ctx->Transform._ClipUserPlane[p][1];
- const GLfloat c = ctx->Transform._ClipUserPlane[p][2];
- const GLfloat d = ctx->Transform._ClipUserPlane[p][3];
- GLfloat *coord = (GLfloat *)clip->data;
- GLuint stride = clip->stride;
- GLuint count = clip->count;
-
- for (nr = 0, i = 0 ; i < count ; i++) {
- GLfloat dp = (coord[0] * a +
- coord[1] * b +
- coord[2] * c +
- coord[3] * d);
-
- if (dp < 0) {
- nr++;
- clipmask[i] |= CLIP_USER_BIT;
- }
-
- STRIDE_F(coord, stride);
- }
-
- if (nr > 0) {
- *clipormask |= CLIP_USER_BIT;
- if (nr == count) {
- *clipandmask |= CLIP_USER_BIT;
- return;
- }
- }
- }
- }
-}
-
-
-static GLboolean
-do_ndc_cliptest(struct gl_context *ctx, struct vp_stage_data *store)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- /* Cliptest and perspective divide. Clip functions must clear
- * the clipmask.
- */
- store->ormask = 0;
- store->andmask = CLIP_FRUSTUM_BITS;
-
- tnl_clip_prepare(ctx);
-
- if (tnl->NeedNdcCoords) {
- VB->NdcPtr =
- _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
- &store->ndcCoords,
- store->clipmask,
- &store->ormask,
- &store->andmask,
- !ctx->Transform.DepthClamp );
- }
- else {
- VB->NdcPtr = NULL;
- _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
- NULL,
- store->clipmask,
- &store->ormask,
- &store->andmask,
- !ctx->Transform.DepthClamp );
- }
-
- if (store->andmask) {
- /* All vertices are outside the frustum */
- return GL_FALSE;
- }
-
- /* Test userclip planes. This contributes to VB->ClipMask.
- */
- /** XXX NEW_SLANG _Enabled ??? */
- if (ctx->Transform.ClipPlanesEnabled && (!ctx->VertexProgram._Enabled ||
- ctx->VertexProgram.Current->IsPositionInvariant)) {
- userclip( ctx,
- VB->ClipPtr,
- store->clipmask,
- &store->ormask,
- &store->andmask );
-
- if (store->andmask) {
- return GL_FALSE;
- }
- }
-
- VB->ClipAndMask = store->andmask;
- VB->ClipOrMask = store->ormask;
- VB->ClipMask = store->clipmask;
-
- return GL_TRUE;
-}
-
-
-/**
- * XXX the texture sampling code in this module is a bit of a hack.
- * The texture sampling code is in swrast, though it doesn't have any
- * real dependencies on the rest of swrast. It should probably be
- * moved into main/ someday.
- */
-static void
-vp_fetch_texel(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda,
- GLuint unit, GLfloat color[4])
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
-
- /* XXX use a float-valued TextureSample routine here!!! */
- swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
- 1, (const GLfloat (*)[4]) texcoord,
- &lambda, (GLfloat (*)[4]) color);
-}
-
-
-/**
- * Called via ctx->Driver.ProgramStringNotify() after a new vertex program
- * string has been parsed.
- */
-GLboolean
-_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program)
-{
- /* No-op.
- * If we had derived anything from the program that was private to this
- * stage we'd recompute/validate it here.
- */
- return GL_TRUE;
-}
-
-
-/**
- * Initialize virtual machine state prior to executing vertex program.
- */
-static void
-init_machine(struct gl_context *ctx, struct gl_program_machine *machine,
- GLuint instID)
-{
- /* Input registers get initialized from the current vertex attribs */
- memcpy(machine->VertAttribs, ctx->Current.Attrib,
- MAX_VERTEX_GENERIC_ATTRIBS * 4 * sizeof(GLfloat));
-
- if (ctx->VertexProgram._Current->IsNVProgram) {
- GLuint i;
- /* Output/result regs are initialized to [0,0,0,1] */
- for (i = 0; i < MAX_NV_VERTEX_PROGRAM_OUTPUTS; i++) {
- ASSIGN_4V(machine->Outputs[i], 0.0F, 0.0F, 0.0F, 1.0F);
- }
- /* Temp regs are initialized to [0,0,0,0] */
- for (i = 0; i < MAX_NV_VERTEX_PROGRAM_TEMPS; i++) {
- ASSIGN_4V(machine->Temporaries[i], 0.0F, 0.0F, 0.0F, 0.0F);
- }
- for (i = 0; i < MAX_VERTEX_PROGRAM_ADDRESS_REGS; i++) {
- ASSIGN_4V(machine->AddressReg[i], 0, 0, 0, 0);
- }
- }
-
- machine->NumDeriv = 0;
-
- /* init condition codes */
- machine->CondCodes[0] = COND_EQ;
- machine->CondCodes[1] = COND_EQ;
- machine->CondCodes[2] = COND_EQ;
- machine->CondCodes[3] = COND_EQ;
-
- /* init call stack */
- machine->StackDepth = 0;
-
- machine->FetchTexelLod = vp_fetch_texel;
- machine->FetchTexelDeriv = NULL; /* not used by vertex programs */
-
- machine->Samplers = ctx->VertexProgram._Current->Base.SamplerUnits;
-
- machine->SystemValues[SYSTEM_VALUE_INSTANCE_ID][0] = (GLfloat) instID;
-}
-
-
-/**
- * Map the texture images which the vertex program will access (if any).
- */
-static void
-map_textures(struct gl_context *ctx, const struct gl_vertex_program *vp)
-{
- GLuint u;
-
- if (!ctx->Driver.MapTexture)
- return;
-
- for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) {
- if (vp->Base.TexturesUsed[u]) {
- /* Note: _Current *should* correspond to the target indicated
- * in TexturesUsed[u].
- */
- ctx->Driver.MapTexture(ctx, ctx->Texture.Unit[u]._Current);
- }
- }
-}
-
-
-/**
- * Unmap the texture images which were used by the vertex program (if any).
- */
-static void
-unmap_textures(struct gl_context *ctx, const struct gl_vertex_program *vp)
-{
- GLuint u;
-
- if (!ctx->Driver.MapTexture)
- return;
-
- for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) {
- if (vp->Base.TexturesUsed[u]) {
- /* Note: _Current *should* correspond to the target indicated
- * in TexturesUsed[u].
- */
- ctx->Driver.UnmapTexture(ctx, ctx->Texture.Unit[u]._Current);
- }
- }
-}
-
-
-/**
- * This function executes vertex programs
- */
-static GLboolean
-run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vp_stage_data *store = VP_STAGE_DATA(stage);
- struct vertex_buffer *VB = &tnl->vb;
- struct gl_vertex_program *program = ctx->VertexProgram._Current;
- struct gl_program_machine *machine = &store->machine;
- GLuint outputs[VERT_RESULT_MAX], numOutputs;
- GLuint i, j;
-
- if (!program)
- return GL_TRUE;
-
- if (program->IsNVProgram) {
- _mesa_load_tracked_matrices(ctx);
- }
- else {
- /* ARB program or vertex shader */
- _mesa_load_state_parameters(ctx, program->Base.Parameters);
- }
-
- /* make list of outputs to save some time below */
- numOutputs = 0;
- for (i = 0; i < VERT_RESULT_MAX; i++) {
- if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) {
- outputs[numOutputs++] = i;
- }
- }
-
- map_textures(ctx, program);
-
- for (i = 0; i < VB->Count; i++) {
- GLuint attr;
-
- init_machine(ctx, machine, tnl->CurInstance);
-
-#if 0
- printf("Input %d: %f, %f, %f, %f\n", i,
- VB->AttribPtr[0]->data[i][0],
- VB->AttribPtr[0]->data[i][1],
- VB->AttribPtr[0]->data[i][2],
- VB->AttribPtr[0]->data[i][3]);
- printf(" color: %f, %f, %f, %f\n",
- VB->AttribPtr[3]->data[i][0],
- VB->AttribPtr[3]->data[i][1],
- VB->AttribPtr[3]->data[i][2],
- VB->AttribPtr[3]->data[i][3]);
- printf(" normal: %f, %f, %f, %f\n",
- VB->AttribPtr[2]->data[i][0],
- VB->AttribPtr[2]->data[i][1],
- VB->AttribPtr[2]->data[i][2],
- VB->AttribPtr[2]->data[i][3]);
-#endif
-
- /* the vertex array case */
- for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) {
- if (program->Base.InputsRead & (1 << attr)) {
- const GLubyte *ptr = (const GLubyte*) VB->AttribPtr[attr]->data;
- const GLuint size = VB->AttribPtr[attr]->size;
- const GLuint stride = VB->AttribPtr[attr]->stride;
- const GLfloat *data = (GLfloat *) (ptr + stride * i);
-#ifdef NAN_CHECK
- check_float(data[0]);
- check_float(data[1]);
- check_float(data[2]);
- check_float(data[3]);
-#endif
- COPY_CLEAN_4V(machine->VertAttribs[attr], size, data);
- }
- }
-
- /* execute the program */
- _mesa_execute_program(ctx, &program->Base, machine);
-
- /* copy the output registers into the VB->attribs arrays */
- for (j = 0; j < numOutputs; j++) {
- const GLuint attr = outputs[j];
-#ifdef NAN_CHECK
- check_float(machine->Outputs[attr][0]);
- check_float(machine->Outputs[attr][1]);
- check_float(machine->Outputs[attr][2]);
- check_float(machine->Outputs[attr][3]);
-#endif
- COPY_4V(store->results[attr].data[i], machine->Outputs[attr]);
- }
-
- /* FOGC is a special case. Fragment shader expects (f,0,0,1) */
- if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) {
- store->results[VERT_RESULT_FOGC].data[i][1] = 0.0;
- store->results[VERT_RESULT_FOGC].data[i][2] = 0.0;
- store->results[VERT_RESULT_FOGC].data[i][3] = 1.0;
- }
-#ifdef NAN_CHECK
- ASSERT(machine->Outputs[0][3] != 0.0F);
-#endif
-#if 0
- printf("HPOS: %f %f %f %f\n",
- machine->Outputs[0][0],
- machine->Outputs[0][1],
- machine->Outputs[0][2],
- machine->Outputs[0][3]);
-#endif
- }
-
- unmap_textures(ctx, program);
-
- /* Fixup fog and point size results if needed */
- if (program->IsNVProgram) {
- if (ctx->Fog.Enabled &&
- (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) == 0) {
- for (i = 0; i < VB->Count; i++) {
- store->results[VERT_RESULT_FOGC].data[i][0] = 1.0;
- }
- }
-
- if (ctx->VertexProgram.PointSizeEnabled &&
- (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_PSIZ)) == 0) {
- for (i = 0; i < VB->Count; i++) {
- store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size;
- }
- }
- }
-
- if (program->IsPositionInvariant) {
- /* We need the exact same transform as in the fixed function path here
- * to guarantee invariance, depending on compiler optimization flags
- * results could be different otherwise.
- */
- VB->ClipPtr = TransformRaw( &store->results[0],
- &ctx->_ModelProjectMatrix,
- VB->AttribPtr[0] );
-
- /* Drivers expect this to be clean to element 4...
- */
- switch (VB->ClipPtr->size) {
- case 1:
- /* impossible */
- case 2:
- _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 );
- /* fall-through */
- case 3:
- _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 );
- /* fall-through */
- case 4:
- break;
- }
- }
- else {
- /* Setup the VB pointers so that the next pipeline stages get
- * their data from the right place (the program output arrays).
- */
- VB->ClipPtr = &store->results[VERT_RESULT_HPOS];
- VB->ClipPtr->size = 4;
- VB->ClipPtr->count = VB->Count;
- }
-
- VB->AttribPtr[VERT_ATTRIB_COLOR0] = &store->results[VERT_RESULT_COL0];
- VB->AttribPtr[VERT_ATTRIB_COLOR1] = &store->results[VERT_RESULT_COL1];
- VB->AttribPtr[VERT_ATTRIB_FOG] = &store->results[VERT_RESULT_FOGC];
- VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ];
- VB->BackfaceColorPtr = &store->results[VERT_RESULT_BFC0];
- VB->BackfaceSecondaryColorPtr = &store->results[VERT_RESULT_BFC1];
-
- for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
- VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]
- = &store->results[VERT_RESULT_TEX0 + i];
- }
-
- for (i = 0; i < ctx->Const.MaxVarying; i++) {
- if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) {
- /* Note: varying results get put into the generic attributes */
- VB->AttribPtr[VERT_ATTRIB_GENERIC0+i]
- = &store->results[VERT_RESULT_VAR0 + i];
- }
- }
-
-
- /* Perform NDC and cliptest operations:
- */
- return do_ndc_cliptest(ctx, store);
-}
-
-
-/**
- * Called the first time stage->run is called. In effect, don't
- * allocate data until the first time the stage is run.
- */
-static GLboolean
-init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &(tnl->vb);
- struct vp_stage_data *store;
- const GLuint size = VB->Size;
- GLuint i;
-
- stage->privatePtr = CALLOC(sizeof(*store));
- store = VP_STAGE_DATA(stage);
- if (!store)
- return GL_FALSE;
-
- /* Allocate arrays of vertex output values */
- for (i = 0; i < VERT_RESULT_MAX; i++) {
- _mesa_vector4f_alloc( &store->results[i], 0, size, 32 );
- store->results[i].size = 4;
- }
-
- /* a few other misc allocations */
- _mesa_vector4f_alloc( &store->ndcCoords, 0, size, 32 );
- store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 );
-
- return GL_TRUE;
-}
-
-
-/**
- * Destructor for this pipeline stage.
- */
-static void
-dtr(struct tnl_pipeline_stage *stage)
-{
- struct vp_stage_data *store = VP_STAGE_DATA(stage);
-
- if (store) {
- GLuint i;
-
- /* free the vertex program result arrays */
- for (i = 0; i < VERT_RESULT_MAX; i++)
- _mesa_vector4f_free( &store->results[i] );
-
- /* free misc arrays */
- _mesa_vector4f_free( &store->ndcCoords );
- _mesa_align_free( store->clipmask );
-
- FREE( store );
- stage->privatePtr = NULL;
- }
-}
-
-
-static void
-validate_vp_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
-{
- if (ctx->VertexProgram._Current) {
- _swrast_update_texture_samplers(ctx);
- }
-}
-
-
-
-/**
- * Public description of this pipeline stage.
- */
-const struct tnl_pipeline_stage _tnl_vertex_program_stage =
-{
- "vertex-program",
- NULL, /* private_data */
- init_vp, /* create */
- dtr, /* destroy */
- validate_vp_stage, /* validate */
- run_vp /* run -- initially set to ctr */
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.6
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 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, 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.
+ */
+
+
+/**
+ * \file tnl/t_vb_program.c
+ * \brief Pipeline stage for executing vertex programs.
+ * \author Brian Paul, Keith Whitwell
+ */
+
+
+#include "main/glheader.h"
+#include "main/colormac.h"
+#include "main/macros.h"
+#include "main/imports.h"
+#include "math/m_xform.h"
+#include "program/prog_instruction.h"
+#include "program/prog_statevars.h"
+#include "program/prog_execute.h"
+#include "swrast/s_context.h"
+
+#include "tnl/tnl.h"
+#include "tnl/t_context.h"
+#include "tnl/t_pipeline.h"
+
+
+#ifdef NAN_CHECK
+/** Check for NaNs and very large values */
+static inline void
+check_float(float x)
+{
+ assert(!IS_INF_OR_NAN(x));
+ assert(1.0e-15 <= x && x <= 1.0e15);
+}
+#endif
+
+
+/*!
+ * Private storage for the vertex program pipeline stage.
+ */
+struct vp_stage_data {
+ /** The results of running the vertex program go into these arrays. */
+ GLvector4f results[VERT_RESULT_MAX];
+
+ GLvector4f ndcCoords; /**< normalized device coords */
+ GLubyte *clipmask; /**< clip flags */
+ GLubyte ormask, andmask; /**< for clipping */
+
+ struct gl_program_machine machine;
+};
+
+
+#define VP_STAGE_DATA(stage) ((struct vp_stage_data *)(stage->privatePtr))
+
+
+static void
+userclip( struct gl_context *ctx,
+ GLvector4f *clip,
+ GLubyte *clipmask,
+ GLubyte *clipormask,
+ GLubyte *clipandmask )
+{
+ GLuint p;
+
+ for (p = 0; p < ctx->Const.MaxClipPlanes; p++) {
+ if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
+ GLuint nr, i;
+ const GLfloat a = ctx->Transform._ClipUserPlane[p][0];
+ const GLfloat b = ctx->Transform._ClipUserPlane[p][1];
+ const GLfloat c = ctx->Transform._ClipUserPlane[p][2];
+ const GLfloat d = ctx->Transform._ClipUserPlane[p][3];
+ GLfloat *coord = (GLfloat *)clip->data;
+ GLuint stride = clip->stride;
+ GLuint count = clip->count;
+
+ for (nr = 0, i = 0 ; i < count ; i++) {
+ GLfloat dp = (coord[0] * a +
+ coord[1] * b +
+ coord[2] * c +
+ coord[3] * d);
+
+ if (dp < 0) {
+ nr++;
+ clipmask[i] |= CLIP_USER_BIT;
+ }
+
+ STRIDE_F(coord, stride);
+ }
+
+ if (nr > 0) {
+ *clipormask |= CLIP_USER_BIT;
+ if (nr == count) {
+ *clipandmask |= CLIP_USER_BIT;
+ return;
+ }
+ }
+ }
+ }
+}
+
+
+static GLboolean
+do_ndc_cliptest(struct gl_context *ctx, struct vp_stage_data *store)
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &tnl->vb;
+ /* Cliptest and perspective divide. Clip functions must clear
+ * the clipmask.
+ */
+ store->ormask = 0;
+ store->andmask = CLIP_FRUSTUM_BITS;
+
+ tnl_clip_prepare(ctx);
+
+ if (tnl->NeedNdcCoords) {
+ VB->NdcPtr =
+ _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
+ &store->ndcCoords,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask,
+ !ctx->Transform.DepthClamp );
+ }
+ else {
+ VB->NdcPtr = NULL;
+ _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
+ NULL,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask,
+ !ctx->Transform.DepthClamp );
+ }
+
+ if (store->andmask) {
+ /* All vertices are outside the frustum */
+ return GL_FALSE;
+ }
+
+ /* Test userclip planes. This contributes to VB->ClipMask.
+ */
+ /** XXX NEW_SLANG _Enabled ??? */
+ if (ctx->Transform.ClipPlanesEnabled && (!ctx->VertexProgram._Enabled ||
+ ctx->VertexProgram.Current->IsPositionInvariant)) {
+ userclip( ctx,
+ VB->ClipPtr,
+ store->clipmask,
+ &store->ormask,
+ &store->andmask );
+
+ if (store->andmask) {
+ return GL_FALSE;
+ }
+ }
+
+ VB->ClipAndMask = store->andmask;
+ VB->ClipOrMask = store->ormask;
+ VB->ClipMask = store->clipmask;
+
+ return GL_TRUE;
+}
+
+
+/**
+ * XXX the texture sampling code in this module is a bit of a hack.
+ * The texture sampling code is in swrast, though it doesn't have any
+ * real dependencies on the rest of swrast. It should probably be
+ * moved into main/ someday.
+ */
+static void
+vp_fetch_texel(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda,
+ GLuint unit, GLfloat color[4])
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+
+ /* XXX use a float-valued TextureSample routine here!!! */
+ swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current,
+ 1, (const GLfloat (*)[4]) texcoord,
+ &lambda, (GLfloat (*)[4]) color);
+}
+
+
+/**
+ * Called via ctx->Driver.ProgramStringNotify() after a new vertex program
+ * string has been parsed.
+ */
+GLboolean
+_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program)
+{
+ /* No-op.
+ * If we had derived anything from the program that was private to this
+ * stage we'd recompute/validate it here.
+ */
+ return GL_TRUE;
+}
+
+
+/**
+ * Initialize virtual machine state prior to executing vertex program.
+ */
+static void
+init_machine(struct gl_context *ctx, struct gl_program_machine *machine,
+ GLuint instID)
+{
+ /* Input registers get initialized from the current vertex attribs */
+ memcpy(machine->VertAttribs, ctx->Current.Attrib,
+ MAX_VERTEX_GENERIC_ATTRIBS * 4 * sizeof(GLfloat));
+
+ if (ctx->VertexProgram._Current->IsNVProgram) {
+ GLuint i;
+ /* Output/result regs are initialized to [0,0,0,1] */
+ for (i = 0; i < MAX_NV_VERTEX_PROGRAM_OUTPUTS; i++) {
+ ASSIGN_4V(machine->Outputs[i], 0.0F, 0.0F, 0.0F, 1.0F);
+ }
+ /* Temp regs are initialized to [0,0,0,0] */
+ for (i = 0; i < MAX_NV_VERTEX_PROGRAM_TEMPS; i++) {
+ ASSIGN_4V(machine->Temporaries[i], 0.0F, 0.0F, 0.0F, 0.0F);
+ }
+ for (i = 0; i < MAX_VERTEX_PROGRAM_ADDRESS_REGS; i++) {
+ ASSIGN_4V(machine->AddressReg[i], 0, 0, 0, 0);
+ }
+ }
+
+ machine->NumDeriv = 0;
+
+ /* init condition codes */
+ machine->CondCodes[0] = COND_EQ;
+ machine->CondCodes[1] = COND_EQ;
+ machine->CondCodes[2] = COND_EQ;
+ machine->CondCodes[3] = COND_EQ;
+
+ /* init call stack */
+ machine->StackDepth = 0;
+
+ machine->FetchTexelLod = vp_fetch_texel;
+ machine->FetchTexelDeriv = NULL; /* not used by vertex programs */
+
+ machine->Samplers = ctx->VertexProgram._Current->Base.SamplerUnits;
+
+ machine->SystemValues[SYSTEM_VALUE_INSTANCE_ID][0] = (GLfloat) instID;
+}
+
+
+/**
+ * Map the texture images which the vertex program will access (if any).
+ */
+static void
+map_textures(struct gl_context *ctx, const struct gl_vertex_program *vp)
+{
+ GLuint u;
+
+ if (!ctx->Driver.MapTexture)
+ return;
+
+ for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) {
+ if (vp->Base.TexturesUsed[u]) {
+ /* Note: _Current *should* correspond to the target indicated
+ * in TexturesUsed[u].
+ */
+ ctx->Driver.MapTexture(ctx, ctx->Texture.Unit[u]._Current);
+ }
+ }
+}
+
+
+/**
+ * Unmap the texture images which were used by the vertex program (if any).
+ */
+static void
+unmap_textures(struct gl_context *ctx, const struct gl_vertex_program *vp)
+{
+ GLuint u;
+
+ if (!ctx->Driver.MapTexture)
+ return;
+
+ for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) {
+ if (vp->Base.TexturesUsed[u]) {
+ /* Note: _Current *should* correspond to the target indicated
+ * in TexturesUsed[u].
+ */
+ ctx->Driver.UnmapTexture(ctx, ctx->Texture.Unit[u]._Current);
+ }
+ }
+}
+
+
+/**
+ * This function executes vertex programs
+ */
+static GLboolean
+run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vp_stage_data *store = VP_STAGE_DATA(stage);
+ struct vertex_buffer *VB = &tnl->vb;
+ struct gl_vertex_program *program = ctx->VertexProgram._Current;
+ struct gl_program_machine *machine = &store->machine;
+ GLuint outputs[VERT_RESULT_MAX], numOutputs;
+ GLuint i, j;
+
+ if (!program)
+ return GL_TRUE;
+
+ if (program->IsNVProgram) {
+ _mesa_load_tracked_matrices(ctx);
+ }
+ else {
+ /* ARB program or vertex shader */
+ _mesa_load_state_parameters(ctx, program->Base.Parameters);
+ }
+
+ /* make list of outputs to save some time below */
+ numOutputs = 0;
+ for (i = 0; i < VERT_RESULT_MAX; i++) {
+ if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) {
+ outputs[numOutputs++] = i;
+
+ if (!store->results[i].data) {
+ _mesa_vector4f_alloc( &store->results[i], 0, VB->Size, 32 );
+ store->results[i].size = 4;
+ }
+ }
+ }
+
+ map_textures(ctx, program);
+
+ for (i = 0; i < VB->Count; i++) {
+ GLuint attr;
+
+ init_machine(ctx, machine, tnl->CurInstance);
+
+#if 0
+ printf("Input %d: %f, %f, %f, %f\n", i,
+ VB->AttribPtr[0]->data[i][0],
+ VB->AttribPtr[0]->data[i][1],
+ VB->AttribPtr[0]->data[i][2],
+ VB->AttribPtr[0]->data[i][3]);
+ printf(" color: %f, %f, %f, %f\n",
+ VB->AttribPtr[3]->data[i][0],
+ VB->AttribPtr[3]->data[i][1],
+ VB->AttribPtr[3]->data[i][2],
+ VB->AttribPtr[3]->data[i][3]);
+ printf(" normal: %f, %f, %f, %f\n",
+ VB->AttribPtr[2]->data[i][0],
+ VB->AttribPtr[2]->data[i][1],
+ VB->AttribPtr[2]->data[i][2],
+ VB->AttribPtr[2]->data[i][3]);
+#endif
+
+ /* the vertex array case */
+ for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) {
+ if (program->Base.InputsRead & (1 << attr)) {
+ const GLubyte *ptr = (const GLubyte*) VB->AttribPtr[attr]->data;
+ const GLuint size = VB->AttribPtr[attr]->size;
+ const GLuint stride = VB->AttribPtr[attr]->stride;
+ const GLfloat *data = (GLfloat *) (ptr + stride * i);
+#ifdef NAN_CHECK
+ check_float(data[0]);
+ check_float(data[1]);
+ check_float(data[2]);
+ check_float(data[3]);
+#endif
+ COPY_CLEAN_4V(machine->VertAttribs[attr], size, data);
+ }
+ }
+
+ /* execute the program */
+ _mesa_execute_program(ctx, &program->Base, machine);
+
+ /* copy the output registers into the VB->attribs arrays */
+ for (j = 0; j < numOutputs; j++) {
+ const GLuint attr = outputs[j];
+#ifdef NAN_CHECK
+ check_float(machine->Outputs[attr][0]);
+ check_float(machine->Outputs[attr][1]);
+ check_float(machine->Outputs[attr][2]);
+ check_float(machine->Outputs[attr][3]);
+#endif
+ COPY_4V(store->results[attr].data[i], machine->Outputs[attr]);
+ }
+
+ /* FOGC is a special case. Fragment shader expects (f,0,0,1) */
+ if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) {
+ store->results[VERT_RESULT_FOGC].data[i][1] = 0.0;
+ store->results[VERT_RESULT_FOGC].data[i][2] = 0.0;
+ store->results[VERT_RESULT_FOGC].data[i][3] = 1.0;
+ }
+#ifdef NAN_CHECK
+ ASSERT(machine->Outputs[0][3] != 0.0F);
+#endif
+#if 0
+ printf("HPOS: %f %f %f %f\n",
+ machine->Outputs[0][0],
+ machine->Outputs[0][1],
+ machine->Outputs[0][2],
+ machine->Outputs[0][3]);
+#endif
+ }
+
+ unmap_textures(ctx, program);
+
+ /* Fixup fog and point size results if needed */
+ if (program->IsNVProgram) {
+ if (ctx->Fog.Enabled &&
+ (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) == 0) {
+ for (i = 0; i < VB->Count; i++) {
+ store->results[VERT_RESULT_FOGC].data[i][0] = 1.0;
+ }
+ }
+
+ if (ctx->VertexProgram.PointSizeEnabled &&
+ (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_PSIZ)) == 0) {
+ for (i = 0; i < VB->Count; i++) {
+ store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size;
+ }
+ }
+ }
+
+ if (program->IsPositionInvariant) {
+ /* We need the exact same transform as in the fixed function path here
+ * to guarantee invariance, depending on compiler optimization flags
+ * results could be different otherwise.
+ */
+ VB->ClipPtr = TransformRaw( &store->results[0],
+ &ctx->_ModelProjectMatrix,
+ VB->AttribPtr[0] );
+
+ /* Drivers expect this to be clean to element 4...
+ */
+ switch (VB->ClipPtr->size) {
+ case 1:
+ /* impossible */
+ case 2:
+ _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 );
+ /* fall-through */
+ case 3:
+ _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 );
+ /* fall-through */
+ case 4:
+ break;
+ }
+ }
+ else {
+ /* Setup the VB pointers so that the next pipeline stages get
+ * their data from the right place (the program output arrays).
+ */
+ VB->ClipPtr = &store->results[VERT_RESULT_HPOS];
+ VB->ClipPtr->size = 4;
+ VB->ClipPtr->count = VB->Count;
+ }
+
+ VB->AttribPtr[VERT_ATTRIB_COLOR0] = &store->results[VERT_RESULT_COL0];
+ VB->AttribPtr[VERT_ATTRIB_COLOR1] = &store->results[VERT_RESULT_COL1];
+ VB->AttribPtr[VERT_ATTRIB_FOG] = &store->results[VERT_RESULT_FOGC];
+ VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ];
+ VB->BackfaceColorPtr = &store->results[VERT_RESULT_BFC0];
+ VB->BackfaceSecondaryColorPtr = &store->results[VERT_RESULT_BFC1];
+
+ for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) {
+ VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]
+ = &store->results[VERT_RESULT_TEX0 + i];
+ }
+
+ for (i = 0; i < ctx->Const.MaxVarying; i++) {
+ if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) {
+ /* Note: varying results get put into the generic attributes */
+ VB->AttribPtr[VERT_ATTRIB_GENERIC0+i]
+ = &store->results[VERT_RESULT_VAR0 + i];
+ }
+ }
+
+
+ /* Perform NDC and cliptest operations:
+ */
+ return do_ndc_cliptest(ctx, store);
+}
+
+
+/**
+ * Called the first time stage->run is called. In effect, don't
+ * allocate data until the first time the stage is run.
+ */
+static GLboolean
+init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ struct vertex_buffer *VB = &(tnl->vb);
+ struct vp_stage_data *store;
+ const GLuint size = VB->Size;
+
+ stage->privatePtr = CALLOC(sizeof(*store));
+ store = VP_STAGE_DATA(stage);
+ if (!store)
+ return GL_FALSE;
+
+ /* a few other misc allocations */
+ _mesa_vector4f_alloc( &store->ndcCoords, 0, size, 32 );
+ store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 );
+
+ return GL_TRUE;
+}
+
+
+/**
+ * Destructor for this pipeline stage.
+ */
+static void
+dtr(struct tnl_pipeline_stage *stage)
+{
+ struct vp_stage_data *store = VP_STAGE_DATA(stage);
+
+ if (store) {
+ GLuint i;
+
+ /* free the vertex program result arrays */
+ for (i = 0; i < VERT_RESULT_MAX; i++)
+ _mesa_vector4f_free( &store->results[i] );
+
+ /* free misc arrays */
+ _mesa_vector4f_free( &store->ndcCoords );
+ _mesa_align_free( store->clipmask );
+
+ FREE( store );
+ stage->privatePtr = NULL;
+ }
+}
+
+
+static void
+validate_vp_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage)
+{
+ if (ctx->VertexProgram._Current) {
+ _swrast_update_texture_samplers(ctx);
+ }
+}
+
+
+
+/**
+ * Public description of this pipeline stage.
+ */
+const struct tnl_pipeline_stage _tnl_vertex_program_stage =
+{
+ "vertex-program",
+ NULL, /* private_data */
+ init_vp, /* create */
+ dtr, /* destroy */
+ validate_vp_stage, /* validate */
+ run_vp /* run -- initially set to ctr */
+};
diff --git a/mesalib/src/mesa/tnl/t_vertex_generic.c b/mesalib/src/mesa/tnl/t_vertex_generic.c
index 9dcecdd57..7b7f511ce 100644
--- a/mesalib/src/mesa/tnl/t_vertex_generic.c
+++ b/mesalib/src/mesa/tnl/t_vertex_generic.c
@@ -47,7 +47,7 @@
* NDC->Viewport mapping and store the results at 'v'.
*/
-static INLINE void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -59,7 +59,7 @@ static INLINE void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLu
out[3] = in[3];
}
-static INLINE void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -71,7 +71,7 @@ static INLINE void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLu
out[3] = 1;
}
-static INLINE void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -83,7 +83,7 @@ static INLINE void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLu
out[3] = 1;
}
-static INLINE void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -95,7 +95,7 @@ static INLINE void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLu
out[3] = 1;
}
-static INLINE void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -106,7 +106,7 @@ static INLINE void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLu
out[2] = vp[10] * in[2] + vp[14];
}
-static INLINE void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -117,7 +117,7 @@ static INLINE void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLu
out[2] = vp[14];
}
-static INLINE void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -128,7 +128,7 @@ static INLINE void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLu
out[2] = vp[14];
}
-static INLINE void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -138,7 +138,7 @@ static INLINE void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLu
out[1] = vp[5] * in[1] + vp[13];
}
-static INLINE void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLfloat *out = (GLfloat *)v;
@@ -153,7 +153,7 @@ static INLINE void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLu
* These functions do the same as above, except for the viewport mapping.
*/
-static INLINE void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -164,7 +164,7 @@ static INLINE void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v,
out[3] = in[3];
}
-static INLINE void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -175,7 +175,7 @@ static INLINE void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v,
out[3] = 1;
}
-static INLINE void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -186,7 +186,7 @@ static INLINE void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v,
out[3] = 1;
}
-static INLINE void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -197,7 +197,7 @@ static INLINE void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
out[3] = 1;
}
-static INLINE void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -207,14 +207,14 @@ static INLINE void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte
out[2] = in[3];
}
-static INLINE void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
(void) a; (void) v; (void) in;
DEBUG_INSERT;
exit(1);
}
-static INLINE void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -224,7 +224,7 @@ static INLINE void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v,
out[2] = in[2];
}
-static INLINE void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -234,7 +234,7 @@ static INLINE void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v,
out[2] = 0;
}
-static INLINE void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -245,7 +245,7 @@ static INLINE void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
}
-static INLINE void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -254,7 +254,7 @@ static INLINE void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v,
out[1] = in[1];
}
-static INLINE void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -263,7 +263,7 @@ static INLINE void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
out[1] = 0;
}
-static INLINE void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
GLfloat *out = (GLfloat *)(v);
(void) a;
@@ -271,13 +271,13 @@ static INLINE void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
out[0] = in[0];
}
-static INLINE void insert_null( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
+static inline void insert_null( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in )
{
DEBUG_INSERT;
(void) a; (void) v; (void) in;
}
-static INLINE void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLchan *c = (GLchan *)v;
@@ -289,7 +289,7 @@ static INLINE void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, G
UNCLAMPED_FLOAT_TO_CHAN(c[3], in[3]);
}
-static INLINE void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLchan *c = (GLchan *)v;
@@ -301,7 +301,7 @@ static INLINE void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, G
c[3] = CHAN_MAX;
}
-static INLINE void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLchan *c = (GLchan *)v;
@@ -313,7 +313,7 @@ static INLINE void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, G
c[3] = CHAN_MAX;
}
-static INLINE void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
GLchan *c = (GLchan *)v;
@@ -325,7 +325,7 @@ static INLINE void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, G
c[3] = CHAN_MAX;
}
-static INLINE void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -336,7 +336,7 @@ static INLINE void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLu
UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]);
}
-static INLINE void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -347,7 +347,7 @@ static INLINE void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -358,7 +358,7 @@ static INLINE void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -369,7 +369,7 @@ static INLINE void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -380,7 +380,7 @@ static INLINE void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLu
UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]);
}
-static INLINE void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -391,7 +391,7 @@ static INLINE void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -402,7 +402,7 @@ static INLINE void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -413,7 +413,7 @@ static INLINE void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLu
v[3] = 0xff;
}
-static INLINE void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -424,7 +424,7 @@ static INLINE void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLu
UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]);
}
-static INLINE void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -435,7 +435,7 @@ static INLINE void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -446,7 +446,7 @@ static INLINE void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -457,7 +457,7 @@ static INLINE void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -468,7 +468,7 @@ static INLINE void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLu
UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]);
}
-static INLINE void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -479,7 +479,7 @@ static INLINE void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -490,7 +490,7 @@ static INLINE void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -501,7 +501,7 @@ static INLINE void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLu
v[0] = 0xff;
}
-static INLINE void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -511,7 +511,7 @@ static INLINE void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLub
UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]);
}
-static INLINE void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -521,7 +521,7 @@ static INLINE void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLub
v[2] = 0;
}
-static INLINE void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -531,7 +531,7 @@ static INLINE void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLub
v[2] = 0;
}
-static INLINE void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -541,7 +541,7 @@ static INLINE void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLub
UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]);
}
-static INLINE void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -551,7 +551,7 @@ static INLINE void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLub
v[0] = 0;
}
-static INLINE void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
@@ -562,7 +562,7 @@ static INLINE void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLub
}
-static INLINE void insert_1ub_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
+static inline void insert_1ub_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v,
const GLfloat *in )
{
DEBUG_INSERT;
diff --git a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h
index e1023834a..0bf5c9165 100644
--- a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h
+++ b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h
@@ -59,12 +59,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#define MAT_ATTR( A, N, V ) ATTR( A, N, (V)[0], (V)[1], (V)[2], (V)[3] )
-static INLINE float conv_ui10_to_norm_float(unsigned ui10)
+static inline float conv_ui10_to_norm_float(unsigned ui10)
{
return (float)(ui10) / 1023.0;
}
-static INLINE float conv_ui2_to_norm_float(unsigned ui2)
+static inline float conv_ui2_to_norm_float(unsigned ui2)
{
return (float)(ui2) / 3.0;
}
@@ -91,28 +91,28 @@ static INLINE float conv_ui2_to_norm_float(unsigned ui2)
struct attr_bits_10 {signed int x:10;};
struct attr_bits_2 {signed int x:2;};
-static INLINE float conv_i10_to_i(int i10)
+static inline float conv_i10_to_i(int i10)
{
struct attr_bits_10 val;
val.x = i10;
return (float)val.x;
}
-static INLINE float conv_i2_to_i(int i2)
+static inline float conv_i2_to_i(int i2)
{
struct attr_bits_2 val;
val.x = i2;
return (float)val.x;
}
-static INLINE float conv_i10_to_norm_float(int i10)
+static inline float conv_i10_to_norm_float(int i10)
{
struct attr_bits_10 val;
val.x = i10;
return (2.0F * (float)val.x + 1.0F) * (1.0F / 511.0F);
}
-static INLINE float conv_i2_to_norm_float(int i2)
+static inline float conv_i2_to_norm_float(int i2)
{
struct attr_bits_2 val;
val.x = i2;
diff --git a/mesalib/src/mesa/vbo/vbo_context.h b/mesalib/src/mesa/vbo/vbo_context.h
index df1d8c041..ef8a2a2b6 100644
--- a/mesalib/src/mesa/vbo/vbo_context.h
+++ b/mesalib/src/mesa/vbo/vbo_context.h
@@ -1,113 +1,113 @@
-/*
- * mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 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.
- */
-
-/**
- * \file vbo_context.h
- * \brief VBO builder module datatypes and definitions.
- * \author Keith Whitwell
- */
-
-
-/**
- * \mainpage The VBO builder module
- *
- * This module hooks into the GL dispatch table and catches all vertex
- * building and drawing commands, such as glVertex3f, glBegin and
- * glDrawArrays. The module stores all incoming vertex data as arrays
- * in GL vertex buffer objects (VBOs), and translates all drawing
- * commands into calls to a driver supplied DrawPrimitives() callback.
- *
- * The module captures both immediate mode and display list drawing,
- * and manages the allocation, reference counting and deallocation of
- * vertex buffer objects itself.
- *
- * The DrawPrimitives() callback can be either implemented by the
- * driver itself or hooked to the tnl module's _tnl_draw_primitives()
- * function for hardware without tnl capablilties or during fallbacks.
- */
-
-
-#ifndef _VBO_CONTEXT_H
-#define _VBO_CONTEXT_H
-
-#include "main/mfeatures.h"
-#include "vbo.h"
-#include "vbo_attrib.h"
-#include "vbo_exec.h"
-#include "vbo_save.h"
-
-
-struct vbo_context {
- struct gl_client_array currval[VBO_ATTRIB_MAX];
-
- /* These point into the above. TODO: remove.
- */
- struct gl_client_array *legacy_currval;
- struct gl_client_array *generic_currval;
- struct gl_client_array *mat_currval;
-
- GLuint map_vp_none[VERT_ATTRIB_MAX];
- GLuint map_vp_arb[VERT_ATTRIB_MAX];
-
- GLfloat *current[VBO_ATTRIB_MAX]; /* points into ctx->Current, ctx->Light.Material */
- GLfloat CurrentFloatEdgeFlag;
-
-
- struct vbo_exec_context exec;
-#if FEATURE_dlist
- struct vbo_save_context save;
-#endif
-
- /* Callback into the driver. This must always succeed, the driver
- * is responsible for initiating any fallback actions required:
- */
- vbo_draw_func draw_prims;
-};
-
-
-static INLINE struct vbo_context *vbo_context(struct gl_context *ctx)
-{
- return (struct vbo_context *)(ctx->swtnl_im);
-}
-
-
-/**
- * Return VP_x token to indicate whether we're running fixed-function
- * vertex transformation, an NV vertex program or ARB vertex program/shader.
- */
-static INLINE enum vp_mode
-get_program_mode( struct gl_context *ctx )
-{
- if (!ctx->VertexProgram._Current)
- return VP_NONE;
- else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram)
- return VP_NONE;
- else if (ctx->VertexProgram._Current->IsNVProgram)
- return VP_NV;
- else
- return VP_ARB;
-}
-
-
-#endif
+/*
+ * mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 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.
+ */
+
+/**
+ * \file vbo_context.h
+ * \brief VBO builder module datatypes and definitions.
+ * \author Keith Whitwell
+ */
+
+
+/**
+ * \mainpage The VBO builder module
+ *
+ * This module hooks into the GL dispatch table and catches all vertex
+ * building and drawing commands, such as glVertex3f, glBegin and
+ * glDrawArrays. The module stores all incoming vertex data as arrays
+ * in GL vertex buffer objects (VBOs), and translates all drawing
+ * commands into calls to a driver supplied DrawPrimitives() callback.
+ *
+ * The module captures both immediate mode and display list drawing,
+ * and manages the allocation, reference counting and deallocation of
+ * vertex buffer objects itself.
+ *
+ * The DrawPrimitives() callback can be either implemented by the
+ * driver itself or hooked to the tnl module's _tnl_draw_primitives()
+ * function for hardware without tnl capablilties or during fallbacks.
+ */
+
+
+#ifndef _VBO_CONTEXT_H
+#define _VBO_CONTEXT_H
+
+#include "main/mfeatures.h"
+#include "vbo.h"
+#include "vbo_attrib.h"
+#include "vbo_exec.h"
+#include "vbo_save.h"
+
+
+struct vbo_context {
+ struct gl_client_array currval[VBO_ATTRIB_MAX];
+
+ /* These point into the above. TODO: remove.
+ */
+ struct gl_client_array *legacy_currval;
+ struct gl_client_array *generic_currval;
+ struct gl_client_array *mat_currval;
+
+ GLuint map_vp_none[VERT_ATTRIB_MAX];
+ GLuint map_vp_arb[VERT_ATTRIB_MAX];
+
+ GLfloat *current[VBO_ATTRIB_MAX]; /* points into ctx->Current, ctx->Light.Material */
+ GLfloat CurrentFloatEdgeFlag;
+
+
+ struct vbo_exec_context exec;
+#if FEATURE_dlist
+ struct vbo_save_context save;
+#endif
+
+ /* Callback into the driver. This must always succeed, the driver
+ * is responsible for initiating any fallback actions required:
+ */
+ vbo_draw_func draw_prims;
+};
+
+
+static inline struct vbo_context *vbo_context(struct gl_context *ctx)
+{
+ return (struct vbo_context *)(ctx->swtnl_im);
+}
+
+
+/**
+ * Return VP_x token to indicate whether we're running fixed-function
+ * vertex transformation, an NV vertex program or ARB vertex program/shader.
+ */
+static inline enum vp_mode
+get_program_mode( struct gl_context *ctx )
+{
+ if (!ctx->VertexProgram._Current)
+ return VP_NONE;
+ else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram)
+ return VP_NONE;
+ else if (ctx->VertexProgram._Current->IsNVProgram)
+ return VP_NV;
+ else
+ return VP_ARB;
+}
+
+
+#endif
diff --git a/mesalib/src/mesa/vbo/vbo_exec.h b/mesalib/src/mesa/vbo/vbo_exec.h
index d52a557e0..9a1b5a127 100644
--- a/mesalib/src/mesa/vbo/vbo_exec.h
+++ b/mesalib/src/mesa/vbo/vbo_exec.h
@@ -179,12 +179,12 @@ void vbo_exec_vtx_map( struct vbo_exec_context *exec );
#else /* FEATURE_beginend */
-static INLINE void
+static inline void
vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap )
{
}
-static INLINE void
+static inline void
vbo_exec_vtx_map( struct vbo_exec_context *exec )
{
}
diff --git a/mesalib/src/mesa/vbo/vbo_rebase.c b/mesalib/src/mesa/vbo/vbo_rebase.c
index a1eab752a..97c8d1297 100644
--- a/mesalib/src/mesa/vbo/vbo_rebase.c
+++ b/mesalib/src/mesa/vbo/vbo_rebase.c
@@ -78,7 +78,8 @@ GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] )
GLuint i;
for (i = 0; i < VERT_ATTRIB_MAX; i++)
- if (arrays[i]->BufferObj->Name == 0)
+ if (arrays[i]->StrideB &&
+ arrays[i]->BufferObj->Name == 0)
return GL_FALSE;
return GL_TRUE;
diff --git a/mesalib/src/mesa/vbo/vbo_save.h b/mesalib/src/mesa/vbo/vbo_save.h
index 45cd29979..a064090cf 100644
--- a/mesalib/src/mesa/vbo/vbo_save.h
+++ b/mesalib/src/mesa/vbo/vbo_save.h
@@ -187,12 +187,12 @@ void vbo_save_api_init( struct vbo_save_context *save );
#else /* FEATURE_dlist */
-static INLINE void
+static inline void
vbo_save_init( struct gl_context *ctx )
{
}
-static INLINE void
+static inline void
vbo_save_destroy( struct gl_context *ctx )
{
}