summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configs/autoconf.in15
-rw-r--r--configure.ac59
-rw-r--r--include/GL/internal/dri_interface.h14
-rw-r--r--progs/demos/gloss.c7
-rw-r--r--progs/demos/vao_demo.c2
-rw-r--r--progs/egl/opengles2/Makefile12
-rw-r--r--progs/egl/opengles2/es2gears.c421
-rw-r--r--progs/tests/blendminmax.c2
-rw-r--r--progs/tests/blendsquare.c2
-rw-r--r--progs/tests/bug_3101.c2
-rw-r--r--progs/tests/bug_3195.c2
-rw-r--r--progs/tests/crossbar.c2
-rw-r--r--progs/tests/interleave.c2
-rw-r--r--progs/tests/invert.c2
-rw-r--r--progs/tests/prog_parameter.c2
-rw-r--r--progs/tests/stencil_twoside.c2
-rw-r--r--progs/tests/stencil_wrap.c2
-rw-r--r--progs/tests/vao-01.c2
-rw-r--r--progs/tests/vao-02.c2
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c69
-rw-r--r--src/gallium/auxiliary/Makefile1
-rw-r--r--src/gallium/auxiliary/SConscript1
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_context.c48
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.c6
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c36
-rw-r--r--src/gallium/auxiliary/draw/draw_vs.c16
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_arit.c29
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_limits.h53
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample.h5
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c207
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi.h5
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c142
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_dump.c25
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c7
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.h4
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_sanity.c4
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_text.c41
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_ureg.c22
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_ureg.h3
-rw-r--r--src/gallium/auxiliary/translate/translate_generic.c391
-rw-r--r--src/gallium/auxiliary/util/u_blitter.c1
-rw-r--r--src/gallium/auxiliary/util/u_caps.c1
-rw-r--r--src/gallium/auxiliary/util/u_clear.h1
-rw-r--r--src/gallium/auxiliary/util/u_format.h28
-rw-r--r--src/gallium/auxiliary/util/u_format_s3tc.c4
-rw-r--r--src/gallium/auxiliary/util/u_framebuffer.c111
-rw-r--r--src/gallium/auxiliary/util/u_framebuffer.h49
-rw-r--r--src/gallium/auxiliary/util/u_rect.c158
-rw-r--r--src/gallium/auxiliary/util/u_rect.h19
-rw-r--r--src/gallium/auxiliary/util/u_surface.c188
-rw-r--r--src/gallium/auxiliary/util/u_surface.h19
-rw-r--r--src/gallium/drivers/cell/ppu/cell_surface.c2
-rw-r--r--src/gallium/drivers/i965/brw_wm_debug.c3
-rw-r--r--src/gallium/drivers/i965/intel_decode.c11
-rw-r--r--src/gallium/drivers/identity/id_context.c136
-rw-r--r--src/gallium/drivers/identity/id_objects.c42
-rw-r--r--src/gallium/drivers/identity/id_objects.h13
-rw-r--r--src/gallium/drivers/identity/id_screen.c34
-rw-r--r--src/gallium/drivers/llvmpipe/.gitignore4
-rw-r--r--src/gallium/drivers/llvmpipe/lp_jit.c4
-rw-r--r--src/gallium/drivers/llvmpipe/lp_scene.c1
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup.c1
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c55
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_surface.c1
-rw-r--r--src/gallium/drivers/llvmpipe/lp_surface.c1
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tex_sample.c11
-rw-r--r--src/gallium/drivers/nv50/nv50_program.c15
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.c18
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.h3
-rw-r--r--src/gallium/drivers/nv50/nv50_surface.c28
-rw-r--r--src/gallium/drivers/r300/r300_blit.c9
-rw-r--r--src/gallium/drivers/r300/r300_context.c3
-rw-r--r--src/gallium/drivers/r300/r300_context.h17
-rw-r--r--src/gallium/drivers/r300/r300_debug.c1
-rw-r--r--src/gallium/drivers/r300/r300_emit.c26
-rw-r--r--src/gallium/drivers/r300/r300_emit.h3
-rw-r--r--src/gallium/drivers/r300/r300_screen.h1
-rw-r--r--src/gallium/drivers/r300/r300_state.c64
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.c118
-rw-r--r--src/gallium/drivers/r300/r300_state_inlines.h10
-rw-r--r--src/gallium/drivers/r300/r300_texture.c59
-rw-r--r--src/gallium/drivers/r300/r300_vs.c132
-rw-r--r--src/gallium/drivers/r300/r300_vs.h10
-rw-r--r--src/gallium/drivers/softpipe/sp_quad_blend.c168
-rw-r--r--src/gallium/drivers/softpipe/sp_surface.c2
-rw-r--r--src/gallium/drivers/softpipe/sp_tex_tile_cache.c16
-rw-r--r--src/gallium/drivers/svga/svga_context.c18
-rw-r--r--src/gallium/drivers/svga/svga_draw_arrays.c5
-rw-r--r--src/gallium/drivers/svga/svga_pipe_query.c3
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer.c4
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer.h2
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer_host.c2
-rw-r--r--src/gallium/drivers/svga/svga_resource_buffer_upload.c22
-rw-r--r--src/gallium/drivers/svga/svga_resource_texture.c37
-rw-r--r--src/gallium/drivers/svga/svga_sampler_view.c2
-rw-r--r--src/gallium/drivers/svga/svga_screen.c27
-rw-r--r--src/gallium/drivers/svga/svga_screen.h12
-rw-r--r--src/gallium/drivers/svga/svga_surface.c43
-rw-r--r--src/gallium/drivers/svga/svga_surface.h1
-rw-r--r--src/gallium/drivers/svga/svga_winsys.h13
-rw-r--r--src/gallium/drivers/trace/tr_context.c2
-rw-r--r--src/gallium/include/pipe/p_shader_tokens.h5
-rw-r--r--src/gallium/state_trackers/dri/common/dri_context.c2
-rw-r--r--src/gallium/state_trackers/dri/common/dri_context.h4
-rw-r--r--src/gallium/state_trackers/dri/drm/dri1.c1
-rw-r--r--src/gallium/state_trackers/vega/renderer.c1
-rw-r--r--src/gallium/state_trackers/xorg/xorg_exa.c1
-rw-r--r--src/gallium/state_trackers/xorg/xorg_renderer.c1
-rw-r--r--src/gallium/targets/dri-swrast/Makefile3
-rw-r--r--src/gallium/targets/dri-swrast/swrast_drm_api.c3
-rwxr-xr-xsrc/gallium/tests/python/retrace/interpreter.py7
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_buffer.c15
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_r300.c2
-rw-r--r--src/gles/Makefile70
-rw-r--r--src/glx/glxext.c3
-rw-r--r--src/mesa/Makefile78
-rw-r--r--src/mesa/drivers/dri/Makefile.template1
-rw-r--r--src/mesa/drivers/dri/common/dri_util.c58
-rw-r--r--src/mesa/drivers/dri/common/dri_util.h7
-rw-r--r--src/mesa/drivers/dri/common/drisw_util.c3
-rw-r--r--src/mesa/drivers/dri/common/drisw_util.h5
-rw-r--r--src/mesa/drivers/dri/i810/i810context.c3
-rw-r--r--src/mesa/drivers/dri/i810/i810screen.h3
-rw-r--r--src/mesa/drivers/dri/i915/Makefile1
-rw-r--r--src/mesa/drivers/dri/i915/i830_context.c2
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.c5
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.h3
l---------src/mesa/drivers/dri/i915/intel_extensions_es2.c1
-rw-r--r--src/mesa/drivers/dri/i965/Makefile1
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h3
l---------src/mesa/drivers/dri/i965/intel_extensions_es2.c1
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c16
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.h1
-rw-r--r--src/mesa/drivers/dri/intel/intel_extensions.h2
-rw-r--r--src/mesa/drivers/dri/intel/intel_extensions_es2.c94
-rw-r--r--src/mesa/drivers/dri/intel/intel_screen.c26
-rw-r--r--src/mesa/drivers/dri/mach64/mach64_context.c3
-rw-r--r--src/mesa/drivers/dri/mach64/mach64_context.h3
-rw-r--r--src/mesa/drivers/dri/mga/mga_xmesa.c3
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.c3
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.h3
-rw-r--r--src/mesa/drivers/dri/r128/r128_context.c3
-rw-r--r--src/mesa/drivers/dri/r128/r128_context.h3
-rw-r--r--src/mesa/drivers/dri/r200/r200_context.c3
-rw-r--r--src/mesa/drivers/dri/r200/r200_context.h3
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.c3
-rw-r--r--src/mesa/drivers/dri/r300/r300_context.h3
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.c3
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.h3
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_context.c7
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_context.h3
-rw-r--r--src/mesa/drivers/dri/savage/savage_xmesa.c3
-rw-r--r--src/mesa/drivers/dri/sis/sis_context.c3
-rw-r--r--src/mesa/drivers/dri/sis/sis_context.h3
-rw-r--r--src/mesa/drivers/dri/swrast/swrast.c3
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_context.c3
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_context.h3
-rw-r--r--src/mesa/drivers/dri/unichrome/via_context.c3
-rw-r--r--src/mesa/drivers/dri/unichrome/via_screen.h3
-rw-r--r--src/mesa/es/Makefile18
-rw-r--r--src/mesa/es/glapi/Makefile9
-rw-r--r--src/mesa/es/main/es_enable.c91
-rw-r--r--src/mesa/es/main/es_fbo.c37
-rw-r--r--src/mesa/es/main/es_texgen.c73
-rw-r--r--src/mesa/es/main/specials_es1.c218
-rw-r--r--src/mesa/es/main/specials_es2.c179
-rw-r--r--src/mesa/es/main/stubs.c131
-rw-r--r--src/mesa/es/sources.mak49
-rw-r--r--src/mesa/glapi/gen/Makefile6
-rw-r--r--src/mesa/glapi/gen/gl_enums.py26
-rw-r--r--src/mesa/glapi/gen/remap_helper.py12
-rw-r--r--src/mesa/glesv1_cm.pc.in12
-rw-r--r--src/mesa/glesv2.pc.in12
-rw-r--r--src/mesa/main/APIspec.dtd (renamed from src/mesa/es/main/APIspec.dtd)0
-rw-r--r--src/mesa/main/APIspec.py (renamed from src/mesa/es/main/APIspec.py)0
-rw-r--r--src/mesa/main/APIspec.xml (renamed from src/mesa/es/main/APIspec.xml)28
-rw-r--r--src/mesa/main/APIspecutil.py (renamed from src/mesa/es/main/APIspecutil.py)7
-rw-r--r--src/mesa/main/api_exec.c50
-rw-r--r--src/mesa/main/api_exec.h12
-rw-r--r--src/mesa/main/config.h2
-rw-r--r--src/mesa/main/context.c170
-rw-r--r--src/mesa/main/context.h16
-rw-r--r--src/mesa/main/debug.c4
-rw-r--r--src/mesa/main/dlist.c15
-rw-r--r--src/mesa/main/dlist.h2
-rw-r--r--src/mesa/main/drawtex.c (renamed from src/mesa/es/main/drawtex.c)17
-rw-r--r--src/mesa/main/drawtex.h (renamed from src/mesa/es/main/drawtex.h)8
-rw-r--r--src/mesa/main/enable.c28
-rw-r--r--src/mesa/main/enums.c6598
-rw-r--r--src/mesa/main/es_generator.py (renamed from src/mesa/es/main/es_generator.py)55
-rw-r--r--src/mesa/main/extensions.c205
-rw-r--r--src/mesa/main/fbobject.c15
-rw-r--r--src/mesa/main/fbobject.h4
-rw-r--r--src/mesa/main/get.h23
-rw-r--r--src/mesa/main/get_gen_es.py (renamed from src/mesa/es/main/get_gen.py)21
-rw-r--r--src/mesa/main/getstring.c37
-rw-r--r--src/mesa/main/glheader.h21
-rw-r--r--src/mesa/main/mtypes.h10
-rw-r--r--src/mesa/main/querymatrix.c (renamed from src/mesa/es/main/es_query_matrix.c)0
-rw-r--r--src/mesa/main/remap.c53
-rw-r--r--src/mesa/main/remap.h65
-rw-r--r--src/mesa/main/remap_helper.h11
-rw-r--r--src/mesa/main/shaders.c30
-rw-r--r--src/mesa/main/shaders.h11
-rw-r--r--src/mesa/main/texgen.c32
-rw-r--r--src/mesa/main/texgen.h11
-rw-r--r--src/mesa/main/teximage.c30
-rw-r--r--src/mesa/main/texobj.c4
-rw-r--r--src/mesa/main/texpal.c (renamed from src/mesa/es/main/es_cpaltex.c)61
-rw-r--r--src/mesa/main/texpal.h38
-rw-r--r--src/mesa/main/version.c128
-rw-r--r--src/mesa/shader/slang/slang_codegen.c5
-rw-r--r--src/mesa/shader/slang/slang_compile_variable.h2
-rw-r--r--src/mesa/shader/slang/slang_emit.c31
-rw-r--r--src/mesa/shader/slang/slang_ir.c8
-rw-r--r--src/mesa/shader/slang/slang_label.c2
-rw-r--r--src/mesa/shader/slang/slang_link.c5
-rw-r--r--src/mesa/shader/slang/slang_print.c8
-rw-r--r--src/mesa/shader/slang/slang_utility.c2
-rw-r--r--src/mesa/sources.mak15
-rw-r--r--src/mesa/state_tracker/st_atom_sampler.c9
-rw-r--r--src/mesa/state_tracker/st_atom_texture.c20
-rw-r--r--src/mesa/state_tracker/st_cb_drawtex.c (renamed from src/mesa/es/state_tracker/st_cb_drawtex.c)0
-rw-r--r--src/mesa/state_tracker/st_cb_drawtex.h (renamed from src/mesa/es/state_tracker/st_cb_drawtex.h)0
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c8
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c292
-rw-r--r--src/mesa/state_tracker/st_cb_texture.h3
-rw-r--r--src/mesa/state_tracker/st_context.c12
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c9
-rw-r--r--src/mesa/state_tracker/st_texture.c31
-rw-r--r--src/mesa/state_tracker/st_texture.h12
-rw-r--r--src/mesa/vbo/vbo.h24
-rw-r--r--src/mesa/vbo/vbo_context.c6
-rw-r--r--src/mesa/vbo/vbo_exec_api.c57
-rw-r--r--src/mesa/x86-64/xform4.S8
236 files changed, 7291 insertions, 5946 deletions
diff --git a/configs/autoconf.in b/configs/autoconf.in
index 3ef385a8a66..119aadb6d4f 100644
--- a/configs/autoconf.in
+++ b/configs/autoconf.in
@@ -14,6 +14,8 @@ ARCH_FLAGS = @ARCH_FLAGS@
ASM_FLAGS = @ASM_FLAGS@
PIC_FLAGS = @PIC_FLAGS@
DEFINES = @DEFINES@
+API_DEFINES = @API_DEFINES@
+APIS = @APIS@
CFLAGS = @CPPFLAGS@ @CFLAGS@ \
$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ \
@@ -31,9 +33,10 @@ LLVM_LDFLAGS = @LLVM_LDFLAGS@
LLVM_LIBS = @LLVM_LIBS@
-# Assembler
+# Source selection
MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@
+ES_SOURCES = @ES1_SOURCES@ @ES2_SOURCES@
# Misc tools and flags
MAKE = @MAKE@
@@ -53,6 +56,8 @@ GLU_LIB = GLU
GLUT_LIB = glut
GLW_LIB = GLw
OSMESA_LIB = @OSMESA_LIB@
+GLESv1_CM_LIB = GLESv1_CM
+GLESv2_LIB = GLESv2
# Library names (actual file names)
GL_LIB_NAME = @GL_LIB_NAME@
@@ -61,6 +66,8 @@ GLUT_LIB_NAME = @GLUT_LIB_NAME@
GLW_LIB_NAME = @GLW_LIB_NAME@
OSMESA_LIB_NAME = @OSMESA_LIB_NAME@
EGL_LIB_NAME = @EGL_LIB_NAME@
+GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@
+GLESv2_LIB_NAME = @GLESv2_LIB_NAME@
# Globs used to install the lib and all symlinks
GL_LIB_GLOB = @GL_LIB_GLOB@
@@ -69,6 +76,8 @@ GLUT_LIB_GLOB = @GLUT_LIB_GLOB@
GLW_LIB_GLOB = @GLW_LIB_GLOB@
OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@
EGL_LIB_GLOB = @EGL_LIB_GLOB@
+GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@
+GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@
# Directories to build
LIB_DIR = @LIB_DIR@
@@ -110,6 +119,8 @@ GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@
+GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_LIB_DEPS@
+GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@
# DRI dependencies
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
@@ -158,6 +169,8 @@ GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@
GLW_PC_CFLAGS = @GLW_PC_CFLAGS@
OSMESA_PC_REQ = @OSMESA_PC_REQ@
OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@
+GLESv1_CM_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
+GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
EGL_DRI2_CFLAGS = @EGL_DRI2_CFLAGS@
EGL_DRI2_LIBS = @EGL_DRI2_LIBS@
diff --git a/configure.ac b/configure.ac
index 01ed1b3cd31..354c220b5c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -279,6 +279,8 @@ GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
+GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
+GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
@@ -286,6 +288,8 @@ GLUT_LIB_GLOB='lib$(GLUT_LIB).*'${LIB_EXTENSION}'*'
GLW_LIB_GLOB='lib$(GLW_LIB).*'${LIB_EXTENSION}'*'
OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
+GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*'
+GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*'
AC_SUBST([GL_LIB_NAME])
AC_SUBST([GLU_LIB_NAME])
@@ -293,6 +297,8 @@ AC_SUBST([GLUT_LIB_NAME])
AC_SUBST([GLW_LIB_NAME])
AC_SUBST([OSMESA_LIB_NAME])
AC_SUBST([EGL_LIB_NAME])
+AC_SUBST([GLESv1_CM_LIB_NAME])
+AC_SUBST([GLESv2_LIB_NAME])
AC_SUBST([GL_LIB_GLOB])
AC_SUBST([GLU_LIB_GLOB])
@@ -300,6 +306,8 @@ AC_SUBST([GLUT_LIB_GLOB])
AC_SUBST([GLW_LIB_GLOB])
AC_SUBST([OSMESA_LIB_GLOB])
AC_SUBST([EGL_LIB_GLOB])
+AC_SUBST([GLESv1_CM_LIB_GLOB])
+AC_SUBST([GLESv2_LIB_GLOB])
dnl
dnl Arch/platform-specific settings
@@ -654,6 +662,10 @@ dri)
# need DRM libs, -lpthread, etc.
GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
GL_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
+ GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
+ GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
+ GLESv2_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
+ GLESv2_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
;;
osmesa)
# No libGL for osmesa
@@ -665,6 +677,8 @@ AC_SUBST([GL_PC_REQ_PRIV])
AC_SUBST([GL_PC_LIB_PRIV])
AC_SUBST([GL_PC_CFLAGS])
AC_SUBST([DRI_PC_REQ_PRIV])
+AC_SUBST([GLESv1_LIB_DEPS])
+AC_SUBST([GLESv2_LIB_DEPS])
dnl
dnl More X11 setup
@@ -712,6 +726,51 @@ if test "x$with_dri_drivers" = x; then
with_dri_drivers=no
fi
+dnl Determine which APIs to support
+AC_ARG_ENABLE([opengl],
+ [AS_HELP_STRING([--disable-opengl],
+ [disable support for standard OpenGL API @<:@default=no@:>@])],
+ [enable_opengl="$enableval"],
+ [enable_opengl=yes])
+AC_ARG_ENABLE([gles1],
+ [AS_HELP_STRING([--enable-gles1],
+ [enable support for OpenGL ES 1.x API @<:@default=no@:>@])],
+ [enable_gles1="$enableval"],
+ [enable_gles1=no])
+AC_ARG_ENABLE([gles2],
+ [AS_HELP_STRING([--enable-gles2],
+ [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
+ [enable_gles2="$enableval"],
+ [enable_gles2=no])
+
+API_DEFINES=""
+APIS=""
+ES1_SOURCES=""
+ES2_SOURCES=""
+if test "x$enable_opengl" = xno; then
+ API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
+else
+ API_DEFINES="$API_DEFINES -DFEATURE_GL=1"
+ APIS="$APIS gl"
+fi
+if test "x$enable_gles1" = xyes; then
+ API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
+ APIS="$APIS es1"
+ ES1_SOURCES='$(ES1_SOURCES)'
+fi
+if test "x$enable_gles2" = xyes; then
+ API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
+ APIS="$APIS es2"
+ ES2_SOURCES='$(ES2_SOURCES)'
+fi
+if test "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
+ SRC_DIRS="$SRC_DIRS gles"
+fi
+AC_SUBST([API_DEFINES])
+AC_SUBST([APIS])
+AC_SUBST([ES1_SOURCES])
+AC_SUBST([ES2_SOURCES])
+
dnl If $with_dri_drivers is yes, directories will be added through
dnl platform checks
DRI_DIRS=""
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index a952a1db9b3..172669e3955 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -736,7 +736,11 @@ struct __DRIdri2LoaderExtensionRec {
* constructors for DRI2.
*/
#define __DRI_DRI2 "DRI_DRI2"
-#define __DRI_DRI2_VERSION 1
+#define __DRI_DRI2_VERSION 2
+
+#define __DRI_API_OPENGL 0
+#define __DRI_API_GLES 1
+#define __DRI_API_GLES2 2
struct __DRIdri2ExtensionRec {
__DRIextension base;
@@ -755,6 +759,14 @@ struct __DRIdri2ExtensionRec {
__DRIcontext *shared,
void *loaderPrivate);
+ /* Since version 2 */
+ unsigned int (*getAPIMask)(__DRIscreen *screen);
+
+ __DRIcontext *(*createNewContextForAPI)(__DRIscreen *screen,
+ int api,
+ const __DRIconfig *config,
+ __DRIcontext *shared,
+ void *data);
};
diff --git a/progs/demos/gloss.c b/progs/demos/gloss.c
index 450861e5778..ddfd548b8b9 100644
--- a/progs/demos/gloss.c
+++ b/progs/demos/gloss.c
@@ -282,6 +282,13 @@ static void Init( int argc, char *argv[] )
}
}
+ if (convolve && !glutExtensionSupported("GL_ARB_imaging")) {
+ fprintf(stderr,
+ "GL_ARB_imaging is not supported, disabling convolution.\n");
+ exit(1);
+ }
+
+
if (fullscreen)
glutFullScreen();
diff --git a/progs/demos/vao_demo.c b/progs/demos/vao_demo.c
index 5ce07ecc63b..b81004b067d 100644
--- a/progs/demos/vao_demo.c
+++ b/progs/demos/vao_demo.c
@@ -272,7 +272,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/egl/opengles2/Makefile b/progs/egl/opengles2/Makefile
index 1ee2af24127..89feb34acc1 100644
--- a/progs/egl/opengles2/Makefile
+++ b/progs/egl/opengles2/Makefile
@@ -6,7 +6,9 @@ include $(TOP)/configs/current
INCLUDE_DIRS = \
-I$(TOP)/include \
- $(X11_CFLAGS)
+ -I$(TOP)/progs/egl/eglut \
+ $(X11_CFLAGS) \
+
HEADERS = $(TOP)/include/GLES/egl.h
@@ -18,11 +20,12 @@ ES2_LIB_DEPS = \
ES2_LIBS = \
-L$(TOP)/$(LIB_DIR) -lEGL \
- -L$(TOP)/$(LIB_DIR) -lGLESv2 $(LIBDRM_LIB) $(X11_LIBS)
+ -L$(TOP)/$(LIB_DIR) -lGLESv2 $(LIBDRM_LIB) $(X11_LIBS) \
PROGRAMS = \
es2_info \
- tri
+ tri \
+ es2gears
.c.o:
@@ -43,7 +46,8 @@ es2_info: es2_info.o $(ES2_LIB_DEPS)
tri: tri.o $(ES2_LIB_DEPS)
$(CC) $(CFLAGS) tri.o $(ES2_LIBS) -o $@
-
+es2gears: es2gears.o $(ES2_LIB_DEPS)
+ $(CC) $(CFLAGS) es2gears.o ../eglut/libeglut-x11.a $(ES2_LIBS) -lm -o $@
clean:
rm -f *.o *~
diff --git a/progs/egl/opengles2/es2gears.c b/progs/egl/opengles2/es2gears.c
new file mode 100644
index 00000000000..8e7a3e52490
--- /dev/null
+++ b/progs/egl/opengles2/es2gears.c
@@ -0,0 +1,421 @@
+/*
+ * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Ported to GLES2.
+ * Kristian Høgsberg <[email protected]>
+ * May 3, 2010
+ */
+
+/*
+ * Command line options:
+ * -info print GL implementation information
+ *
+ */
+
+
+#define GL_GLEXT_PROTOTYPES
+#define EGL_EGLEXT_PROTOTYPES
+
+#include <math.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/time.h>
+#include <unistd.h>
+#include <GLES2/gl2.h>
+#include <EGL/egl.h>
+#include <EGL/eglext.h>
+#include "eglut.h"
+
+struct gear {
+ GLfloat *vertices;
+ GLuint vbo;
+ int count;
+};
+
+static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
+static struct gear *gear1, *gear2, *gear3;
+static GLfloat angle = 0.0;
+static GLuint proj_location, light_location, color_location;
+static GLfloat proj[16];
+
+static GLfloat *
+vert(GLfloat *p, GLfloat x, GLfloat y, GLfloat z, GLfloat *n)
+{
+ p[0] = x;
+ p[1] = y;
+ p[2] = z;
+ p[3] = n[0];
+ p[4] = n[1];
+ p[5] = n[2];
+
+ return p + 6;
+}
+
+/* Draw a gear wheel. You'll probably want to call this function when
+ * building a display list since we do a lot of trig here.
+ *
+ * Input: inner_radius - radius of hole at center
+ * outer_radius - radius at center of teeth
+ * width - width of gear
+ * teeth - number of teeth
+ * tooth_depth - depth of tooth
+ */
+static struct gear *
+gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
+ GLint teeth, GLfloat tooth_depth)
+{
+ GLint i;
+ GLfloat r0, r1, r2;
+ GLfloat da;
+ GLfloat *p, *v;
+ struct gear *gear;
+ double s[5], c[5];
+ GLfloat verts[3 * 14], normal[3];
+ const int tris_per_tooth = 20;
+
+ gear = malloc(sizeof *gear);
+ if (gear == NULL)
+ return NULL;
+
+ r0 = inner_radius;
+ r1 = outer_radius - tooth_depth / 2.0;
+ r2 = outer_radius + tooth_depth / 2.0;
+
+ da = 2.0 * M_PI / teeth / 4.0;
+
+ gear->vertices = calloc(teeth * tris_per_tooth * 3 * 6,
+ sizeof *gear->vertices);
+ s[4] = 0;
+ c[4] = 1;
+ v = gear->vertices;
+ for (i = 0; i < teeth; i++) {
+ s[0] = s[4];
+ c[0] = c[4];
+ sincos(i * 2.0 * M_PI / teeth + da, &s[1], &c[1]);
+ sincos(i * 2.0 * M_PI / teeth + da * 2, &s[2], &c[2]);
+ sincos(i * 2.0 * M_PI / teeth + da * 3, &s[3], &c[3]);
+ sincos(i * 2.0 * M_PI / teeth + da * 4, &s[4], &c[4]);
+
+ normal[0] = 0.0;
+ normal[1] = 0.0;
+ normal[2] = 1.0;
+
+ v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
+
+ v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
+ v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal);
+ v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
+ v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal);
+ v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal);
+ v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal);
+ v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal);
+
+ v = vert(v, r0 * c[4], r0 * s[4], width * 0.5, normal);
+ v = vert(v, r0 * c[0], r0 * s[0], width * 0.5, normal);
+ v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
+ v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal);
+
+ normal[0] = 0.0;
+ normal[1] = 0.0;
+ normal[2] = -1.0;
+
+ v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
+
+ v = vert(v, r0 * c[4], r0 * s[4], -width * 0.5, normal);
+ v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
+ v = vert(v, r0 * c[0], r0 * s[0], -width * 0.5, normal);
+ v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal);
+ v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal);
+ v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal);
+ v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal);
+
+ v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
+
+ v = vert(v, r1 * c[0], r1 * s[0], width * 0.5, normal);
+ v = vert(v, r1 * c[0], r1 * s[0], -width * 0.5, normal);
+ v = vert(v, r2 * c[1], r2 * s[1], width * 0.5, normal);
+ v = vert(v, r2 * c[1], r2 * s[1], -width * 0.5, normal);
+ v = vert(v, r2 * c[2], r2 * s[2], width * 0.5, normal);
+ v = vert(v, r2 * c[2], r2 * s[2], -width * 0.5, normal);
+ v = vert(v, r1 * c[3], r1 * s[3], width * 0.5, normal);
+ v = vert(v, r1 * c[3], r1 * s[3], -width * 0.5, normal);
+ v = vert(v, r1 * c[4], r1 * s[4], width * 0.5, normal);
+ v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
+
+ v = vert(v, r1 * c[4], r1 * s[4], -width * 0.5, normal);
+ }
+
+ gear->count = (v - gear->vertices) / 6;
+
+ glGenBuffers(1, &gear->vbo);
+ glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
+ glBufferData(GL_ARRAY_BUFFER, gear->count * 6 * 4,
+ gear->vertices, GL_STATIC_DRAW);
+
+ return gear;
+}
+
+static void
+multiply(GLfloat *m, const GLfloat *n)
+{
+ GLfloat tmp[16];
+ const GLfloat *row, *column;
+ div_t d;
+ int i, j;
+
+ for (i = 0; i < 16; i++) {
+ tmp[i] = 0;
+ d = div(i, 4);
+ row = n + d.quot * 4;
+ column = m + d.rem;
+ for (j = 0; j < 4; j++)
+ tmp[i] += row[j] * column[j * 4];
+ }
+ memcpy(m, &tmp, sizeof tmp);
+}
+
+static void
+rotate(GLfloat *m, GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+{
+ double s, c;
+
+ sincos(angle, &s, &c);
+ GLfloat r[16] = {
+ x * x * (1 - c) + c, y * x * (1 - c) + z * s, x * z * (1 - c) - y * s, 0,
+ x * y * (1 - c) - z * s, y * y * (1 - c) + c, y * z * (1 - c) + x * s, 0,
+ x * z * (1 - c) + y * s, y * z * (1 - c) - x * s, z * z * (1 - c) + c, 0,
+ 0, 0, 0, 1
+ };
+
+ multiply(m, r);
+}
+
+static void
+translate(GLfloat *m, GLfloat x, GLfloat y, GLfloat z)
+{
+ GLfloat t[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1 };
+
+ multiply(m, t);
+}
+
+static const GLfloat light[3] = { 1.0, 1.0, -1.0 };
+
+static void
+draw_gear(struct gear *gear, GLfloat *m,
+ GLfloat x, GLfloat y, GLfloat angle, const GLfloat *color)
+{
+ GLfloat tmp[16];
+
+ memcpy(tmp, m, sizeof tmp);
+ translate(tmp, x, y, 0);
+ rotate(tmp, 2 * M_PI * angle / 360.0, 0, 0, 1);
+ glUniformMatrix4fv(proj_location, 1, GL_FALSE, tmp);
+ glUniform3fv(light_location, 1, light);
+ glUniform4fv(color_location, 1, color);
+
+ glBindBuffer(GL_ARRAY_BUFFER, gear->vbo);
+
+ glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE,
+ 6 * sizeof(GLfloat), NULL);
+ glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE,
+ 6 * sizeof(GLfloat), (GLfloat *) 0 + 3);
+ glEnableVertexAttribArray(0);
+ glEnableVertexAttribArray(1);
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, gear->count);
+}
+
+static void
+gears_draw(void)
+{
+ const static GLfloat red[4] = { 0.8, 0.1, 0.0, 1.0 };
+ const static GLfloat green[4] = { 0.0, 0.8, 0.2, 1.0 };
+ const static GLfloat blue[4] = { 0.2, 0.2, 1.0, 1.0 };
+ GLfloat m[16];
+
+ glClearColor(0.0, 0.0, 0.0, 0.0);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ memcpy(m, proj, sizeof m);
+ rotate(m, 2 * M_PI * view_rotx / 360.0, 1, 0, 0);
+ rotate(m, 2 * M_PI * view_roty / 360.0, 0, 1, 0);
+ rotate(m, 2 * M_PI * view_rotz / 360.0, 0, 0, 1);
+
+ draw_gear(gear1, m, -3.0, -2.0, angle, red);
+ draw_gear(gear2, m, 3.1, -2.0, -2 * angle - 9.0, green);
+ draw_gear(gear3, m, -3.1, 4.2, -2 * angle - 25.0, blue);
+}
+
+/* new window size or exposure */
+static void
+gears_reshape(int width, int height)
+{
+ GLfloat ar, m[16] = {
+ 1.0, 0.0, 0.0, 0.0,
+ 0.0, 1.0, 0.0, 0.0,
+ 0.0, 0.0, 0.1, 0.0,
+ 0.0, 0.0, 0.0, 1.0,
+ };
+
+ if (width < height)
+ ar = width;
+ else
+ ar = height;
+
+ m[0] = 0.1 * ar / width;
+ m[5] = 0.1 * ar / height;
+ memcpy(proj, m, sizeof proj);
+ glViewport(0, 0, (GLint) width, (GLint) height);
+}
+
+static void
+gears_special(int special)
+{
+ switch (special) {
+ case EGLUT_KEY_LEFT:
+ view_roty += 5.0;
+ break;
+ case EGLUT_KEY_RIGHT:
+ view_roty -= 5.0;
+ break;
+ case EGLUT_KEY_UP:
+ view_rotx += 5.0;
+ break;
+ case EGLUT_KEY_DOWN:
+ view_rotx -= 5.0;
+ break;
+ }
+}
+
+static void
+gears_idle(void)
+{
+ static double tRot0 = -1.0;
+ double dt, t = eglutGet(EGLUT_ELAPSED_TIME) / 1000.0;
+
+ if (tRot0 < 0.0)
+ tRot0 = t;
+ dt = t - tRot0;
+ tRot0 = t;
+
+ /* advance rotation for next frame */
+ angle += 70.0 * dt; /* 70 degrees per second */
+ if (angle > 3600.0)
+ angle -= 3600.0;
+
+ eglutPostRedisplay();
+}
+
+static const char vertex_shader[] =
+ "uniform mat4 proj;\n"
+ "attribute vec4 position;\n"
+ "attribute vec4 normal;\n"
+ "varying vec3 rotated_normal;\n"
+ "varying vec3 rotated_position;\n"
+ "vec4 tmp;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = proj * position;\n"
+ " rotated_position = gl_Position.xyz;\n"
+ " tmp = proj * normal;\n"
+ " rotated_normal = tmp.xyz;\n"
+ "}\n";
+
+ static const char fragment_shader[] =
+ //"precision mediump float;\n"
+ "uniform vec4 color;\n"
+ "uniform vec3 light;\n"
+ "varying vec3 rotated_normal;\n"
+ "varying vec3 rotated_position;\n"
+ "vec3 light_direction;\n"
+ "vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n"
+ "void main()\n"
+ "{\n"
+ " light_direction = normalize(light - rotated_position);\n"
+ " gl_FragColor = color + white * dot(light_direction, rotated_normal);\n"
+ "}\n";
+
+static void
+gears_init(void)
+{
+ GLuint v, f, program;
+ const char *p;
+ char msg[512];
+
+ glEnable(GL_CULL_FACE);
+ glEnable(GL_DEPTH_TEST);
+
+ p = vertex_shader;
+ v = glCreateShader(GL_VERTEX_SHADER);
+ glShaderSource(v, 1, &p, NULL);
+ glCompileShader(v);
+ glGetShaderInfoLog(v, sizeof msg, NULL, msg);
+ printf("vertex shader info: %s\n", msg);
+
+ p = fragment_shader;
+ f = glCreateShader(GL_FRAGMENT_SHADER);
+ glShaderSource(f, 1, &p, NULL);
+ glCompileShader(f);
+ glGetShaderInfoLog(f, sizeof msg, NULL, msg);
+ printf("fragment shader info: %s\n", msg);
+
+ program = glCreateProgram();
+ glAttachShader(program, v);
+ glAttachShader(program, f);
+ glBindAttribLocation(program, 0, "position");
+ glBindAttribLocation(program, 1, "normal");
+
+ glLinkProgram(program);
+ glGetProgramInfoLog(program, sizeof msg, NULL, msg);
+ printf("info: %s\n", msg);
+
+ glUseProgram(program);
+ proj_location = glGetUniformLocation(program, "proj");
+ light_location = glGetUniformLocation(program, "light");
+ color_location = glGetUniformLocation(program, "color");
+
+ /* make the gears */
+ gear1 = gear(1.0, 4.0, 1.0, 20, 0.7);
+ gear2 = gear(0.5, 2.0, 2.0, 10, 0.7);
+ gear3 = gear(1.3, 2.0, 0.5, 10, 0.7);
+}
+
+int
+main(int argc, char *argv[])
+{
+ eglutInitWindowSize(300, 300);
+ eglutInitAPIMask(EGLUT_OPENGL_ES2_BIT);
+ eglutInit(argc, argv);
+
+ eglutCreateWindow("es2gears");
+
+ eglutIdleFunc(gears_idle);
+ eglutReshapeFunc(gears_reshape);
+ eglutDisplayFunc(gears_draw);
+ eglutSpecialFunc(gears_special);
+
+ gears_init();
+
+ eglutMainLoop();
+
+ return 0;
+}
diff --git a/progs/tests/blendminmax.c b/progs/tests/blendminmax.c
index 7297f41b787..b33839cc875 100644
--- a/progs/tests/blendminmax.c
+++ b/progs/tests/blendminmax.c
@@ -178,7 +178,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/blendsquare.c b/progs/tests/blendsquare.c
index 3ee3ae2230c..07806fc758d 100644
--- a/progs/tests/blendsquare.c
+++ b/progs/tests/blendsquare.c
@@ -142,7 +142,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const double version = strtod( ver_string, NULL );
diff --git a/progs/tests/bug_3101.c b/progs/tests/bug_3101.c
index 06a97761557..796377186bd 100644
--- a/progs/tests/bug_3101.c
+++ b/progs/tests/bug_3101.c
@@ -100,7 +100,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/bug_3195.c b/progs/tests/bug_3195.c
index 3574c1f7176..10481c22322 100644
--- a/progs/tests/bug_3195.c
+++ b/progs/tests/bug_3195.c
@@ -176,7 +176,7 @@ static void SpecialKey( int key, int x, int y )
static void Init( void )
{
GLfloat maxBias;
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c
index 2988e209200..ac9a8eae3b7 100644
--- a/progs/tests/crossbar.c
+++ b/progs/tests/crossbar.c
@@ -143,7 +143,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
float ver = strtod( ver_string, NULL );
GLint tex_units;
diff --git a/progs/tests/interleave.c b/progs/tests/interleave.c
index acf67d02c12..c60ddde1f11 100644
--- a/progs/tests/interleave.c
+++ b/progs/tests/interleave.c
@@ -352,7 +352,7 @@ static void ModeMenu( int entry )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const GLubyte tex[16] = {
0xff, 0x00, 0xff, 0x00,
diff --git a/progs/tests/invert.c b/progs/tests/invert.c
index 45001b44d07..be554726563 100644
--- a/progs/tests/invert.c
+++ b/progs/tests/invert.c
@@ -126,7 +126,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const float ver = strtod( ver_string, NULL );
diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c
index 2de7e2994af..e38c68904d4 100644
--- a/progs/tests/prog_parameter.c
+++ b/progs/tests/prog_parameter.c
@@ -186,7 +186,7 @@ static int set_parameter_batch( GLsizei count, GLfloat * param,
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
int pass = 1;
GLfloat * params;
diff --git a/progs/tests/stencil_twoside.c b/progs/tests/stencil_twoside.c
index 1010139a20e..dec620023fc 100644
--- a/progs/tests/stencil_twoside.c
+++ b/progs/tests/stencil_twoside.c
@@ -311,7 +311,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/stencil_wrap.c b/progs/tests/stencil_wrap.c
index 28307fef4f0..2bafd3204f0 100644
--- a/progs/tests/stencil_wrap.c
+++ b/progs/tests/stencil_wrap.c
@@ -225,7 +225,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/vao-01.c b/progs/tests/vao-01.c
index ee528d22439..bacae70bb53 100644
--- a/progs/tests/vao-01.c
+++ b/progs/tests/vao-01.c
@@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
GLuint obj;
int pass = 1;
diff --git a/progs/tests/vao-02.c b/progs/tests/vao-02.c
index c23b4ab05a6..d085541876d 100644
--- a/progs/tests/vao-02.c
+++ b/progs/tests/vao-02.c
@@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
GLuint obj;
int pass = 1;
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 4be39627302..69f3c28c9e4 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -254,9 +254,8 @@ dri2_add_config(_EGLDisplay *disp, const __DRIconfig *dri_config, int id,
_eglSetConfigKey(&base,
EGL_BIND_TO_TEXTURE_RGBA, bind_to_texture_rgba);
- /* EGL_OPENGL_ES_BIT, EGL_OPENVG_BIT, EGL_OPENGL_ES2_BIT */
- _eglSetConfigKey(&base, EGL_RENDERABLE_TYPE, EGL_OPENGL_BIT);
- _eglSetConfigKey(&base, EGL_CONFORMANT, EGL_OPENGL_BIT);
+ _eglSetConfigKey(&base, EGL_RENDERABLE_TYPE, disp->ClientAPIsMask);
+ _eglSetConfigKey(&base, EGL_CONFORMANT, disp->ClientAPIsMask);
if (!_eglValidateConfig(&base, EGL_FALSE)) {
_eglLog(_EGL_DEBUG, "DRI2: failed to validate config %d", id);
@@ -643,6 +642,7 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
const __DRIextension **extensions;
struct dri2_egl_display *dri2_dpy;
char path[PATH_MAX], *search_paths, *p, *next, *end;
+ unsigned int api_mask;
dri2_dpy = malloc(sizeof *dri2_dpy);
if (!dri2_dpy)
@@ -685,6 +685,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
snprintf(path, sizeof path,
dri_driver_format, (int) (next - p), p, dri2_dpy->driver_name);
dri2_dpy->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
+ if (dri2_dpy->driver == NULL)
+ _eglLog(_EGL_DEBUG, "failed to open %s: %s\n", path, dlerror());
}
if (dri2_dpy->driver == NULL) {
@@ -754,12 +756,24 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
if (!dri2_bind_extensions(dri2_dpy, dri2_core_extensions, extensions))
goto cleanup_dri_screen;
+ if (dri2_dpy->dri2->base.version >= 2)
+ api_mask = dri2_dpy->dri2->getAPIMask(dri2_dpy->dri_screen);
+ else
+ api_mask = __DRI_API_OPENGL;
+
+ disp->ClientAPIsMask = 0;
+ if (api_mask & (1 <<__DRI_API_OPENGL))
+ disp->ClientAPIsMask |= EGL_OPENGL_BIT;
+ if (api_mask & (1 <<__DRI_API_GLES))
+ disp->ClientAPIsMask |= EGL_OPENGL_ES_BIT;
+ if (api_mask & (1 << __DRI_API_GLES2))
+ disp->ClientAPIsMask |= EGL_OPENGL_ES2_BIT;
+
if (dri2_dpy->conn) {
if (!dri2_add_configs_for_visuals(dri2_dpy, disp))
goto cleanup_configs;
}
- disp->ClientAPIsMask = EGL_OPENGL_BIT;
disp->Extensions.KHR_image_base = EGL_TRUE;
disp->Extensions.KHR_image_pixmap = EGL_TRUE;
disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE;
@@ -822,6 +836,7 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
struct dri2_egl_context *dri2_ctx_shared = dri2_egl_context(share_list);
struct dri2_egl_config *dri2_config = dri2_egl_config(conf);
+ int api;
dri2_ctx = malloc(sizeof *dri2_ctx);
if (!dri2_ctx) {
@@ -832,12 +847,46 @@ dri2_create_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLConfig *conf,
if (!_eglInitContext(&dri2_ctx->base, disp, conf, attrib_list))
goto cleanup;
- dri2_ctx->dri_context =
- dri2_dpy->dri2->createNewContext(dri2_dpy->dri_screen,
- dri2_config->dri_config,
- dri2_ctx_shared ?
- dri2_ctx_shared->dri_context : NULL,
- dri2_ctx);
+ switch (dri2_ctx->base.ClientAPI) {
+ case EGL_OPENGL_ES_API:
+ switch (dri2_ctx->base.ClientVersion) {
+ case 1:
+ api = __DRI_API_GLES;
+ break;
+ case 2:
+ api = __DRI_API_GLES2;
+ break;
+ default:
+ _eglError(EGL_BAD_PARAMETER, "eglCreateContext");
+ return NULL;
+ }
+ break;
+ case EGL_OPENGL_API:
+ api = __DRI_API_OPENGL;
+ break;
+ default:
+ _eglError(EGL_BAD_PARAMETER, "eglCreateContext");
+ return NULL;
+ }
+
+ if (dri2_dpy->dri2->base.version >= 2) {
+ dri2_ctx->dri_context =
+ dri2_dpy->dri2->createNewContextForAPI(dri2_dpy->dri_screen,
+ api,
+ dri2_config->dri_config,
+ dri2_ctx_shared ?
+ dri2_ctx_shared->dri_context : NULL,
+ dri2_ctx);
+ } else if (api == __DRI_API_OPENGL) {
+ dri2_ctx->dri_context =
+ dri2_dpy->dri2->createNewContext(dri2_dpy->dri_screen,
+ dri2_config->dri_config,
+ dri2_ctx_shared ?
+ dri2_ctx_shared->dri_context : NULL,
+ dri2_ctx);
+ } else {
+ /* fail */
+ }
if (!dri2_ctx->dri_context)
goto cleanup;
diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile
index 2daed382cf3..e0d9b313544 100644
--- a/src/gallium/auxiliary/Makefile
+++ b/src/gallium/auxiliary/Makefile
@@ -113,6 +113,7 @@ C_SOURCES = \
util/u_format_tests.c \
util/u_format_yuv.c \
util/u_format_zs.c \
+ util/u_framebuffer.c \
util/u_gen_mipmap.c \
util/u_half.c \
util/u_handle_table.c \
diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript
index a0673df8a8e..29a1bd0ecba 100644
--- a/src/gallium/auxiliary/SConscript
+++ b/src/gallium/auxiliary/SConscript
@@ -162,6 +162,7 @@ source = [
'util/u_format_tests.c',
'util/u_format_yuv.c',
'util/u_format_zs.c',
+ 'util/u_framebuffer.c',
'util/u_gen_mipmap.c',
'util/u_half.c',
'util/u_handle_table.c',
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
index 55e0ded1b30..20a8612dcae 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.c
+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
@@ -36,6 +36,7 @@
*/
#include "pipe/p_state.h"
+#include "util/u_framebuffer.h"
#include "util/u_inlines.h"
#include "util/u_math.h"
#include "util/u_memory.h"
@@ -103,10 +104,6 @@ struct cso_context {
};
-static void
-free_framebuffer_state(struct pipe_framebuffer_state *fb);
-
-
static boolean delete_blend_state(struct cso_context *ctx, void *state)
{
struct cso_blend *cso = (struct cso_blend *)state;
@@ -304,8 +301,8 @@ void cso_release_all( struct cso_context *ctx )
pipe_sampler_view_reference(&ctx->vertex_sampler_views_saved[i], NULL);
}
- free_framebuffer_state(&ctx->fb);
- free_framebuffer_state(&ctx->fb_saved);
+ util_unreference_framebuffer_state(&ctx->fb);
+ util_unreference_framebuffer_state(&ctx->fb_saved);
if (ctx->cache) {
cso_cache_delete( ctx->cache );
@@ -897,42 +894,11 @@ void cso_restore_vertex_shader(struct cso_context *ctx)
}
-/**
- * Copy framebuffer state from src to dst with refcounting of surfaces.
- */
-static void
-copy_framebuffer_state(struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src)
-{
- uint i;
-
- dst->width = src->width;
- dst->height = src->height;
- dst->nr_cbufs = src->nr_cbufs;
- for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
- pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
- }
- pipe_surface_reference(&dst->zsbuf, src->zsbuf);
-}
-
-
-static void
-free_framebuffer_state(struct pipe_framebuffer_state *fb)
-{
- uint i;
-
- for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
- pipe_surface_reference(&fb->cbufs[i], NULL);
- }
- pipe_surface_reference(&fb->zsbuf, NULL);
-}
-
-
enum pipe_error cso_set_framebuffer(struct cso_context *ctx,
const struct pipe_framebuffer_state *fb)
{
if (memcmp(&ctx->fb, fb, sizeof(*fb)) != 0) {
- copy_framebuffer_state(&ctx->fb, fb);
+ util_copy_framebuffer_state(&ctx->fb, fb);
ctx->pipe->set_framebuffer_state(ctx->pipe, fb);
}
return PIPE_OK;
@@ -940,15 +906,15 @@ enum pipe_error cso_set_framebuffer(struct cso_context *ctx,
void cso_save_framebuffer(struct cso_context *ctx)
{
- copy_framebuffer_state(&ctx->fb_saved, &ctx->fb);
+ util_copy_framebuffer_state(&ctx->fb_saved, &ctx->fb);
}
void cso_restore_framebuffer(struct cso_context *ctx)
{
if (memcmp(&ctx->fb, &ctx->fb_saved, sizeof(ctx->fb))) {
- copy_framebuffer_state(&ctx->fb, &ctx->fb_saved);
+ util_copy_framebuffer_state(&ctx->fb, &ctx->fb_saved);
ctx->pipe->set_framebuffer_state(ctx->pipe, &ctx->fb);
- free_framebuffer_state(&ctx->fb_saved);
+ util_unreference_framebuffer_state(&ctx->fb_saved);
}
}
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 3b2df054c3c..ea9b7c90a51 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -182,6 +182,8 @@ draw_llvm_create(struct draw_context *draw)
/* These are the passes currently listed in llvm-c/Transforms/Scalar.h,
* but there are more on SVN. */
/* TODO: Add more passes */
+ LLVMAddCFGSimplificationPass(llvm->pass);
+ LLVMAddPromoteMemoryToRegisterPass(llvm->pass);
LLVMAddConstantPropagationPass(llvm->pass);
if(util_cpu_caps.has_sse4_1) {
/* FIXME: There is a bug in this pass, whereby the combination of fptosi
@@ -190,9 +192,7 @@ draw_llvm_create(struct draw_context *draw)
*/
LLVMAddInstructionCombiningPass(llvm->pass);
}
- LLVMAddPromoteMemoryToRegisterPass(llvm->pass);
LLVMAddGVNPass(llvm->pass);
- LLVMAddCFGSimplificationPass(llvm->pass);
init_globals(llvm);
@@ -207,6 +207,8 @@ draw_llvm_create(struct draw_context *draw)
void
draw_llvm_destroy(struct draw_llvm *llvm)
{
+ LLVMDisposePassManager(llvm->pass);
+
FREE(llvm);
}
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
index d2a492f2b4c..6d00b0fbd44 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
@@ -66,7 +66,6 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle;
struct draw_context *draw = fpme->draw;
struct draw_vertex_shader *vs = draw->vs.vertex_shader;
- struct draw_geometry_shader *gs = draw->gs.geometry_shader;
struct draw_llvm_variant_key key;
struct draw_llvm_variant *variant = NULL;
unsigned i;
@@ -97,17 +96,6 @@ llvm_middle_end_prepare( struct draw_pt_middle_end *middle,
fpme->vertex_size = sizeof(struct vertex_header) + nr * 4 * sizeof(float);
-
- draw_pt_fetch_prepare( fpme->fetch,
- vs->info.num_inputs,
- fpme->vertex_size,
- instance_id_index );
- if (opt & PT_SHADE) {
- vs->prepare(vs, draw);
- draw_geometry_shader_prepare(gs, draw);
- }
-
-
/* XXX: it's not really gl rasterization rules we care about here,
* but gl vs dx9 clip spaces.
*/
@@ -349,7 +337,31 @@ static void llvm_middle_end_finish( struct draw_pt_middle_end *middle )
static void llvm_middle_end_destroy( struct draw_pt_middle_end *middle )
{
struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle;
+ struct draw_context *draw = fpme->draw;
+ struct draw_llvm_variant *variant = NULL;
+ variant = fpme->variants;
+ while(variant) {
+ struct draw_llvm_variant *next = variant->next;
+
+ if (variant->function_elts) {
+ if (variant->function_elts)
+ LLVMFreeMachineCodeForFunction(draw->engine,
+ variant->function_elts);
+ LLVMDeleteFunction(variant->function_elts);
+ }
+
+ if (variant->function) {
+ if (variant->function)
+ LLVMFreeMachineCodeForFunction(draw->engine,
+ variant->function);
+ LLVMDeleteFunction(variant->function);
+ }
+
+ FREE(variant);
+
+ variant = next;
+ }
if (fpme->fetch)
draw_pt_fetch_destroy( fpme->fetch );
diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c
index c2832eefa2a..b9db886a24d 100644
--- a/src/gallium/auxiliary/draw/draw_vs.c
+++ b/src/gallium/auxiliary/draw/draw_vs.c
@@ -85,18 +85,22 @@ struct draw_vertex_shader *
draw_create_vertex_shader(struct draw_context *draw,
const struct pipe_shader_state *shader)
{
- struct draw_vertex_shader *vs;
+ struct draw_vertex_shader *vs = NULL;
if (draw->dump_vs) {
tgsi_dump(shader->tokens, 0);
}
- vs = draw_create_vs_sse( draw, shader );
- if (!vs) {
+ if (!draw->pt.middle.llvm) {
+#if defined(PIPE_ARCH_X86)
+ vs = draw_create_vs_sse( draw, shader );
+#elif defined(PIPE_ARCH_PPC)
vs = draw_create_vs_ppc( draw, shader );
- if (!vs) {
- vs = draw_create_vs_exec( draw, shader );
- }
+#endif
+ }
+
+ if (!vs) {
+ vs = draw_create_vs_exec( draw, shader );
}
if (vs)
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
index 20ae958714b..f372a48846f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
@@ -1177,9 +1177,34 @@ lp_build_rcp(struct lp_build_context *bld,
if(LLVMIsConstant(a))
return LLVMConstFDiv(bld->one, a);
- if(util_cpu_caps.has_sse && type.width == 32 && type.length == 4)
- /* FIXME: improve precision */
+ if(util_cpu_caps.has_sse && type.width == 32 && type.length == 4) {
+ /*
+ * XXX: Added precision is not always necessary, so only enable this
+ * when we have a better system in place to track minimum precision.
+ */
+
+#if 0
+ /*
+ * Do one Newton-Raphson step to improve precision:
+ *
+ * x1 = (2 - a * rcp(a)) * rcp(a)
+ */
+
+ LLVMValueRef two = lp_build_const_vec(bld->type, 2.0);
+ LLVMValueRef rcp_a;
+ LLVMValueRef res;
+
+ rcp_a = lp_build_intrinsic_unary(bld->builder, "llvm.x86.sse.rcp.ps", lp_build_vec_type(type), a);
+
+ res = LLVMBuildMul(bld->builder, a, rcp_a, "");
+ res = LLVMBuildSub(bld->builder, two, res, "");
+ res = LLVMBuildMul(bld->builder, res, rcp_a, "");
+
+ return rcp_a;
+#else
return lp_build_intrinsic_unary(bld->builder, "llvm.x86.sse.rcp.ps", lp_build_vec_type(type), a);
+#endif
+ }
return LLVMBuildFDiv(bld->builder, bld->one, a, "");
}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
new file mode 100644
index 00000000000..e095a0abe3a
--- /dev/null
+++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
@@ -0,0 +1,53 @@
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef LP_BLD_LIMITS_H_
+#define LP_BLD_LIMITS_H_
+
+/*
+ * TGSI translation limits.
+ *
+ * Some are slightly above SM 3.0 requirements to give some wiggle room to
+ * the state trackers.
+ */
+
+#define LP_MAX_TGSI_TEMPS 256
+
+#define LP_MAX_TGSI_ADDRS 16
+
+#define LP_MAX_TGSI_IMMEDIATES 256
+
+/**
+ * Maximum control flow nesting
+ *
+ * SM3.0 requires 24
+ */
+#define LP_MAX_TGSI_NESTING 32
+
+
+#endif /* LP_BLD_LIMITS_H_ */
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
index 8ceb20473d5..955b1d21ee5 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
@@ -173,7 +173,10 @@ lp_build_sample_soa(LLVMBuilderRef builder,
unsigned unit,
unsigned num_coords,
const LLVMValueRef *coords,
- LLVMValueRef lodbias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias,
+ LLVMValueRef explicit_lod,
LLVMValueRef *texel);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
index 74dc9e1d812..3f0ea05b795 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
@@ -30,6 +30,7 @@
* Texture sampling -- SoA.
*
* @author Jose Fonseca <[email protected]>
+ * @author Brian Paul <[email protected]>
*/
#include "pipe/p_defines.h"
@@ -325,6 +326,18 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
bld->format_desc,
x, y, z, y_stride, z_stride);
+ if (use_border) {
+ /* If we can sample the border color, it means that texcoords may
+ * lie outside the bounds of the texture image. We need to do
+ * something to prevent reading out of bounds and causing a segfault.
+ *
+ * Simply AND the texture coords with !use_border. This will cause
+ * coords which are out of bounds to become zero. Zero's guaranteed
+ * to be inside the texture image.
+ */
+ offset = lp_build_andc(&bld->uint_coord_bld, offset, use_border);
+ }
+
lp_build_fetch_rgba_soa(bld->builder,
bld->format_desc,
bld->texel_type,
@@ -891,17 +904,24 @@ lp_build_minify(struct lp_build_sample_context *bld,
* \param s vector of texcoord s values
* \param t vector of texcoord t values
* \param r vector of texcoord r values
- * \param shader_lod_bias vector float with the shader lod bias,
+ * \param lod_bias optional float vector with the shader lod bias
+ * \param explicit_lod optional float vector with the explicit lod
* \param width scalar int texture width
* \param height scalar int texture height
* \param depth scalar int texture depth
+ *
+ * XXX: The resulting lod is scalar, so ignore all but the first element of
+ * derivatives, lod_bias, etc that are passed by the shader.
*/
static LLVMValueRef
lp_build_lod_selector(struct lp_build_sample_context *bld,
LLVMValueRef s,
LLVMValueRef t,
LLVMValueRef r,
- LLVMValueRef shader_lod_bias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias, /* optional */
+ LLVMValueRef explicit_lod, /* optional */
LLVMValueRef width,
LLVMValueRef height,
LLVMValueRef depth)
@@ -914,7 +934,6 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
return LLVMConstReal(LLVMFloatType(), bld->static_state->min_lod);
}
else {
- const int dims = texture_dims(bld->static_state->target);
struct lp_build_context *float_bld = &bld->float_bld;
LLVMValueRef sampler_lod_bias = LLVMConstReal(LLVMFloatType(),
bld->static_state->lod_bias);
@@ -922,83 +941,76 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
bld->static_state->min_lod);
LLVMValueRef max_lod = LLVMConstReal(LLVMFloatType(),
bld->static_state->max_lod);
-
LLVMValueRef index0 = LLVMConstInt(LLVMInt32Type(), 0, 0);
- LLVMValueRef index1 = LLVMConstInt(LLVMInt32Type(), 1, 0);
- LLVMValueRef index2 = LLVMConstInt(LLVMInt32Type(), 2, 0);
-
- LLVMValueRef s0, s1, s2;
- LLVMValueRef t0, t1, t2;
- LLVMValueRef r0, r1, r2;
- LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy;
- LLVMValueRef rho, lod;
-
- /*
- * dsdx = abs(s[1] - s[0]);
- * dsdy = abs(s[2] - s[0]);
- * dtdx = abs(t[1] - t[0]);
- * dtdy = abs(t[2] - t[0]);
- * drdx = abs(r[1] - r[0]);
- * drdy = abs(r[2] - r[0]);
- * XXX we're assuming a four-element quad in 2x2 layout here.
- */
- s0 = LLVMBuildExtractElement(bld->builder, s, index0, "s0");
- s1 = LLVMBuildExtractElement(bld->builder, s, index1, "s1");
- s2 = LLVMBuildExtractElement(bld->builder, s, index2, "s2");
- dsdx = LLVMBuildSub(bld->builder, s1, s0, "");
- dsdx = lp_build_abs(float_bld, dsdx);
- dsdy = LLVMBuildSub(bld->builder, s2, s0, "");
- dsdy = lp_build_abs(float_bld, dsdy);
- if (dims > 1) {
- t0 = LLVMBuildExtractElement(bld->builder, t, index0, "t0");
- t1 = LLVMBuildExtractElement(bld->builder, t, index1, "t1");
- t2 = LLVMBuildExtractElement(bld->builder, t, index2, "t2");
- dtdx = LLVMBuildSub(bld->builder, t1, t0, "");
- dtdx = lp_build_abs(float_bld, dtdx);
- dtdy = LLVMBuildSub(bld->builder, t2, t0, "");
- dtdy = lp_build_abs(float_bld, dtdy);
- if (dims > 2) {
- r0 = LLVMBuildExtractElement(bld->builder, r, index0, "r0");
- r1 = LLVMBuildExtractElement(bld->builder, r, index1, "r1");
- r2 = LLVMBuildExtractElement(bld->builder, r, index2, "r2");
- drdx = LLVMBuildSub(bld->builder, r1, r0, "");
- drdx = lp_build_abs(float_bld, drdx);
- drdy = LLVMBuildSub(bld->builder, r2, r0, "");
- drdy = lp_build_abs(float_bld, drdy);
- }
+ LLVMValueRef lod;
+
+ if (explicit_lod) {
+ lod = LLVMBuildExtractElement(bld->builder, explicit_lod,
+ index0, "");
}
+ else {
+ const int dims = texture_dims(bld->static_state->target);
+ LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy;
+ LLVMValueRef rho;
+
+ /*
+ * dsdx = abs(s[1] - s[0]);
+ * dsdy = abs(s[2] - s[0]);
+ * dtdx = abs(t[1] - t[0]);
+ * dtdy = abs(t[2] - t[0]);
+ * drdx = abs(r[1] - r[0]);
+ * drdy = abs(r[2] - r[0]);
+ */
+ dsdx = LLVMBuildExtractElement(bld->builder, ddx[0], index0, "dsdx");
+ dsdx = lp_build_abs(float_bld, dsdx);
+ dsdy = LLVMBuildExtractElement(bld->builder, ddy[0], index0, "dsdy");
+ dsdy = lp_build_abs(float_bld, dsdy);
+ if (dims > 1) {
+ dtdx = LLVMBuildExtractElement(bld->builder, ddx[1], index0, "dtdx");
+ dtdx = lp_build_abs(float_bld, dtdx);
+ dtdy = LLVMBuildExtractElement(bld->builder, ddy[1], index0, "dtdy");
+ dtdy = lp_build_abs(float_bld, dtdy);
+ if (dims > 2) {
+ drdx = LLVMBuildExtractElement(bld->builder, ddx[2], index0, "drdx");
+ drdx = lp_build_abs(float_bld, drdx);
+ drdy = LLVMBuildExtractElement(bld->builder, ddy[2], index0, "drdy");
+ drdy = lp_build_abs(float_bld, drdy);
+ }
+ }
- /* Compute rho = max of all partial derivatives scaled by texture size.
- * XXX this could be vectorized somewhat
- */
- rho = LLVMBuildMul(bld->builder,
- lp_build_max(float_bld, dsdx, dsdy),
- lp_build_int_to_float(float_bld, width), "");
- if (dims > 1) {
- LLVMValueRef max;
- max = LLVMBuildMul(bld->builder,
- lp_build_max(float_bld, dtdx, dtdy),
- lp_build_int_to_float(float_bld, height), "");
- rho = lp_build_max(float_bld, rho, max);
- if (dims > 2) {
+ /* Compute rho = max of all partial derivatives scaled by texture size.
+ * XXX this could be vectorized somewhat
+ */
+ rho = LLVMBuildMul(bld->builder,
+ lp_build_max(float_bld, dsdx, dsdy),
+ lp_build_int_to_float(float_bld, width), "");
+ if (dims > 1) {
+ LLVMValueRef max;
max = LLVMBuildMul(bld->builder,
- lp_build_max(float_bld, drdx, drdy),
- lp_build_int_to_float(float_bld, depth), "");
+ lp_build_max(float_bld, dtdx, dtdy),
+ lp_build_int_to_float(float_bld, height), "");
rho = lp_build_max(float_bld, rho, max);
+ if (dims > 2) {
+ max = LLVMBuildMul(bld->builder,
+ lp_build_max(float_bld, drdx, drdy),
+ lp_build_int_to_float(float_bld, depth), "");
+ rho = lp_build_max(float_bld, rho, max);
+ }
}
- }
- /* compute lod = log2(rho) */
- lod = lp_build_log2(float_bld, rho);
+ /* compute lod = log2(rho) */
+ lod = lp_build_log2(float_bld, rho);
- /* add sampler lod bias */
- lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler LOD bias");
+ /* add shader lod bias */
+ if (lod_bias) {
+ lod_bias = LLVMBuildExtractElement(bld->builder, lod_bias,
+ index0, "");
+ lod = LLVMBuildAdd(bld->builder, lod, lod_bias, "shader_lod_bias");
+ }
+ }
- /* add shader lod bias */
- /* XXX for now we take only the first element since our lod is scalar */
- shader_lod_bias = LLVMBuildExtractElement(bld->builder, shader_lod_bias,
- LLVMConstInt(LLVMInt32Type(), 0, 0), "");
- lod = LLVMBuildAdd(bld->builder, lod, shader_lod_bias, "shader LOD bias");
+ /* add sampler lod bias */
+ lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler_lod_bias");
/* clamp lod */
lod = lp_build_clamp(float_bld, lod, min_lod, max_lod);
@@ -1584,7 +1596,10 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
LLVMValueRef s,
LLVMValueRef t,
LLVMValueRef r,
- LLVMValueRef lodbias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias, /* optional */
+ LLVMValueRef explicit_lod, /* optional */
LLVMValueRef width,
LLVMValueRef height,
LLVMValueRef depth,
@@ -1622,7 +1637,9 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
/* Need to compute lod either to choose mipmap levels or to
* distinguish between minification/magnification with one mipmap level.
*/
- lod = lp_build_lod_selector(bld, s, t, r, lodbias, width, height, depth);
+ lod = lp_build_lod_selector(bld, s, t, r, ddx, ddy,
+ lod_bias, explicit_lod,
+ width, height, depth);
}
/*
@@ -2049,6 +2066,24 @@ lp_build_sample_compare(struct lp_build_sample_context *bld,
/**
+ * Just set texels to white instead of actually sampling the texture.
+ * For debugging.
+ */
+static void
+lp_build_sample_nop(struct lp_build_sample_context *bld,
+ LLVMValueRef *texel)
+{
+ struct lp_build_context *texel_bld = &bld->texel_bld;
+ unsigned chan;
+
+ for (chan = 0; chan < 4; chan++) {
+ /*lp_bld_mov(texel_bld, texel, texel_bld->one);*/
+ texel[chan] = texel_bld->one;
+ }
+}
+
+
+/**
* Build texture sampling code.
* 'texel' will return a vector of four LLVMValueRefs corresponding to
* R, G, B, A.
@@ -2062,7 +2097,10 @@ lp_build_sample_soa(LLVMBuilderRef builder,
unsigned unit,
unsigned num_coords,
const LLVMValueRef *coords,
- LLVMValueRef lodbias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias, /* optional */
+ LLVMValueRef explicit_lod, /* optional */
LLVMValueRef *texel)
{
struct lp_build_sample_context bld;
@@ -2113,19 +2151,24 @@ lp_build_sample_soa(LLVMBuilderRef builder,
height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, height);
depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, depth);
- if (util_format_is_rgba8_variant(bld.format_desc) &&
- static_state->target == PIPE_TEXTURE_2D &&
- static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR &&
- static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR &&
- static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE &&
- is_simple_wrap_mode(static_state->wrap_s) &&
- is_simple_wrap_mode(static_state->wrap_t)) {
+ if (0) {
+ /* For debug: no-op texture sampling */
+ lp_build_sample_nop(&bld, texel);
+ }
+ else if (util_format_is_rgba8_variant(bld.format_desc) &&
+ static_state->target == PIPE_TEXTURE_2D &&
+ static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR &&
+ static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR &&
+ static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE &&
+ is_simple_wrap_mode(static_state->wrap_s) &&
+ is_simple_wrap_mode(static_state->wrap_t)) {
/* special case */
lp_build_sample_2d_linear_aos(&bld, s, t, width_vec, height_vec,
row_stride_array, data_array, texel);
}
else {
- lp_build_sample_general(&bld, unit, s, t, r, lodbias,
+ lp_build_sample_general(&bld, unit, s, t, r, ddx, ddy,
+ lod_bias, explicit_lod,
width, height, depth,
width_vec, height_vec, depth_vec,
row_stride_array, img_stride_array,
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
index 2eac5da6c69..5ce1385c480 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -65,7 +65,10 @@ struct lp_build_sampler_soa
unsigned unit,
unsigned num_coords,
const LLVMValueRef *coords,
- LLVMValueRef lodbias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias, /* optional */
+ LLVMValueRef explicit_lod, /* optional */
LLVMValueRef *texel);
};
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index d3c769e28b8..0b1a28a7ab7 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -54,13 +54,10 @@
#include "lp_bld_swizzle.h"
#include "lp_bld_flow.h"
#include "lp_bld_tgsi.h"
+#include "lp_bld_limits.h"
#include "lp_bld_debug.h"
-#define LP_MAX_TEMPS 256
-#define LP_MAX_IMMEDIATES 256
-
-
#define FOR_EACH_CHANNEL( CHAN )\
for (CHAN = 0; CHAN < NUM_CHANNELS; CHAN++)
@@ -84,7 +81,6 @@
#define QUAD_BOTTOM_LEFT 2
#define QUAD_BOTTOM_RIGHT 3
-#define LP_TGSI_MAX_NESTING 16
struct lp_exec_mask {
struct lp_build_context *bld;
@@ -93,19 +89,19 @@ struct lp_exec_mask {
LLVMTypeRef int_vec_type;
- LLVMValueRef cond_stack[LP_TGSI_MAX_NESTING];
+ LLVMValueRef cond_stack[LP_MAX_TGSI_NESTING];
int cond_stack_size;
LLVMValueRef cond_mask;
- LLVMValueRef break_stack[LP_TGSI_MAX_NESTING];
+ LLVMValueRef break_stack[LP_MAX_TGSI_NESTING];
int break_stack_size;
LLVMValueRef break_mask;
- LLVMValueRef cont_stack[LP_TGSI_MAX_NESTING];
+ LLVMValueRef cont_stack[LP_MAX_TGSI_NESTING];
int cont_stack_size;
LLVMValueRef cont_mask;
- LLVMBasicBlockRef loop_stack[LP_TGSI_MAX_NESTING];
+ LLVMBasicBlockRef loop_stack[LP_MAX_TGSI_NESTING];
int loop_stack_size;
LLVMBasicBlockRef loop_block;
@@ -124,9 +120,9 @@ struct lp_build_tgsi_soa_context
struct lp_build_sampler_soa *sampler;
- LLVMValueRef immediates[LP_MAX_IMMEDIATES][NUM_CHANNELS];
- LLVMValueRef temps[LP_MAX_TEMPS][NUM_CHANNELS];
- LLVMValueRef addr[LP_MAX_TEMPS][NUM_CHANNELS];
+ LLVMValueRef immediates[LP_MAX_TGSI_IMMEDIATES][NUM_CHANNELS];
+ LLVMValueRef temps[LP_MAX_TGSI_TEMPS][NUM_CHANNELS];
+ LLVMValueRef addr[LP_MAX_TGSI_ADDRS][NUM_CHANNELS];
/* we allocate an array of temps if we have indirect
* addressing and then the temps above is unused */
@@ -198,6 +194,7 @@ static void lp_exec_mask_update(struct lp_exec_mask *mask)
static void lp_exec_mask_cond_push(struct lp_exec_mask *mask,
LLVMValueRef val)
{
+ assert(mask->cond_stack_size < LP_MAX_TGSI_NESTING);
mask->cond_stack[mask->cond_stack_size++] = mask->cond_mask;
mask->cond_mask = LLVMBuildBitCast(mask->bld->builder, val,
mask->int_vec_type, "");
@@ -239,6 +236,10 @@ static void lp_exec_bgnloop(struct lp_exec_mask *mask)
if (mask->cond_stack_size == 0)
mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type);
+ assert(mask->break_stack_size < LP_MAX_TGSI_NESTING);
+ assert(mask->cont_stack_size < LP_MAX_TGSI_NESTING);
+ assert(mask->break_stack_size < LP_MAX_TGSI_NESTING);
+
mask->break_stack[mask->break_stack_size++] = mask->break_mask;
mask->cont_stack[mask->cont_stack_size++] = mask->cont_mask;
mask->loop_stack[mask->loop_stack_size++] = mask->loop_block;
@@ -255,16 +256,9 @@ static void lp_exec_break(struct lp_exec_mask *mask)
mask->exec_mask,
"break");
- /* mask->break_stack_size > 1 implies that we encountered a break
- * statemant already and if that's the case we want to make sure
- * our mask is a combination of the previous break and the current
- * execution mask */
- if (mask->break_stack_size > 1) {
- mask->break_mask = LLVMBuildAnd(mask->bld->builder,
- mask->break_mask,
- exec_mask, "break_full");
- } else
- mask->break_mask = exec_mask;
+ mask->break_mask = LLVMBuildAnd(mask->bld->builder,
+ mask->break_mask,
+ exec_mask, "break_full");
lp_exec_mask_update(mask);
}
@@ -275,12 +269,9 @@ static void lp_exec_continue(struct lp_exec_mask *mask)
mask->exec_mask,
"");
- if (mask->cont_stack_size > 1) {
- mask->cont_mask = LLVMBuildAnd(mask->bld->builder,
- mask->cont_mask,
- exec_mask, "");
- } else
- mask->cont_mask = exec_mask;
+ mask->cont_mask = LLVMBuildAnd(mask->bld->builder,
+ mask->cont_mask,
+ exec_mask, "");
lp_exec_mask_update(mask);
}
@@ -589,7 +580,6 @@ emit_store(
case TGSI_FILE_PREDICATE:
/* FIXME */
- assert(0);
break;
default:
@@ -602,21 +592,37 @@ emit_store(
* High-level instruction translators.
*/
+enum tex_modifier {
+ TEX_MODIFIER_NONE = 0,
+ TEX_MODIFIER_PROJECTED,
+ TEX_MODIFIER_LOD_BIAS,
+ TEX_MODIFIER_EXPLICIT_LOD,
+ TEX_MODIFIER_EXPLICIT_DERIV
+};
static void
emit_tex( struct lp_build_tgsi_soa_context *bld,
const struct tgsi_full_instruction *inst,
- boolean apply_lodbias,
- boolean projected,
+ enum tex_modifier modifier,
LLVMValueRef *texel)
{
- const uint unit = inst->Src[1].Register.Index;
- LLVMValueRef lodbias;
+ unsigned unit;
+ LLVMValueRef lod_bias, explicit_lod;
LLVMValueRef oow = NULL;
LLVMValueRef coords[3];
+ LLVMValueRef ddx[3];
+ LLVMValueRef ddy[3];
unsigned num_coords;
unsigned i;
+ if (!bld->sampler) {
+ _debug_printf("warning: found texture instruction but no sampler generator supplied\n");
+ for (i = 0; i < 4; i++) {
+ texel[i] = bld->base.undef;
+ }
+ return;
+ }
+
switch (inst->Texture.Texture) {
case TGSI_TEXTURE_1D:
num_coords = 1;
@@ -637,29 +643,57 @@ emit_tex( struct lp_build_tgsi_soa_context *bld,
return;
}
- if(apply_lodbias)
- lodbias = emit_fetch( bld, inst, 0, 3 );
- else
- lodbias = bld->base.zero;
+ if (modifier == TEX_MODIFIER_LOD_BIAS) {
+ lod_bias = emit_fetch( bld, inst, 0, 3 );
+ explicit_lod = NULL;
+ }
+ else if (modifier == TEX_MODIFIER_EXPLICIT_LOD) {
+ lod_bias = NULL;
+ explicit_lod = emit_fetch( bld, inst, 0, 3 );
+ }
+ else {
+ lod_bias = NULL;
+ explicit_lod = NULL;
+ }
- if (projected) {
+ if (modifier == TEX_MODIFIER_PROJECTED) {
oow = emit_fetch( bld, inst, 0, 3 );
oow = lp_build_rcp(&bld->base, oow);
}
for (i = 0; i < num_coords; i++) {
coords[i] = emit_fetch( bld, inst, 0, i );
- if (projected)
+ if (modifier == TEX_MODIFIER_PROJECTED)
coords[i] = lp_build_mul(&bld->base, coords[i], oow);
}
for (i = num_coords; i < 3; i++) {
coords[i] = bld->base.undef;
}
+ if (modifier == TEX_MODIFIER_EXPLICIT_DERIV) {
+ for (i = 0; i < num_coords; i++) {
+ ddx[i] = emit_fetch( bld, inst, 1, i );
+ ddy[i] = emit_fetch( bld, inst, 2, i );
+ }
+ unit = inst->Src[3].Register.Index;
+ } else {
+ for (i = 0; i < num_coords; i++) {
+ ddx[i] = emit_ddx( bld, coords[i] );
+ ddy[i] = emit_ddy( bld, coords[i] );
+ }
+ unit = inst->Src[1].Register.Index;
+ }
+ for (i = num_coords; i < 3; i++) {
+ ddx[i] = bld->base.undef;
+ ddy[i] = bld->base.undef;
+ }
+
bld->sampler->emit_fetch_texel(bld->sampler,
bld->base.builder,
bld->base.type,
- unit, num_coords, coords, lodbias,
+ unit, num_coords, coords,
+ ddx, ddy,
+ lod_bias, explicit_lod,
texel);
}
@@ -739,7 +773,7 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld,
lp_build_mask_update(bld->mask, mask);
}
-static int
+static void
emit_declaration(
struct lp_build_tgsi_soa_context *bld,
const struct tgsi_full_declaration *decl)
@@ -753,6 +787,7 @@ emit_declaration(
for (idx = first; idx <= last; ++idx) {
switch (decl->Declaration.File) {
case TGSI_FILE_TEMPORARY:
+ assert(idx < LP_MAX_TGSI_TEMPS);
if (bld->has_indirect_addressing) {
LLVMValueRef val = LLVMConstInt(LLVMInt32Type(),
last*4 + 4, 0);
@@ -772,18 +807,21 @@ emit_declaration(
break;
case TGSI_FILE_ADDRESS:
+ assert(idx < LP_MAX_TGSI_ADDRS);
for (i = 0; i < NUM_CHANNELS; i++)
bld->addr[idx][i] = lp_build_alloca(bld->base.builder,
vec_type, "");
break;
+ case TGSI_FILE_PREDICATE:
+ _debug_printf("warning: predicate registers not yet implemented\n");
+ break;
+
default:
/* don't need to declare other vars */
break;
}
}
-
- return TRUE;
}
@@ -1359,12 +1397,11 @@ emit_instruction(
break;
case TGSI_OPCODE_TEX:
- emit_tex( bld, inst, FALSE, FALSE, dst0 );
+ emit_tex( bld, inst, TEX_MODIFIER_NONE, dst0 );
break;
case TGSI_OPCODE_TXD:
- /* FIXME */
- return FALSE;
+ emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_DERIV, dst0 );
break;
case TGSI_OPCODE_UP2H:
@@ -1466,7 +1503,7 @@ emit_instruction(
break;
case TGSI_OPCODE_TXB:
- emit_tex( bld, inst, TRUE, FALSE, dst0 );
+ emit_tex( bld, inst, TEX_MODIFIER_LOD_BIAS, dst0 );
break;
case TGSI_OPCODE_NRM:
@@ -1571,11 +1608,11 @@ emit_instruction(
break;
case TGSI_OPCODE_TXL:
- emit_tex( bld, inst, TRUE, FALSE, dst0 );
+ emit_tex( bld, inst, TEX_MODIFIER_EXPLICIT_LOD, dst0 );
break;
case TGSI_OPCODE_TXP:
- emit_tex( bld, inst, FALSE, TRUE, dst0 );
+ emit_tex( bld, inst, TEX_MODIFIER_PROJECTED, dst0 );
break;
case TGSI_OPCODE_BRK:
@@ -1765,10 +1802,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
switch( parse.FullToken.Token.Type ) {
case TGSI_TOKEN_TYPE_DECLARATION:
/* Inputs already interpolated */
- {
- if (!emit_declaration( &bld, &parse.FullToken.FullDeclaration ))
- _debug_printf("warning: failed to define LLVM variable\n");
- }
+ emit_declaration( &bld, &parse.FullToken.FullDeclaration );
break;
case TGSI_TOKEN_TYPE_INSTRUCTION:
@@ -1787,7 +1821,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
{
const uint size = parse.FullToken.FullImmediate.Immediate.NrTokens - 1;
assert(size <= 4);
- assert(num_immediates < LP_MAX_IMMEDIATES);
+ assert(num_immediates < LP_MAX_TGSI_IMMEDIATES);
for( i = 0; i < size; ++i )
bld.immediates[num_immediates][i] =
lp_build_const_vec(type, parse.FullToken.FullImmediate.u[i].Float);
diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c
index 83000200189..1ad183b8dd4 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_dump.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c
@@ -100,7 +100,6 @@ static const char *file_names[TGSI_FILE_COUNT] =
"SAMP",
"ADDR",
"IMM",
- "LOOP",
"PRED",
"SV"
};
@@ -494,6 +493,30 @@ iter_instruction(
TXT( " " );
ctx->indent += info->post_indent;
+ if (inst->Instruction.Predicate) {
+ CHR( '(' );
+
+ if (inst->Predicate.Negate)
+ CHR( '!' );
+
+ TXT( "PRED[" );
+ SID( inst->Predicate.Index );
+ CHR( ']' );
+
+ if (inst->Predicate.SwizzleX != TGSI_SWIZZLE_X ||
+ inst->Predicate.SwizzleY != TGSI_SWIZZLE_Y ||
+ inst->Predicate.SwizzleZ != TGSI_SWIZZLE_Z ||
+ inst->Predicate.SwizzleW != TGSI_SWIZZLE_W) {
+ CHR( '.' );
+ ENM( inst->Predicate.SwizzleX, swizzle_names );
+ ENM( inst->Predicate.SwizzleY, swizzle_names );
+ ENM( inst->Predicate.SwizzleZ, swizzle_names );
+ ENM( inst->Predicate.SwizzleW, swizzle_names );
+ }
+
+ TXT( ") " );
+ }
+
TXT( info->mnemonic );
switch (inst->Instruction.Saturate) {
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 82eac05dc4d..9b1ca7fa851 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -1346,13 +1346,6 @@ store_dest(struct tgsi_exec_machine *mach,
dst = &mach->Addrs[index].xyzw[chan_index];
break;
- case TGSI_FILE_LOOP:
- assert(reg->Register.Index == 0);
- assert(mach->LoopCounterStackTop > 0);
- assert(chan_index == CHAN_X);
- dst = &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[chan_index];
- break;
-
case TGSI_FILE_PREDICATE:
index = reg->Register.Index;
assert(index < TGSI_EXEC_NUM_PREDS);
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index a22873e4c2b..11bbaf6722e 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -299,10 +299,6 @@ struct tgsi_exec_machine
uint LoopLabelStack[TGSI_EXEC_MAX_LOOP_NESTING];
int LoopLabelStackTop;
- /** Loop counter stack (x = index, y = counter, z = step) */
- struct tgsi_exec_vector LoopCounterStack[TGSI_EXEC_MAX_LOOP_NESTING];
- int LoopCounterStackTop;
-
/** Loop continue mask stack (see comments in tgsi_exec.c) */
uint ContStack[TGSI_EXEC_MAX_LOOP_NESTING];
int ContStackTop;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_sanity.c b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
index 76b7564cc36..ce0a92f7fb3 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_sanity.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
@@ -235,8 +235,8 @@ static const char *file_names[TGSI_FILE_COUNT] =
"SAMP",
"ADDR",
"IMM",
- "LOOP",
- "PRED"
+ "PRED",
+ "SV"
};
static boolean
diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
index 0b468a9184e..71a0d96331a 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -278,7 +278,6 @@ static const char *file_names[TGSI_FILE_COUNT] =
"SAMP",
"ADDR",
"IMM",
- "LOOP",
"PRED",
"SV"
};
@@ -816,6 +815,45 @@ parse_instruction(
struct tgsi_full_instruction inst;
uint advance;
+ inst = tgsi_default_full_instruction();
+
+ /* Parse predicate.
+ */
+ eat_opt_white( &ctx->cur );
+ if (*ctx->cur == '(') {
+ uint file;
+ int index;
+ uint swizzle[4];
+ boolean parsed_swizzle;
+
+ inst.Instruction.Predicate = 1;
+
+ ctx->cur++;
+ if (*ctx->cur == '!') {
+ ctx->cur++;
+ inst.Predicate.Negate = 1;
+ }
+
+ if (!parse_register_dst( ctx, &file, &index ))
+ return FALSE;
+
+ if (parse_optional_swizzle( ctx, swizzle, &parsed_swizzle )) {
+ if (parsed_swizzle) {
+ inst.Predicate.SwizzleX = swizzle[0];
+ inst.Predicate.SwizzleY = swizzle[1];
+ inst.Predicate.SwizzleZ = swizzle[2];
+ inst.Predicate.SwizzleW = swizzle[3];
+ }
+ }
+
+ if (*ctx->cur != ')') {
+ report_error( ctx, "Expected `)'" );
+ return FALSE;
+ }
+
+ ctx->cur++;
+ }
+
/* Parse instruction name.
*/
eat_opt_white( &ctx->cur );
@@ -849,7 +887,6 @@ parse_instruction(
return FALSE;
}
- inst = tgsi_default_full_instruction();
inst.Instruction.Opcode = i;
inst.Instruction.Saturate = saturate;
inst.Instruction.NumDstRegs = info->num_dst;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.c b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
index f725405ade1..49b854b1234 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.c
@@ -74,7 +74,6 @@ struct ureg_tokens {
#define UREG_MAX_IMMEDIATE 32
#define UREG_MAX_TEMP 256
#define UREG_MAX_ADDR 2
-#define UREG_MAX_LOOP 1
#define UREG_MAX_PRED 1
struct const_decl {
@@ -151,7 +150,6 @@ struct ureg_program
unsigned nr_addrs;
unsigned nr_preds;
- unsigned nr_loops;
unsigned nr_instructions;
struct ureg_tokens domain[2];
@@ -537,19 +535,6 @@ struct ureg_dst ureg_DECL_address( struct ureg_program *ureg )
return ureg_dst_register( TGSI_FILE_ADDRESS, 0 );
}
-/* Allocate a new loop register.
- */
-struct ureg_dst
-ureg_DECL_loop(struct ureg_program *ureg)
-{
- if (ureg->nr_loops < UREG_MAX_LOOP) {
- return ureg_dst_register(TGSI_FILE_LOOP, ureg->nr_loops++);
- }
-
- assert(0);
- return ureg_dst_register(TGSI_FILE_LOOP, 0);
-}
-
/* Allocate a new predicate register.
*/
struct ureg_dst
@@ -1356,13 +1341,6 @@ static void emit_decls( struct ureg_program *ureg )
0, ureg->nr_addrs );
}
- if (ureg->nr_loops) {
- emit_decl_range(ureg,
- TGSI_FILE_LOOP,
- 0,
- ureg->nr_loops);
- }
-
if (ureg->nr_preds) {
emit_decl_range(ureg,
TGSI_FILE_PREDICATE,
diff --git a/src/gallium/auxiliary/tgsi/tgsi_ureg.h b/src/gallium/auxiliary/tgsi/tgsi_ureg.h
index 0130a77aadb..f32420dd872 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_ureg.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_ureg.h
@@ -231,9 +231,6 @@ struct ureg_dst
ureg_DECL_address( struct ureg_program * );
struct ureg_dst
-ureg_DECL_loop( struct ureg_program * );
-
-struct ureg_dst
ureg_DECL_predicate(struct ureg_program *);
/* Supply an index to the sampler declaration as this is the hook to
diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c
index a9272fbb491..f8dbd2b36a1 100644
--- a/src/gallium/auxiliary/translate/translate_generic.c
+++ b/src/gallium/auxiliary/translate/translate_generic.c
@@ -31,6 +31,7 @@
*/
#include "util/u_memory.h"
+#include "util/u_format.h"
#include "util/u_math.h"
#include "pipe/p_state.h"
#include "translate.h"
@@ -38,7 +39,9 @@
#define DRAW_DBG 0
-typedef void (*fetch_func)(const void *ptr, float *attrib);
+typedef void (*fetch_func)(float *dst,
+ const uint8_t *src,
+ unsigned i, unsigned j);
typedef void (*emit_func)(const float *attrib, void *ptr);
@@ -57,7 +60,7 @@ struct translate_generic {
emit_func emit;
unsigned output_offset;
- char *input_ptr;
+ const uint8_t *input_ptr;
unsigned input_stride;
unsigned max_index;
@@ -79,22 +82,7 @@ static struct translate_generic *translate_generic( struct translate *translate
* This is probably needed/dupliocated elsewhere, eg format
* conversion, texture sampling etc.
*/
-#define ATTRIB( NAME, SZ, TYPE, FROM, TO ) \
-static void \
-fetch_##NAME(const void *ptr, float *attrib) \
-{ \
- const float defaults[4] = { 0.0f,0.0f,0.0f,1.0f }; \
- unsigned i; \
- \
- for (i = 0; i < SZ; i++) { \
- attrib[i] = FROM(i); \
- } \
- \
- for (; i < 4; i++) { \
- attrib[i] = defaults[i]; \
- } \
-} \
- \
+#define ATTRIB( NAME, SZ, TYPE, TO ) \
static void \
emit_##NAME(const float *attrib, void *ptr) \
{ \
@@ -107,27 +95,6 @@ emit_##NAME(const float *attrib, void *ptr) \
}
-#define FROM_64_FLOAT(i) ((float) ((double *) ptr)[i])
-#define FROM_32_FLOAT(i) (((float *) ptr)[i])
-
-#define FROM_8_USCALED(i) ((float) ((unsigned char *) ptr)[i])
-#define FROM_16_USCALED(i) ((float) ((unsigned short *) ptr)[i])
-#define FROM_32_USCALED(i) ((float) ((unsigned int *) ptr)[i])
-
-#define FROM_8_SSCALED(i) ((float) ((char *) ptr)[i])
-#define FROM_16_SSCALED(i) ((float) ((short *) ptr)[i])
-#define FROM_32_SSCALED(i) ((float) ((int *) ptr)[i])
-
-#define FROM_8_UNORM(i) ((float) ((unsigned char *) ptr)[i] / 255.0f)
-#define FROM_16_UNORM(i) ((float) ((unsigned short *) ptr)[i] / 65535.0f)
-#define FROM_32_UNORM(i) ((float) ((unsigned int *) ptr)[i] / 4294967295.0f)
-
-#define FROM_8_SNORM(i) ((float) ((char *) ptr)[i] / 127.0f)
-#define FROM_16_SNORM(i) ((float) ((short *) ptr)[i] / 32767.0f)
-#define FROM_32_SNORM(i) ((float) ((int *) ptr)[i] / 2147483647.0f)
-
-#define FROM_32_FIXED(i) (((int *) ptr)[i] / 65536.0f)
-
#define TO_64_FLOAT(x) ((double) x)
#define TO_32_FLOAT(x) (x)
@@ -150,95 +117,79 @@ emit_##NAME(const float *attrib, void *ptr) \
#define TO_32_FIXED(x) ((int) (x * 65536.0f))
+ATTRIB( R64G64B64A64_FLOAT, 4, double, TO_64_FLOAT )
+ATTRIB( R64G64B64_FLOAT, 3, double, TO_64_FLOAT )
+ATTRIB( R64G64_FLOAT, 2, double, TO_64_FLOAT )
+ATTRIB( R64_FLOAT, 1, double, TO_64_FLOAT )
+
+ATTRIB( R32G32B32A32_FLOAT, 4, float, TO_32_FLOAT )
+ATTRIB( R32G32B32_FLOAT, 3, float, TO_32_FLOAT )
+ATTRIB( R32G32_FLOAT, 2, float, TO_32_FLOAT )
+ATTRIB( R32_FLOAT, 1, float, TO_32_FLOAT )
+
+ATTRIB( R32G32B32A32_USCALED, 4, unsigned, TO_32_USCALED )
+ATTRIB( R32G32B32_USCALED, 3, unsigned, TO_32_USCALED )
+ATTRIB( R32G32_USCALED, 2, unsigned, TO_32_USCALED )
+ATTRIB( R32_USCALED, 1, unsigned, TO_32_USCALED )
+
+ATTRIB( R32G32B32A32_SSCALED, 4, int, TO_32_SSCALED )
+ATTRIB( R32G32B32_SSCALED, 3, int, TO_32_SSCALED )
+ATTRIB( R32G32_SSCALED, 2, int, TO_32_SSCALED )
+ATTRIB( R32_SSCALED, 1, int, TO_32_SSCALED )
+
+ATTRIB( R32G32B32A32_UNORM, 4, unsigned, TO_32_UNORM )
+ATTRIB( R32G32B32_UNORM, 3, unsigned, TO_32_UNORM )
+ATTRIB( R32G32_UNORM, 2, unsigned, TO_32_UNORM )
+ATTRIB( R32_UNORM, 1, unsigned, TO_32_UNORM )
+
+ATTRIB( R32G32B32A32_SNORM, 4, int, TO_32_SNORM )
+ATTRIB( R32G32B32_SNORM, 3, int, TO_32_SNORM )
+ATTRIB( R32G32_SNORM, 2, int, TO_32_SNORM )
+ATTRIB( R32_SNORM, 1, int, TO_32_SNORM )
+
+ATTRIB( R16G16B16A16_USCALED, 4, ushort, TO_16_USCALED )
+ATTRIB( R16G16B16_USCALED, 3, ushort, TO_16_USCALED )
+ATTRIB( R16G16_USCALED, 2, ushort, TO_16_USCALED )
+ATTRIB( R16_USCALED, 1, ushort, TO_16_USCALED )
+
+ATTRIB( R16G16B16A16_SSCALED, 4, short, TO_16_SSCALED )
+ATTRIB( R16G16B16_SSCALED, 3, short, TO_16_SSCALED )
+ATTRIB( R16G16_SSCALED, 2, short, TO_16_SSCALED )
+ATTRIB( R16_SSCALED, 1, short, TO_16_SSCALED )
+
+ATTRIB( R16G16B16A16_UNORM, 4, ushort, TO_16_UNORM )
+ATTRIB( R16G16B16_UNORM, 3, ushort, TO_16_UNORM )
+ATTRIB( R16G16_UNORM, 2, ushort, TO_16_UNORM )
+ATTRIB( R16_UNORM, 1, ushort, TO_16_UNORM )
+
+ATTRIB( R16G16B16A16_SNORM, 4, short, TO_16_SNORM )
+ATTRIB( R16G16B16_SNORM, 3, short, TO_16_SNORM )
+ATTRIB( R16G16_SNORM, 2, short, TO_16_SNORM )
+ATTRIB( R16_SNORM, 1, short, TO_16_SNORM )
+
+ATTRIB( R8G8B8A8_USCALED, 4, ubyte, TO_8_USCALED )
+ATTRIB( R8G8B8_USCALED, 3, ubyte, TO_8_USCALED )
+ATTRIB( R8G8_USCALED, 2, ubyte, TO_8_USCALED )
+ATTRIB( R8_USCALED, 1, ubyte, TO_8_USCALED )
+
+ATTRIB( R8G8B8A8_SSCALED, 4, char, TO_8_SSCALED )
+ATTRIB( R8G8B8_SSCALED, 3, char, TO_8_SSCALED )
+ATTRIB( R8G8_SSCALED, 2, char, TO_8_SSCALED )
+ATTRIB( R8_SSCALED, 1, char, TO_8_SSCALED )
+
+ATTRIB( R8G8B8A8_UNORM, 4, ubyte, TO_8_UNORM )
+ATTRIB( R8G8B8_UNORM, 3, ubyte, TO_8_UNORM )
+ATTRIB( R8G8_UNORM, 2, ubyte, TO_8_UNORM )
+ATTRIB( R8_UNORM, 1, ubyte, TO_8_UNORM )
+
+ATTRIB( R8G8B8A8_SNORM, 4, char, TO_8_SNORM )
+ATTRIB( R8G8B8_SNORM, 3, char, TO_8_SNORM )
+ATTRIB( R8G8_SNORM, 2, char, TO_8_SNORM )
+ATTRIB( R8_SNORM, 1, char, TO_8_SNORM )
+
+ATTRIB( A8R8G8B8_UNORM, 4, ubyte, TO_8_UNORM )
+/*ATTRIB( R8G8B8A8_UNORM, 4, ubyte, TO_8_UNORM )*/
-ATTRIB( R64G64B64A64_FLOAT, 4, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64G64B64_FLOAT, 3, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64G64_FLOAT, 2, double, FROM_64_FLOAT, TO_64_FLOAT )
-ATTRIB( R64_FLOAT, 1, double, FROM_64_FLOAT, TO_64_FLOAT )
-
-ATTRIB( R32G32B32A32_FLOAT, 4, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32G32B32_FLOAT, 3, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32G32_FLOAT, 2, float, FROM_32_FLOAT, TO_32_FLOAT )
-ATTRIB( R32_FLOAT, 1, float, FROM_32_FLOAT, TO_32_FLOAT )
-
-ATTRIB( R32G32B32A32_USCALED, 4, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32G32B32_USCALED, 3, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32G32_USCALED, 2, unsigned, FROM_32_USCALED, TO_32_USCALED )
-ATTRIB( R32_USCALED, 1, unsigned, FROM_32_USCALED, TO_32_USCALED )
-
-ATTRIB( R32G32B32A32_SSCALED, 4, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32G32B32_SSCALED, 3, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32G32_SSCALED, 2, int, FROM_32_SSCALED, TO_32_SSCALED )
-ATTRIB( R32_SSCALED, 1, int, FROM_32_SSCALED, TO_32_SSCALED )
-
-ATTRIB( R32G32B32A32_UNORM, 4, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32G32B32_UNORM, 3, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32G32_UNORM, 2, unsigned, FROM_32_UNORM, TO_32_UNORM )
-ATTRIB( R32_UNORM, 1, unsigned, FROM_32_UNORM, TO_32_UNORM )
-
-ATTRIB( R32G32B32A32_SNORM, 4, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32G32B32_SNORM, 3, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32G32_SNORM, 2, int, FROM_32_SNORM, TO_32_SNORM )
-ATTRIB( R32_SNORM, 1, int, FROM_32_SNORM, TO_32_SNORM )
-
-ATTRIB( R16G16B16A16_USCALED, 4, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16G16B16_USCALED, 3, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16G16_USCALED, 2, ushort, FROM_16_USCALED, TO_16_USCALED )
-ATTRIB( R16_USCALED, 1, ushort, FROM_16_USCALED, TO_16_USCALED )
-
-ATTRIB( R16G16B16A16_SSCALED, 4, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16G16B16_SSCALED, 3, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16G16_SSCALED, 2, short, FROM_16_SSCALED, TO_16_SSCALED )
-ATTRIB( R16_SSCALED, 1, short, FROM_16_SSCALED, TO_16_SSCALED )
-
-ATTRIB( R16G16B16A16_UNORM, 4, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16G16B16_UNORM, 3, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16G16_UNORM, 2, ushort, FROM_16_UNORM, TO_16_UNORM )
-ATTRIB( R16_UNORM, 1, ushort, FROM_16_UNORM, TO_16_UNORM )
-
-ATTRIB( R16G16B16A16_SNORM, 4, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16G16B16_SNORM, 3, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16G16_SNORM, 2, short, FROM_16_SNORM, TO_16_SNORM )
-ATTRIB( R16_SNORM, 1, short, FROM_16_SNORM, TO_16_SNORM )
-
-ATTRIB( R8G8B8A8_USCALED, 4, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8G8B8_USCALED, 3, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8G8_USCALED, 2, ubyte, FROM_8_USCALED, TO_8_USCALED )
-ATTRIB( R8_USCALED, 1, ubyte, FROM_8_USCALED, TO_8_USCALED )
-
-ATTRIB( R8G8B8A8_SSCALED, 4, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8G8B8_SSCALED, 3, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8G8_SSCALED, 2, char, FROM_8_SSCALED, TO_8_SSCALED )
-ATTRIB( R8_SSCALED, 1, char, FROM_8_SSCALED, TO_8_SSCALED )
-
-ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8G8B8_UNORM, 3, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8G8_UNORM, 2, ubyte, FROM_8_UNORM, TO_8_UNORM )
-ATTRIB( R8_UNORM, 1, ubyte, FROM_8_UNORM, TO_8_UNORM )
-
-ATTRIB( R8G8B8A8_SNORM, 4, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8G8B8_SNORM, 3, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8G8_SNORM, 2, char, FROM_8_SNORM, TO_8_SNORM )
-ATTRIB( R8_SNORM, 1, char, FROM_8_SNORM, TO_8_SNORM )
-
-ATTRIB( A8R8G8B8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )
-/*ATTRIB( R8G8B8A8_UNORM, 4, ubyte, FROM_8_UNORM, TO_8_UNORM )*/
-
-ATTRIB( R32G32B32A32_FIXED, 4, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32G32B32_FIXED, 3, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32G32_FIXED, 2, int, FROM_32_FIXED, TO_32_FIXED )
-ATTRIB( R32_FIXED, 1, int, FROM_32_FIXED, TO_32_FIXED )
-
-
-
-static void
-fetch_B8G8R8A8_UNORM(const void *ptr, float *attrib)
-{
- attrib[2] = FROM_8_UNORM(0);
- attrib[1] = FROM_8_UNORM(1);
- attrib[0] = FROM_8_UNORM(2);
- attrib[3] = FROM_8_UNORM(3);
-}
static void
emit_B8G8R8A8_UNORM( const float *attrib, void *ptr)
@@ -251,181 +202,13 @@ emit_B8G8R8A8_UNORM( const float *attrib, void *ptr)
}
static void
-fetch_NULL( const void *ptr, float *attrib )
-{
- attrib[0] = 0;
- attrib[1] = 0;
- attrib[2] = 0;
- attrib[3] = 1;
-}
-
-static void
emit_NULL( const float *attrib, void *ptr )
{
/* do nothing is the only sensible option */
}
-static fetch_func get_fetch_func( enum pipe_format format )
-{
- switch (format) {
- case PIPE_FORMAT_R64_FLOAT:
- return &fetch_R64_FLOAT;
- case PIPE_FORMAT_R64G64_FLOAT:
- return &fetch_R64G64_FLOAT;
- case PIPE_FORMAT_R64G64B64_FLOAT:
- return &fetch_R64G64B64_FLOAT;
- case PIPE_FORMAT_R64G64B64A64_FLOAT:
- return &fetch_R64G64B64A64_FLOAT;
-
- case PIPE_FORMAT_R32_FLOAT:
- return &fetch_R32_FLOAT;
- case PIPE_FORMAT_R32G32_FLOAT:
- return &fetch_R32G32_FLOAT;
- case PIPE_FORMAT_R32G32B32_FLOAT:
- return &fetch_R32G32B32_FLOAT;
- case PIPE_FORMAT_R32G32B32A32_FLOAT:
- return &fetch_R32G32B32A32_FLOAT;
-
- case PIPE_FORMAT_R32_UNORM:
- return &fetch_R32_UNORM;
- case PIPE_FORMAT_R32G32_UNORM:
- return &fetch_R32G32_UNORM;
- case PIPE_FORMAT_R32G32B32_UNORM:
- return &fetch_R32G32B32_UNORM;
- case PIPE_FORMAT_R32G32B32A32_UNORM:
- return &fetch_R32G32B32A32_UNORM;
-
- case PIPE_FORMAT_R32_USCALED:
- return &fetch_R32_USCALED;
- case PIPE_FORMAT_R32G32_USCALED:
- return &fetch_R32G32_USCALED;
- case PIPE_FORMAT_R32G32B32_USCALED:
- return &fetch_R32G32B32_USCALED;
- case PIPE_FORMAT_R32G32B32A32_USCALED:
- return &fetch_R32G32B32A32_USCALED;
-
- case PIPE_FORMAT_R32_SNORM:
- return &fetch_R32_SNORM;
- case PIPE_FORMAT_R32G32_SNORM:
- return &fetch_R32G32_SNORM;
- case PIPE_FORMAT_R32G32B32_SNORM:
- return &fetch_R32G32B32_SNORM;
- case PIPE_FORMAT_R32G32B32A32_SNORM:
- return &fetch_R32G32B32A32_SNORM;
-
- case PIPE_FORMAT_R32_SSCALED:
- return &fetch_R32_SSCALED;
- case PIPE_FORMAT_R32G32_SSCALED:
- return &fetch_R32G32_SSCALED;
- case PIPE_FORMAT_R32G32B32_SSCALED:
- return &fetch_R32G32B32_SSCALED;
- case PIPE_FORMAT_R32G32B32A32_SSCALED:
- return &fetch_R32G32B32A32_SSCALED;
-
- case PIPE_FORMAT_R16_UNORM:
- return &fetch_R16_UNORM;
- case PIPE_FORMAT_R16G16_UNORM:
- return &fetch_R16G16_UNORM;
- case PIPE_FORMAT_R16G16B16_UNORM:
- return &fetch_R16G16B16_UNORM;
- case PIPE_FORMAT_R16G16B16A16_UNORM:
- return &fetch_R16G16B16A16_UNORM;
-
- case PIPE_FORMAT_R16_USCALED:
- return &fetch_R16_USCALED;
- case PIPE_FORMAT_R16G16_USCALED:
- return &fetch_R16G16_USCALED;
- case PIPE_FORMAT_R16G16B16_USCALED:
- return &fetch_R16G16B16_USCALED;
- case PIPE_FORMAT_R16G16B16A16_USCALED:
- return &fetch_R16G16B16A16_USCALED;
-
- case PIPE_FORMAT_R16_SNORM:
- return &fetch_R16_SNORM;
- case PIPE_FORMAT_R16G16_SNORM:
- return &fetch_R16G16_SNORM;
- case PIPE_FORMAT_R16G16B16_SNORM:
- return &fetch_R16G16B16_SNORM;
- case PIPE_FORMAT_R16G16B16A16_SNORM:
- return &fetch_R16G16B16A16_SNORM;
-
- case PIPE_FORMAT_R16_SSCALED:
- return &fetch_R16_SSCALED;
- case PIPE_FORMAT_R16G16_SSCALED:
- return &fetch_R16G16_SSCALED;
- case PIPE_FORMAT_R16G16B16_SSCALED:
- return &fetch_R16G16B16_SSCALED;
- case PIPE_FORMAT_R16G16B16A16_SSCALED:
- return &fetch_R16G16B16A16_SSCALED;
-
- case PIPE_FORMAT_R8_UNORM:
- return &fetch_R8_UNORM;
- case PIPE_FORMAT_R8G8_UNORM:
- return &fetch_R8G8_UNORM;
- case PIPE_FORMAT_R8G8B8_UNORM:
- return &fetch_R8G8B8_UNORM;
- case PIPE_FORMAT_R8G8B8A8_UNORM:
- return &fetch_R8G8B8A8_UNORM;
-
- case PIPE_FORMAT_R8_USCALED:
- return &fetch_R8_USCALED;
- case PIPE_FORMAT_R8G8_USCALED:
- return &fetch_R8G8_USCALED;
- case PIPE_FORMAT_R8G8B8_USCALED:
- return &fetch_R8G8B8_USCALED;
- case PIPE_FORMAT_R8G8B8A8_USCALED:
- return &fetch_R8G8B8A8_USCALED;
-
- case PIPE_FORMAT_R8_SNORM:
- return &fetch_R8_SNORM;
- case PIPE_FORMAT_R8G8_SNORM:
- return &fetch_R8G8_SNORM;
- case PIPE_FORMAT_R8G8B8_SNORM:
- return &fetch_R8G8B8_SNORM;
- case PIPE_FORMAT_R8G8B8A8_SNORM:
- return &fetch_R8G8B8A8_SNORM;
-
- case PIPE_FORMAT_R8_SSCALED:
- return &fetch_R8_SSCALED;
- case PIPE_FORMAT_R8G8_SSCALED:
- return &fetch_R8G8_SSCALED;
- case PIPE_FORMAT_R8G8B8_SSCALED:
- return &fetch_R8G8B8_SSCALED;
- case PIPE_FORMAT_R8G8B8A8_SSCALED:
- return &fetch_R8G8B8A8_SSCALED;
-
- case PIPE_FORMAT_B8G8R8A8_UNORM:
- return &fetch_B8G8R8A8_UNORM;
-
- case PIPE_FORMAT_A8R8G8B8_UNORM:
- return &fetch_A8R8G8B8_UNORM;
-
- case PIPE_FORMAT_R32_FIXED:
- return &fetch_R32_FIXED;
- case PIPE_FORMAT_R32G32_FIXED:
- return &fetch_R32G32_FIXED;
- case PIPE_FORMAT_R32G32B32_FIXED:
- return &fetch_R32G32B32_FIXED;
- case PIPE_FORMAT_R32G32B32A32_FIXED:
- return &fetch_R32G32B32A32_FIXED;
-
- default:
- assert(0);
- return &fetch_NULL;
- }
-}
-
-
-
-
static emit_func get_emit_func( enum pipe_format format )
{
- /* silence warnings */
- (void) emit_R32G32B32A32_FIXED;
- (void) emit_R32G32B32_FIXED;
- (void) emit_R32G32_FIXED;
- (void) emit_R32_FIXED;
-
switch (format) {
case PIPE_FORMAT_R64_FLOAT:
return &emit_R64_FLOAT;
@@ -589,7 +372,7 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate,
for (attr = 0; attr < nr_attrs; attr++) {
float data[4];
- const char *src;
+ const uint8_t *src;
unsigned index;
char *dst = (vert +
@@ -606,7 +389,7 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate,
src = tg->attrib[attr].input_ptr +
tg->attrib[attr].input_stride * index;
- tg->attrib[attr].fetch( src, data );
+ tg->attrib[attr].fetch( data, src, 0, 0 );
if (0) debug_printf("vert %d/%d attr %d: %f %f %f %f\n",
i, elt, attr, data[0], data[1], data[2], data[3]);
@@ -644,7 +427,7 @@ static void PIPE_CDECL generic_run( struct translate *translate,
tg->attrib[attr].output_offset);
if (tg->attrib[attr].type == TRANSLATE_ELEMENT_NORMAL) {
- const char *src;
+ const uint8_t *src;
if (tg->attrib[attr].instance_divisor) {
src = tg->attrib[attr].input_ptr +
@@ -655,7 +438,7 @@ static void PIPE_CDECL generic_run( struct translate *translate,
tg->attrib[attr].input_stride * elt;
}
- tg->attrib[attr].fetch( src, data );
+ tg->attrib[attr].fetch( data, src, 0, 0 );
} else {
data[0] = (float)instance_id;
}
@@ -683,7 +466,7 @@ static void generic_set_buffer( struct translate *translate,
for (i = 0; i < tg->nr_attrib; i++) {
if (tg->attrib[i].buffer == buf) {
- tg->attrib[i].input_ptr = ((char *)ptr +
+ tg->attrib[i].input_ptr = ((const uint8_t *)ptr +
tg->attrib[i].input_offset);
tg->attrib[i].input_stride = stride;
tg->attrib[i].max_index = max_index;
@@ -714,9 +497,15 @@ struct translate *translate_generic_create( const struct translate_key *key )
tg->translate.run = generic_run;
for (i = 0; i < key->nr_elements; i++) {
+ const struct util_format_description *format_desc =
+ util_format_description(key->element[i].input_format);
+
+ assert(format_desc);
+ assert(format_desc->fetch_rgba_float);
+
tg->attrib[i].type = key->element[i].type;
- tg->attrib[i].fetch = get_fetch_func(key->element[i].input_format);
+ tg->attrib[i].fetch = format_desc->fetch_rgba_float;
tg->attrib[i].buffer = key->element[i].input_buffer;
tg->attrib[i].input_offset = key->element[i].input_offset;
tg->attrib[i].instance_divisor = key->element[i].instance_divisor;
diff --git a/src/gallium/auxiliary/util/u_blitter.c b/src/gallium/auxiliary/util/u_blitter.c
index 956aedc8a15..1abe31db466 100644
--- a/src/gallium/auxiliary/util/u_blitter.c
+++ b/src/gallium/auxiliary/util/u_blitter.c
@@ -47,6 +47,7 @@
#include "util/u_rect.h"
#include "util/u_sampler.h"
#include "util/u_simple_shaders.h"
+#include "util/u_surface.h"
#include "util/u_texture.h"
#define INVALID_PTR ((void*)~0)
diff --git a/src/gallium/auxiliary/util/u_caps.c b/src/gallium/auxiliary/util/u_caps.c
index 048bd5c34da..c7c1e830e01 100644
--- a/src/gallium/auxiliary/util/u_caps.c
+++ b/src/gallium/auxiliary/util/u_caps.c
@@ -73,6 +73,7 @@ util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out)
*out = i - 2;
return FALSE;
}
+ break;
case UTIL_CAPS_CHECK_UNIMPLEMENTED:
*out = i - 1;
return FALSE;
diff --git a/src/gallium/auxiliary/util/u_clear.h b/src/gallium/auxiliary/util/u_clear.h
index 2c32db61756..40da2d75a72 100644
--- a/src/gallium/auxiliary/util/u_clear.h
+++ b/src/gallium/auxiliary/util/u_clear.h
@@ -33,6 +33,7 @@
#include "pipe/p_state.h"
#include "util/u_pack_color.h"
#include "util/u_rect.h"
+#include "util/u_surface.h"
/**
diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h
index fb6ade5c06b..8ba076949b6 100644
--- a/src/gallium/auxiliary/util/u_format.h
+++ b/src/gallium/auxiliary/util/u_format.h
@@ -338,6 +338,34 @@ util_format_name(enum pipe_format format)
return desc->name;
}
+static INLINE const char *
+util_format_short_name(enum pipe_format format)
+{
+ const struct util_format_description *desc = util_format_description(format);
+
+ assert(desc);
+ if (!desc) {
+ return "???";
+ }
+
+ return desc->short_name;
+}
+
+/**
+ * Whether this format is plain, see UTIL_FORMAT_LAYOUT_PLAIN for more info.
+ */
+static INLINE boolean
+util_format_is_plain(enum pipe_format format)
+{
+ const struct util_format_description *desc = util_format_description(format);
+
+ if (!format) {
+ return FALSE;
+ }
+
+ return desc->layout == UTIL_FORMAT_LAYOUT_PLAIN ? TRUE : FALSE;
+}
+
static INLINE boolean
util_format_is_s3tc(enum pipe_format format)
{
diff --git a/src/gallium/auxiliary/util/u_format_s3tc.c b/src/gallium/auxiliary/util/u_format_s3tc.c
index 5b279b8fe26..bb989c29d81 100644
--- a/src/gallium/auxiliary/util/u_format_s3tc.c
+++ b/src/gallium/auxiliary/util/u_format_s3tc.c
@@ -120,7 +120,7 @@ util_format_s3tc_init(void)
library = util_dl_open(DXTN_LIBNAME);
if (!library) {
debug_printf("couldn't open " DXTN_LIBNAME ", software DXTn "
- "compression/decompression unavailable");
+ "compression/decompression unavailable\n");
return;
}
@@ -142,7 +142,7 @@ util_format_s3tc_init(void)
!util_format_dxtn_pack) {
debug_printf("couldn't reference all symbols in " DXTN_LIBNAME
", software DXTn compression/decompression "
- "unavailable");
+ "unavailable\n");
util_dl_close(library);
return;
}
diff --git a/src/gallium/auxiliary/util/u_framebuffer.c b/src/gallium/auxiliary/util/u_framebuffer.c
new file mode 100644
index 00000000000..bdac12dbca2
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_framebuffer.c
@@ -0,0 +1,111 @@
+/**************************************************************************
+ *
+ * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+/**
+ * @file
+ * Framebuffer utility functions.
+ *
+ * @author Brian Paul
+ */
+
+
+#include "pipe/p_screen.h"
+#include "pipe/p_state.h"
+#include "pipe/p_defines.h"
+#include "util/u_inlines.h"
+
+#include "util/u_memory.h"
+#include "util/u_framebuffer.h"
+
+
+/**
+ * Compare pipe_framebuffer_state objects.
+ * \return TRUE if same, FALSE if different
+ */
+boolean
+util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src)
+{
+ unsigned i;
+
+ if (dst->width != src->width ||
+ dst->height != src->height)
+ return FALSE;
+
+ for (i = 0; i < Elements(src->cbufs); i++) {
+ if (dst->cbufs[i] != src->cbufs[i]) {
+ return FALSE;
+ }
+ }
+
+ if (dst->nr_cbufs != src->nr_cbufs) {
+ return FALSE;
+ }
+
+ if (dst->zsbuf != src->zsbuf) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
+/**
+ * Copy framebuffer state from src to dst, updating refcounts.
+ */
+void
+util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src)
+{
+ unsigned i;
+
+ dst->width = src->width;
+ dst->height = src->height;
+
+ for (i = 0; i < Elements(src->cbufs); i++) {
+ pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
+ }
+
+ dst->nr_cbufs = src->nr_cbufs;
+
+ pipe_surface_reference(&dst->zsbuf, src->zsbuf);
+}
+
+
+void
+util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb)
+{
+ unsigned i;
+
+ for (i = 0; i < fb->nr_cbufs; i++) {
+ pipe_surface_reference(&fb->cbufs[i], NULL);
+ }
+
+ pipe_surface_reference(&fb->zsbuf, NULL);
+
+ fb->width = fb->height = 0;
+ fb->nr_cbufs = 0;
+}
diff --git a/src/gallium/auxiliary/util/u_framebuffer.h b/src/gallium/auxiliary/util/u_framebuffer.h
new file mode 100644
index 00000000000..adf1254e1b6
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_framebuffer.h
@@ -0,0 +1,49 @@
+/**************************************************************************
+ *
+ * Copyright 2009-2010 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+
+#ifndef U_FRAMEBUFFER_H
+#define U_FRAMEBUFFER_H
+
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_state.h"
+
+
+extern boolean
+util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src);
+
+extern void
+util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
+ const struct pipe_framebuffer_state *src);
+
+
+extern void
+util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb);
+
+
+#endif /* U_FRAMEBUFFER_H */
diff --git a/src/gallium/auxiliary/util/u_rect.c b/src/gallium/auxiliary/util/u_rect.c
index 098cdfd58b1..9bbcf1c8c49 100644
--- a/src/gallium/auxiliary/util/u_rect.c
+++ b/src/gallium/auxiliary/util/u_rect.c
@@ -30,12 +30,7 @@
*/
-#include "pipe/p_defines.h"
-#include "pipe/p_format.h"
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
#include "util/u_format.h"
-#include "util/u_inlines.h"
#include "util/u_rect.h"
@@ -152,156 +147,3 @@ util_fill_rect(ubyte * dst,
break;
}
}
-
-
-
-/**
- * Fallback function for pipe->surface_copy().
- * Note: (X,Y)=(0,0) is always the upper-left corner.
- * if do_flip, flip the image vertically on its way from src rect to dst rect.
- * XXX should probably put this in new u_surface.c file...
- */
-void
-util_surface_copy(struct pipe_context *pipe,
- boolean do_flip,
- struct pipe_surface *dst,
- unsigned dst_x, unsigned dst_y,
- struct pipe_surface *src,
- unsigned src_x, unsigned src_y,
- unsigned w, unsigned h)
-{
- struct pipe_transfer *src_trans, *dst_trans;
- void *dst_map;
- const void *src_map;
- enum pipe_format src_format, dst_format;
-
- assert(src->texture && dst->texture);
- if (!src->texture || !dst->texture)
- return;
-
- src_format = src->texture->format;
- dst_format = dst->texture->format;
-
- src_trans = pipe_get_transfer(pipe,
- src->texture,
- src->face,
- src->level,
- src->zslice,
- PIPE_TRANSFER_READ,
- src_x, src_y, w, h);
-
- dst_trans = pipe_get_transfer(pipe,
- dst->texture,
- dst->face,
- dst->level,
- dst->zslice,
- PIPE_TRANSFER_WRITE,
- dst_x, dst_y, w, h);
-
- assert(util_format_get_blocksize(dst_format) == util_format_get_blocksize(src_format));
- assert(util_format_get_blockwidth(dst_format) == util_format_get_blockwidth(src_format));
- assert(util_format_get_blockheight(dst_format) == util_format_get_blockheight(src_format));
-
- src_map = pipe->transfer_map(pipe, src_trans);
- dst_map = pipe->transfer_map(pipe, dst_trans);
-
- assert(src_map);
- assert(dst_map);
-
- if (src_map && dst_map) {
- /* If do_flip, invert src_y position and pass negative src stride */
- util_copy_rect(dst_map,
- dst_format,
- dst_trans->stride,
- 0, 0,
- w, h,
- src_map,
- do_flip ? -(int) src_trans->stride : src_trans->stride,
- 0,
- do_flip ? h - 1 : 0);
- }
-
- pipe->transfer_unmap(pipe, src_trans);
- pipe->transfer_unmap(pipe, dst_trans);
-
- pipe->transfer_destroy(pipe, src_trans);
- pipe->transfer_destroy(pipe, dst_trans);
-}
-
-
-
-#define UBYTE_TO_USHORT(B) ((B) | ((B) << 8))
-
-
-/**
- * Fallback for pipe->surface_fill() function.
- * XXX should probably put this in new u_surface.c file...
- */
-void
-util_surface_fill(struct pipe_context *pipe,
- struct pipe_surface *dst,
- unsigned dstx, unsigned dsty,
- unsigned width, unsigned height, unsigned value)
-{
- struct pipe_transfer *dst_trans;
- void *dst_map;
-
- assert(dst->texture);
- if (!dst->texture)
- return;
- dst_trans = pipe_get_transfer(pipe,
- dst->texture,
- dst->face,
- dst->level,
- dst->zslice,
- PIPE_TRANSFER_WRITE,
- dstx, dsty, width, height);
-
- dst_map = pipe->transfer_map(pipe, dst_trans);
-
- assert(dst_map);
-
- if (dst_map) {
- assert(dst_trans->stride > 0);
-
- switch (util_format_get_blocksize(dst->texture->format)) {
- case 1:
- case 2:
- case 4:
- util_fill_rect(dst_map, dst->texture->format,
- dst_trans->stride,
- 0, 0, width, height, value);
- break;
- case 8:
- {
- /* expand the 4-byte clear value to an 8-byte value */
- ushort *row = (ushort *) dst_map;
- ushort val0 = UBYTE_TO_USHORT((value >> 0) & 0xff);
- ushort val1 = UBYTE_TO_USHORT((value >> 8) & 0xff);
- ushort val2 = UBYTE_TO_USHORT((value >> 16) & 0xff);
- ushort val3 = UBYTE_TO_USHORT((value >> 24) & 0xff);
- unsigned i, j;
- val0 = (val0 << 8) | val0;
- val1 = (val1 << 8) | val1;
- val2 = (val2 << 8) | val2;
- val3 = (val3 << 8) | val3;
- for (i = 0; i < height; i++) {
- for (j = 0; j < width; j++) {
- row[j*4+0] = val0;
- row[j*4+1] = val1;
- row[j*4+2] = val2;
- row[j*4+3] = val3;
- }
- row += dst_trans->stride/2;
- }
- }
- break;
- default:
- assert(0);
- break;
- }
- }
-
- pipe->transfer_unmap(pipe, dst_trans);
- pipe->transfer_destroy(pipe, dst_trans);
-}
diff --git a/src/gallium/auxiliary/util/u_rect.h b/src/gallium/auxiliary/util/u_rect.h
index b44d821904b..40d57e662d7 100644
--- a/src/gallium/auxiliary/util/u_rect.h
+++ b/src/gallium/auxiliary/util/u_rect.h
@@ -37,9 +37,6 @@
#include "pipe/p_format.h"
-struct pipe_context;
-struct pipe_surface;
-
extern void
util_copy_rect(ubyte * dst, enum pipe_format format,
@@ -53,20 +50,4 @@ util_fill_rect(ubyte * dst, enum pipe_format format,
unsigned width, unsigned height, uint32_t value);
-extern void
-util_surface_copy(struct pipe_context *pipe,
- boolean do_flip,
- struct pipe_surface *dst,
- unsigned dst_x, unsigned dst_y,
- struct pipe_surface *src,
- unsigned src_x, unsigned src_y,
- unsigned w, unsigned h);
-
-extern void
-util_surface_fill(struct pipe_context *pipe,
- struct pipe_surface *dst,
- unsigned dstx, unsigned dsty,
- unsigned width, unsigned height, unsigned value);
-
-
#endif /* U_RECT_H */
diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c
index 42440d0d673..b47c92ca28f 100644
--- a/src/gallium/auxiliary/util/u_surface.c
+++ b/src/gallium/auxiliary/util/u_surface.c
@@ -32,12 +32,14 @@
*/
+#include "pipe/p_defines.h"
#include "pipe/p_screen.h"
#include "pipe/p_state.h"
-#include "pipe/p_defines.h"
-#include "util/u_inlines.h"
+#include "util/u_format.h"
+#include "util/u_inlines.h"
#include "util/u_memory.h"
+#include "util/u_rect.h"
#include "util/u_surface.h"
@@ -118,70 +120,150 @@ util_destroy_rgba_surface(struct pipe_resource *texture,
/**
- * Compare pipe_framebuffer_state objects.
- * \return TRUE if same, FALSE if different
+ * Fallback function for pipe->surface_copy().
+ * Note: (X,Y)=(0,0) is always the upper-left corner.
+ * if do_flip, flip the image vertically on its way from src rect to dst rect.
*/
-boolean
-util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src)
+void
+util_surface_copy(struct pipe_context *pipe,
+ boolean do_flip,
+ struct pipe_surface *dst,
+ unsigned dst_x, unsigned dst_y,
+ struct pipe_surface *src,
+ unsigned src_x, unsigned src_y,
+ unsigned w, unsigned h)
{
- unsigned i;
-
- if (dst->width != src->width ||
- dst->height != src->height)
- return FALSE;
-
- for (i = 0; i < Elements(src->cbufs); i++) {
- if (dst->cbufs[i] != src->cbufs[i]) {
- return FALSE;
- }
- }
-
- if (dst->nr_cbufs != src->nr_cbufs) {
- return FALSE;
+ struct pipe_transfer *src_trans, *dst_trans;
+ void *dst_map;
+ const void *src_map;
+ enum pipe_format src_format, dst_format;
+
+ assert(src->texture && dst->texture);
+ if (!src->texture || !dst->texture)
+ return;
+
+ src_format = src->texture->format;
+ dst_format = dst->texture->format;
+
+ src_trans = pipe_get_transfer(pipe,
+ src->texture,
+ src->face,
+ src->level,
+ src->zslice,
+ PIPE_TRANSFER_READ,
+ src_x, src_y, w, h);
+
+ dst_trans = pipe_get_transfer(pipe,
+ dst->texture,
+ dst->face,
+ dst->level,
+ dst->zslice,
+ PIPE_TRANSFER_WRITE,
+ dst_x, dst_y, w, h);
+
+ assert(util_format_get_blocksize(dst_format) == util_format_get_blocksize(src_format));
+ assert(util_format_get_blockwidth(dst_format) == util_format_get_blockwidth(src_format));
+ assert(util_format_get_blockheight(dst_format) == util_format_get_blockheight(src_format));
+
+ src_map = pipe->transfer_map(pipe, src_trans);
+ dst_map = pipe->transfer_map(pipe, dst_trans);
+
+ assert(src_map);
+ assert(dst_map);
+
+ if (src_map && dst_map) {
+ /* If do_flip, invert src_y position and pass negative src stride */
+ util_copy_rect(dst_map,
+ dst_format,
+ dst_trans->stride,
+ 0, 0,
+ w, h,
+ src_map,
+ do_flip ? -(int) src_trans->stride : src_trans->stride,
+ 0,
+ do_flip ? h - 1 : 0);
}
- if (dst->zsbuf != src->zsbuf) {
- return FALSE;
- }
+ pipe->transfer_unmap(pipe, src_trans);
+ pipe->transfer_unmap(pipe, dst_trans);
- return TRUE;
+ pipe->transfer_destroy(pipe, src_trans);
+ pipe->transfer_destroy(pipe, dst_trans);
}
-/**
- * Copy framebuffer state from src to dst, updating refcounts.
- */
-void
-util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src)
-{
- unsigned i;
-
- dst->width = src->width;
- dst->height = src->height;
- for (i = 0; i < Elements(src->cbufs); i++) {
- pipe_surface_reference(&dst->cbufs[i], src->cbufs[i]);
- }
-
- dst->nr_cbufs = src->nr_cbufs;
-
- pipe_surface_reference(&dst->zsbuf, src->zsbuf);
-}
+#define UBYTE_TO_USHORT(B) ((B) | ((B) << 8))
+/**
+ * Fallback for pipe->surface_fill() function.
+ */
void
-util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb)
+util_surface_fill(struct pipe_context *pipe,
+ struct pipe_surface *dst,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height, unsigned value)
{
- unsigned i;
-
- for (i = 0; i < fb->nr_cbufs; i++) {
- pipe_surface_reference(&fb->cbufs[i], NULL);
+ struct pipe_transfer *dst_trans;
+ void *dst_map;
+
+ assert(dst->texture);
+ if (!dst->texture)
+ return;
+ dst_trans = pipe_get_transfer(pipe,
+ dst->texture,
+ dst->face,
+ dst->level,
+ dst->zslice,
+ PIPE_TRANSFER_WRITE,
+ dstx, dsty, width, height);
+
+ dst_map = pipe->transfer_map(pipe, dst_trans);
+
+ assert(dst_map);
+
+ if (dst_map) {
+ assert(dst_trans->stride > 0);
+
+ switch (util_format_get_blocksize(dst->texture->format)) {
+ case 1:
+ case 2:
+ case 4:
+ util_fill_rect(dst_map, dst->texture->format,
+ dst_trans->stride,
+ 0, 0, width, height, value);
+ break;
+ case 8:
+ {
+ /* expand the 4-byte clear value to an 8-byte value */
+ ushort *row = (ushort *) dst_map;
+ ushort val0 = UBYTE_TO_USHORT((value >> 0) & 0xff);
+ ushort val1 = UBYTE_TO_USHORT((value >> 8) & 0xff);
+ ushort val2 = UBYTE_TO_USHORT((value >> 16) & 0xff);
+ ushort val3 = UBYTE_TO_USHORT((value >> 24) & 0xff);
+ unsigned i, j;
+ val0 = (val0 << 8) | val0;
+ val1 = (val1 << 8) | val1;
+ val2 = (val2 << 8) | val2;
+ val3 = (val3 << 8) | val3;
+ for (i = 0; i < height; i++) {
+ for (j = 0; j < width; j++) {
+ row[j*4+0] = val0;
+ row[j*4+1] = val1;
+ row[j*4+2] = val2;
+ row[j*4+3] = val3;
+ }
+ row += dst_trans->stride/2;
+ }
+ }
+ break;
+ default:
+ assert(0);
+ break;
+ }
}
- pipe_surface_reference(&fb->zsbuf, NULL);
-
- fb->width = fb->height = 0;
- fb->nr_cbufs = 0;
+ pipe->transfer_unmap(pipe, dst_trans);
+ pipe->transfer_destroy(pipe, dst_trans);
}
diff --git a/src/gallium/auxiliary/util/u_surface.h b/src/gallium/auxiliary/util/u_surface.h
index 119fcd4ce8e..c43169b5278 100644
--- a/src/gallium/auxiliary/util/u_surface.h
+++ b/src/gallium/auxiliary/util/u_surface.h
@@ -62,17 +62,22 @@ util_destroy_rgba_surface(struct pipe_resource *texture,
struct pipe_surface *surface);
-extern boolean
-util_framebuffer_state_equal(const struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src);
extern void
-util_copy_framebuffer_state(struct pipe_framebuffer_state *dst,
- const struct pipe_framebuffer_state *src);
-
+util_surface_copy(struct pipe_context *pipe,
+ boolean do_flip,
+ struct pipe_surface *dst,
+ unsigned dst_x, unsigned dst_y,
+ struct pipe_surface *src,
+ unsigned src_x, unsigned src_y,
+ unsigned w, unsigned h);
extern void
-util_unreference_framebuffer_state(struct pipe_framebuffer_state *fb);
+util_surface_fill(struct pipe_context *pipe,
+ struct pipe_surface *dst,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height, unsigned value);
+
#endif /* U_SURFACE_H */
diff --git a/src/gallium/drivers/cell/ppu/cell_surface.c b/src/gallium/drivers/cell/ppu/cell_surface.c
index ffb8595d828..6696a4591c1 100644
--- a/src/gallium/drivers/cell/ppu/cell_surface.c
+++ b/src/gallium/drivers/cell/ppu/cell_surface.c
@@ -25,7 +25,7 @@
*
**************************************************************************/
-#include "util/u_rect.h"
+#include "util/u_surface.h"
#include "cell_context.h"
#include "cell_surface.h"
diff --git a/src/gallium/drivers/i965/brw_wm_debug.c b/src/gallium/drivers/i965/brw_wm_debug.c
index 3d11fa074cc..e2767264e7e 100644
--- a/src/gallium/drivers/i965/brw_wm_debug.c
+++ b/src/gallium/drivers/i965/brw_wm_debug.c
@@ -202,7 +202,8 @@ static const char *file_strings[TGSI_FILE_COUNT+1] = {
"SAMPLER",
"ADDR",
"IMM",
- "LOOP",
+ "PRED",
+ "SV",
"PAYLOAD"
};
diff --git a/src/gallium/drivers/i965/intel_decode.c b/src/gallium/drivers/i965/intel_decode.c
index 6c47415cac5..bd8b9174a89 100644
--- a/src/gallium/drivers/i965/intel_decode.c
+++ b/src/gallium/drivers/i965/intel_decode.c
@@ -40,6 +40,7 @@
#include <stdint.h>
#include <string.h>
+#include "util/u_string.h"
#include "intel_decode.h"
/*#include "intel_chipset.h"*/
@@ -478,7 +479,7 @@ i915_get_instruction_src0(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a0 >> 7) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -496,7 +497,7 @@ i915_get_instruction_src1(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a1 >> 13) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -513,7 +514,7 @@ i915_get_instruction_src2(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a2 >> 21) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -642,7 +643,7 @@ i915_decode_dcl(const uint32_t *data, uint32_t hw_offset, int i, char *instr_pre
switch ((d0 >> 19) & 0x3) {
case 1:
- sprintf(dcl_mask, ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w);
+ util_snprintf(dcl_mask, sizeof(dcl_mask), ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w);
if (strcmp(dcl_mask, ".") == 0)
fprintf(out, "bad (empty) dcl mask\n");
@@ -976,7 +977,7 @@ decode_3d_1d(const uint32_t *data, int count, uint32_t hw_offset, int *failures,
if (i + 3 >= count)
BUFFER_FAIL(count, len, "3DSTATE_PIXEL_SHADER_PROGRAM");
- sprintf(instr_prefix, "PS%03d", instr);
+ util_snprintf(instr_prefix, sizeof(instr_prefix), "PS%03d", instr);
i915_decode_instruction(data, hw_offset, i, instr_prefix);
i += 3;
}
diff --git a/src/gallium/drivers/identity/id_context.c b/src/gallium/drivers/identity/id_context.c
index 0bc8bf21966..7e62213597c 100644
--- a/src/gallium/drivers/identity/id_context.c
+++ b/src/gallium/drivers/identity/id_context.c
@@ -684,79 +684,67 @@ identity_flush(struct pipe_context *_pipe,
static unsigned int
identity_is_resource_referenced(struct pipe_context *_pipe,
- struct pipe_resource *_resource,
- unsigned face,
- unsigned level)
+ struct pipe_resource *_resource,
+ unsigned face,
+ unsigned level)
{
struct identity_context *id_pipe = identity_context(_pipe);
struct identity_resource *id_resource = identity_resource(_resource);
struct pipe_context *pipe = id_pipe->pipe;
- struct pipe_resource *texture = id_resource->resource;
+ struct pipe_resource *resource = id_resource->resource;
return pipe->is_resource_referenced(pipe,
- texture,
- face,
- level);
+ resource,
+ face,
+ level);
}
static struct pipe_sampler_view *
-identity_create_sampler_view(struct pipe_context *pipe,
- struct pipe_resource *texture,
- const struct pipe_sampler_view *templ)
+identity_context_create_sampler_view(struct pipe_context *_pipe,
+ struct pipe_resource *_resource,
+ const struct pipe_sampler_view *templ)
{
- struct identity_context *id_pipe = identity_context(pipe);
- struct identity_resource *id_resource = identity_resource(texture);
- struct pipe_context *pipe_unwrapped = id_pipe->pipe;
- struct pipe_resource *texture_unwrapped = id_resource->resource;
- struct identity_sampler_view *view = MALLOC(sizeof(struct identity_sampler_view));
-
- view->sampler_view = pipe_unwrapped->create_sampler_view(pipe_unwrapped,
- texture_unwrapped,
- templ);
+ struct identity_context *id_context = identity_context(_pipe);
+ struct identity_resource *id_resource = identity_resource(_resource);
+ struct pipe_context *pipe = id_context->pipe;
+ struct pipe_resource *resource = id_resource->resource;
+ struct pipe_sampler_view *result;
- view->base = *templ;
- view->base.reference.count = 1;
- view->base.texture = NULL;
- pipe_resource_reference(&view->base.texture, texture);
- view->base.context = pipe;
+ result = pipe->create_sampler_view(pipe,
+ resource,
+ templ);
- return &view->base;
+ if (result)
+ return identity_sampler_view_create(id_context, id_resource, result);
+ return NULL;
}
static void
-identity_sampler_view_destroy(struct pipe_context *pipe,
- struct pipe_sampler_view *view)
+identity_context_sampler_view_destroy(struct pipe_context *_pipe,
+ struct pipe_sampler_view *_view)
{
- struct identity_context *id_pipe = identity_context(pipe);
- struct identity_sampler_view *id_view = identity_sampler_view(view);
- struct pipe_context *pipe_unwrapped = id_pipe->pipe;
- struct pipe_sampler_view *view_unwrapped = id_view->sampler_view;
-
- pipe_unwrapped->sampler_view_destroy(pipe_unwrapped,
- view_unwrapped);
-
- pipe_resource_reference(&view->texture, NULL);
- FREE(view);
+ identity_sampler_view_destroy(identity_context(_pipe),
+ identity_sampler_view(_view));
}
static struct pipe_transfer *
identity_context_get_transfer(struct pipe_context *_context,
- struct pipe_resource *_resource,
- struct pipe_subresource sr,
- unsigned usage,
- const struct pipe_box *box)
+ struct pipe_resource *_resource,
+ struct pipe_subresource sr,
+ unsigned usage,
+ const struct pipe_box *box)
{
struct identity_context *id_context = identity_context(_context);
struct identity_resource *id_resource = identity_resource(_resource);
struct pipe_context *context = id_context->pipe;
- struct pipe_resource *texture = id_resource->resource;
+ struct pipe_resource *resource = id_resource->resource;
struct pipe_transfer *result;
result = context->get_transfer(context,
- texture,
- sr,
- usage,
- box);
+ resource,
+ sr,
+ usage,
+ box);
if (result)
return identity_transfer_create(id_context, id_resource, result);
@@ -765,7 +753,7 @@ identity_context_get_transfer(struct pipe_context *_context,
static void
identity_context_transfer_destroy(struct pipe_context *_pipe,
- struct pipe_transfer *_transfer)
+ struct pipe_transfer *_transfer)
{
identity_transfer_destroy(identity_context(_pipe),
identity_transfer(_transfer));
@@ -773,7 +761,7 @@ identity_context_transfer_destroy(struct pipe_context *_pipe,
static void *
identity_context_transfer_map(struct pipe_context *_context,
- struct pipe_transfer *_transfer)
+ struct pipe_transfer *_transfer)
{
struct identity_context *id_context = identity_context(_context);
struct identity_transfer *id_transfer = identity_transfer(_transfer);
@@ -781,15 +769,15 @@ identity_context_transfer_map(struct pipe_context *_context,
struct pipe_transfer *transfer = id_transfer->transfer;
return context->transfer_map(context,
- transfer);
+ transfer);
}
static void
-identity_context_transfer_flush_region( struct pipe_context *_context,
- struct pipe_transfer *_transfer,
- const struct pipe_box *box)
+identity_context_transfer_flush_region(struct pipe_context *_context,
+ struct pipe_transfer *_transfer,
+ const struct pipe_box *box)
{
struct identity_context *id_context = identity_context(_context);
struct identity_transfer *id_transfer = identity_transfer(_transfer);
@@ -797,14 +785,14 @@ identity_context_transfer_flush_region( struct pipe_context *_context,
struct pipe_transfer *transfer = id_transfer->transfer;
context->transfer_flush_region(context,
- transfer,
- box);
+ transfer,
+ box);
}
static void
identity_context_transfer_unmap(struct pipe_context *_context,
- struct pipe_transfer *_transfer)
+ struct pipe_transfer *_transfer)
{
struct identity_context *id_context = identity_context(_context);
struct identity_transfer *id_transfer = identity_transfer(_transfer);
@@ -812,33 +800,33 @@ identity_context_transfer_unmap(struct pipe_context *_context,
struct pipe_transfer *transfer = id_transfer->transfer;
context->transfer_unmap(context,
- transfer);
+ transfer);
}
static void
-identity_context_transfer_inline_write( struct pipe_context *_context,
- struct pipe_resource *_resource,
- struct pipe_subresource sr,
- unsigned usage,
- const struct pipe_box *box,
- const void *data,
- unsigned stride,
- unsigned slice_stride)
+identity_context_transfer_inline_write(struct pipe_context *_context,
+ struct pipe_resource *_resource,
+ struct pipe_subresource sr,
+ unsigned usage,
+ const struct pipe_box *box,
+ const void *data,
+ unsigned stride,
+ unsigned slice_stride)
{
struct identity_context *id_context = identity_context(_context);
struct identity_resource *id_resource = identity_resource(_resource);
struct pipe_context *context = id_context->pipe;
- struct pipe_resource *texture = id_resource->resource;
+ struct pipe_resource *resource = id_resource->resource;
context->transfer_inline_write(context,
- texture,
- sr,
- usage,
- box,
- data,
- stride,
- slice_stride);
+ resource,
+ sr,
+ usage,
+ box,
+ data,
+ stride,
+ slice_stride);
}
@@ -905,8 +893,8 @@ identity_context_create(struct pipe_screen *_screen, struct pipe_context *pipe)
id_pipe->base.clear = identity_clear;
id_pipe->base.flush = identity_flush;
id_pipe->base.is_resource_referenced = identity_is_resource_referenced;
- id_pipe->base.create_sampler_view = identity_create_sampler_view;
- id_pipe->base.sampler_view_destroy = identity_sampler_view_destroy;
+ id_pipe->base.create_sampler_view = identity_context_create_sampler_view;
+ id_pipe->base.sampler_view_destroy = identity_context_sampler_view_destroy;
id_pipe->base.get_transfer = identity_context_get_transfer;
id_pipe->base.transfer_destroy = identity_context_transfer_destroy;
id_pipe->base.transfer_map = identity_context_transfer_map;
diff --git a/src/gallium/drivers/identity/id_objects.c b/src/gallium/drivers/identity/id_objects.c
index d50914e7d5d..ca4743f9ef7 100644
--- a/src/gallium/drivers/identity/id_objects.c
+++ b/src/gallium/drivers/identity/id_objects.c
@@ -108,9 +108,45 @@ identity_surface_destroy(struct identity_surface *id_surface)
}
+struct pipe_sampler_view *
+identity_sampler_view_create(struct identity_context *id_context,
+ struct identity_resource *id_resource,
+ struct pipe_sampler_view *view)
+{
+ struct identity_sampler_view *id_view;
+
+ if (!view)
+ goto error;
+
+ assert(view->texture == id_resource->resource);
+
+ id_view = MALLOC(sizeof(struct identity_sampler_view));
+
+ id_view->base = *view;
+ id_view->base.reference.count = 1;
+ id_view->base.texture = NULL;
+ pipe_resource_reference(&id_view->base.texture, id_resource->resource);
+ id_view->base.context = id_context->pipe;
+
+ return &id_view->base;
+error:
+ return NULL;
+}
+
+void
+identity_sampler_view_destroy(struct identity_context *id_context,
+ struct identity_sampler_view *id_view)
+{
+ pipe_resource_reference(&id_view->base.texture, NULL);
+ id_context->pipe->sampler_view_destroy(id_context->pipe,
+ id_view->sampler_view);
+ FREE(id_view);
+}
+
+
struct pipe_transfer *
identity_transfer_create(struct identity_context *id_context,
- struct identity_resource *id_resource,
+ struct identity_resource *id_resource,
struct pipe_transfer *transfer)
{
struct identity_transfer *id_transfer;
@@ -144,8 +180,8 @@ identity_transfer_destroy(struct identity_context *id_context,
struct identity_transfer *id_transfer)
{
pipe_resource_reference(&id_transfer->base.resource, NULL);
- id_context->pipe->transfer_destroy(id_context->pipe,
- id_transfer->transfer);
+ id_transfer->pipe->transfer_destroy(id_context->pipe,
+ id_transfer->transfer);
FREE(id_transfer);
}
diff --git a/src/gallium/drivers/identity/id_objects.h b/src/gallium/drivers/identity/id_objects.h
index 058cf3009df..5eea10b0b5a 100644
--- a/src/gallium/drivers/identity/id_objects.h
+++ b/src/gallium/drivers/identity/id_objects.h
@@ -142,7 +142,7 @@ identity_transfer_unwrap(struct pipe_transfer *_transfer)
struct pipe_resource *
identity_resource_create(struct identity_screen *id_screen,
- struct pipe_resource *resource);
+ struct pipe_resource *resource);
void
identity_resource_destroy(struct identity_resource *id_resource);
@@ -154,9 +154,18 @@ identity_surface_create(struct identity_resource *id_resource,
void
identity_surface_destroy(struct identity_surface *id_surface);
+struct pipe_sampler_view *
+identity_sampler_view_create(struct identity_context *id_context,
+ struct identity_resource *id_resource,
+ struct pipe_sampler_view *view);
+
+void
+identity_sampler_view_destroy(struct identity_context *id_context,
+ struct identity_sampler_view *id_sampler_view);
+
struct pipe_transfer *
identity_transfer_create(struct identity_context *id_context,
- struct identity_resource *id_resource,
+ struct identity_resource *id_resource,
struct pipe_transfer *transfer);
void
diff --git a/src/gallium/drivers/identity/id_screen.c b/src/gallium/drivers/identity/id_screen.c
index 52573b211fb..7671bded981 100644
--- a/src/gallium/drivers/identity/id_screen.c
+++ b/src/gallium/drivers/identity/id_screen.c
@@ -120,14 +120,14 @@ identity_screen_context_create(struct pipe_screen *_screen,
static struct pipe_resource *
identity_screen_resource_create(struct pipe_screen *_screen,
- const struct pipe_resource *templat)
+ const struct pipe_resource *templat)
{
struct identity_screen *id_screen = identity_screen(_screen);
struct pipe_screen *screen = id_screen->screen;
struct pipe_resource *result;
result = screen->resource_create(screen,
- templat);
+ templat);
if (result)
return identity_resource_create(id_screen, result);
@@ -136,8 +136,8 @@ identity_screen_resource_create(struct pipe_screen *_screen,
static struct pipe_resource *
identity_screen_resource_from_handle(struct pipe_screen *_screen,
- const struct pipe_resource *templ,
- struct winsys_handle *handle)
+ const struct pipe_resource *templ,
+ struct winsys_handle *handle)
{
struct identity_screen *id_screen = identity_screen(_screen);
struct pipe_screen *screen = id_screen->screen;
@@ -154,44 +154,44 @@ identity_screen_resource_from_handle(struct pipe_screen *_screen,
static boolean
identity_screen_resource_get_handle(struct pipe_screen *_screen,
- struct pipe_resource *_texture,
- struct winsys_handle *handle)
+ struct pipe_resource *_resource,
+ struct winsys_handle *handle)
{
struct identity_screen *id_screen = identity_screen(_screen);
- struct identity_resource *id_resource = identity_resource(_texture);
+ struct identity_resource *id_resource = identity_resource(_resource);
struct pipe_screen *screen = id_screen->screen;
- struct pipe_resource *texture = id_resource->resource;
+ struct pipe_resource *resource = id_resource->resource;
/* TODO trace call */
- return screen->resource_get_handle(screen, texture, handle);
+ return screen->resource_get_handle(screen, resource, handle);
}
static void
identity_screen_resource_destroy(struct pipe_screen *screen,
- struct pipe_resource *_texture)
+ struct pipe_resource *_resource)
{
- identity_resource_destroy(identity_resource(_texture));
+ identity_resource_destroy(identity_resource(_resource));
}
static struct pipe_surface *
identity_screen_get_tex_surface(struct pipe_screen *_screen,
- struct pipe_resource *_texture,
+ struct pipe_resource *_resource,
unsigned face,
unsigned level,
unsigned zslice,
unsigned usage)
{
struct identity_screen *id_screen = identity_screen(_screen);
- struct identity_resource *id_resource = identity_resource(_texture);
+ struct identity_resource *id_resource = identity_resource(_resource);
struct pipe_screen *screen = id_screen->screen;
- struct pipe_resource *texture = id_resource->resource;
+ struct pipe_resource *resource = id_resource->resource;
struct pipe_surface *result;
result = screen->get_tex_surface(screen,
- texture,
+ resource,
face,
level,
zslice,
@@ -214,7 +214,7 @@ static struct pipe_resource *
identity_screen_user_buffer_create(struct pipe_screen *_screen,
void *ptr,
unsigned bytes,
- unsigned usage)
+ unsigned usage)
{
struct identity_screen *id_screen = identity_screen(_screen);
struct pipe_screen *screen = id_screen->screen;
@@ -223,7 +223,7 @@ identity_screen_user_buffer_create(struct pipe_screen *_screen,
result = screen->user_buffer_create(screen,
ptr,
bytes,
- usage);
+ usage);
if (result)
return identity_resource_create(id_screen, result);
diff --git a/src/gallium/drivers/llvmpipe/.gitignore b/src/gallium/drivers/llvmpipe/.gitignore
index 257b72d7b2b..a1b6f56e0d2 100644
--- a/src/gallium/drivers/llvmpipe/.gitignore
+++ b/src/gallium/drivers/llvmpipe/.gitignore
@@ -1 +1,5 @@
lp_tile_soa.c
+lp_test_blend
+lp_test_conv
+lp_test_format
+lp_test_printf
diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c
index 466a2f54fbe..30e206a2b42 100644
--- a/src/gallium/drivers/llvmpipe/lp_jit.c
+++ b/src/gallium/drivers/llvmpipe/lp_jit.c
@@ -185,6 +185,8 @@ lp_jit_screen_init(struct llvmpipe_screen *screen)
/* These are the passes currently listed in llvm-c/Transforms/Scalar.h,
* but there are more on SVN. */
/* TODO: Add more passes */
+ LLVMAddCFGSimplificationPass(screen->pass);
+ LLVMAddPromoteMemoryToRegisterPass(screen->pass);
LLVMAddConstantPropagationPass(screen->pass);
if(util_cpu_caps.has_sse4_1) {
/* FIXME: There is a bug in this pass, whereby the combination of fptosi
@@ -193,9 +195,7 @@ lp_jit_screen_init(struct llvmpipe_screen *screen)
*/
LLVMAddInstructionCombiningPass(screen->pass);
}
- LLVMAddPromoteMemoryToRegisterPass(screen->pass);
LLVMAddGVNPass(screen->pass);
- LLVMAddCFGSimplificationPass(screen->pass);
}
lp_jit_init_globals(screen);
diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c
index 1482a777ff8..887f2dbad91 100644
--- a/src/gallium/drivers/llvmpipe/lp_scene.c
+++ b/src/gallium/drivers/llvmpipe/lp_scene.c
@@ -25,6 +25,7 @@
*
**************************************************************************/
+#include "util/u_framebuffer.h"
#include "util/u_math.h"
#include "util/u_memory.h"
#include "util/u_inlines.h"
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index 21509560084..1a2cd55b164 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -33,6 +33,7 @@
*/
#include "pipe/p_defines.h"
+#include "util/u_framebuffer.h"
#include "util/u_inlines.h"
#include "util/u_memory.h"
#include "util/u_pack_color.h"
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 965777b6411..5f861d6ca4d 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -618,7 +618,6 @@ generate_fragment(struct llvmpipe_context *lp,
struct lp_type fs_type;
struct lp_type blend_type;
LLVMTypeRef fs_elem_type;
- LLVMTypeRef fs_vec_type;
LLVMTypeRef fs_int_vec_type;
LLVMTypeRef blend_vec_type;
LLVMTypeRef arg_types[15];
@@ -675,7 +674,6 @@ generate_fragment(struct llvmpipe_context *lp,
*/
fs_elem_type = lp_build_elem_type(fs_type);
- fs_vec_type = lp_build_vec_type(fs_type);
fs_int_vec_type = lp_build_int_vec_type(fs_type);
blend_vec_type = lp_build_vec_type(blend_type);
@@ -1064,6 +1062,34 @@ llvmpipe_set_constant_buffer(struct pipe_context *pipe,
/**
+ * Return the blend factor equivalent to a destination alpha of one.
+ */
+static INLINE unsigned
+force_dst_alpha_one(unsigned factor, boolean alpha)
+{
+ switch(factor) {
+ case PIPE_BLENDFACTOR_DST_ALPHA:
+ return PIPE_BLENDFACTOR_ONE;
+ case PIPE_BLENDFACTOR_INV_DST_ALPHA:
+ return PIPE_BLENDFACTOR_ZERO;
+ case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
+ return PIPE_BLENDFACTOR_ZERO;
+ }
+
+ if (alpha) {
+ switch(factor) {
+ case PIPE_BLENDFACTOR_DST_COLOR:
+ return PIPE_BLENDFACTOR_ONE;
+ case PIPE_BLENDFACTOR_INV_DST_COLOR:
+ return PIPE_BLENDFACTOR_ZERO;
+ }
+ }
+
+ return factor;
+}
+
+
+/**
* We need to generate several variants of the fragment pipeline to match
* all the combinations of the contributing state atoms.
*
@@ -1104,6 +1130,7 @@ make_variant_key(struct llvmpipe_context *lp,
key->nr_cbufs = lp->framebuffer.nr_cbufs;
for (i = 0; i < lp->framebuffer.nr_cbufs; i++) {
+ struct pipe_rt_blend_state *blend_rt = &key->blend.rt[i];
const struct util_format_description *format_desc;
unsigned chan;
@@ -1111,7 +1138,7 @@ make_variant_key(struct llvmpipe_context *lp,
assert(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB ||
format_desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB);
- key->blend.rt[i].colormask = lp->blend->rt[i].colormask;
+ blend_rt->colormask = lp->blend->rt[i].colormask;
/* mask out color channels not present in the color buffer.
* Should be simple to incorporate per-cbuf writemasks:
@@ -1120,7 +1147,27 @@ make_variant_key(struct llvmpipe_context *lp,
enum util_format_swizzle swizzle = format_desc->swizzle[chan];
if(swizzle > UTIL_FORMAT_SWIZZLE_W)
- key->blend.rt[i].colormask &= ~(1 << chan);
+ blend_rt->colormask &= ~(1 << chan);
+ }
+
+ /*
+ * Our swizzled render tiles always have an alpha channel, but the linear
+ * render target format often does not, so force here the dst alpha to be
+ * one.
+ *
+ * This is not a mere optimization. Wrong results will be produced if the
+ * dst alpha is used, the dst format does not have alpha, and the previous
+ * rendering was not flushed from the swizzled to linear buffer. For
+ * example, NonPowTwo DCT.
+ *
+ * TODO: This should be generalized to all channels for better
+ * performance, but only alpha causes correctness issues.
+ */
+ if (format_desc->swizzle[3] > UTIL_FORMAT_SWIZZLE_W) {
+ blend_rt->rgb_src_factor = force_dst_alpha_one(blend_rt->rgb_src_factor, FALSE);
+ blend_rt->rgb_dst_factor = force_dst_alpha_one(blend_rt->rgb_dst_factor, FALSE);
+ blend_rt->alpha_src_factor = force_dst_alpha_one(blend_rt->alpha_src_factor, TRUE);
+ blend_rt->alpha_dst_factor = force_dst_alpha_one(blend_rt->alpha_dst_factor, TRUE);
}
}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c
index 63b8f27b39c..4b135aaf8ba 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c
@@ -30,6 +30,7 @@
#include "pipe/p_state.h"
#include "util/u_inlines.h"
+#include "util/u_framebuffer.h"
#include "util/u_surface.h"
#include "lp_context.h"
#include "lp_scene.h"
diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c
index 8bd83f576f4..245171120dd 100644
--- a/src/gallium/drivers/llvmpipe/lp_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_surface.c
@@ -26,6 +26,7 @@
**************************************************************************/
#include "util/u_rect.h"
+#include "util/u_surface.h"
#include "lp_context.h"
#include "lp_flush.h"
#include "lp_limits.h"
diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c
index 74b7393e4ec..d3a9d39f616 100644
--- a/src/gallium/drivers/llvmpipe/lp_tex_sample.c
+++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.c
@@ -170,7 +170,10 @@ lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base,
unsigned unit,
unsigned num_coords,
const LLVMValueRef *coords,
- LLVMValueRef lodbias,
+ const LLVMValueRef *ddx,
+ const LLVMValueRef *ddy,
+ LLVMValueRef lod_bias, /* optional */
+ LLVMValueRef explicit_lod, /* optional */
LLVMValueRef *texel)
{
struct lp_llvm_sampler_soa *sampler = (struct lp_llvm_sampler_soa *)base;
@@ -182,9 +185,9 @@ lp_llvm_sampler_soa_emit_fetch_texel(struct lp_build_sampler_soa *base,
&sampler->dynamic_state.base,
type,
unit,
- num_coords,
- coords,
- lodbias,
+ num_coords, coords,
+ ddx, ddy,
+ lod_bias, explicit_lod,
texel);
}
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index b8b6b12120b..0156ff95ff9 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -3169,15 +3169,16 @@ nv50_program_tx_insn(struct nv50_pc *pc,
if (pc->p->type == PIPE_SHADER_FRAGMENT)
nv50_fp_move_results(pc);
- /* last insn must be long so it can have the exit bit set */
- if (!is_long(pc->p->exec_tail))
- convert_to_long(pc, pc->p->exec_tail);
- else
- if (is_immd(pc->p->exec_tail) ||
+ if (!pc->p->exec_tail ||
+ is_immd(pc->p->exec_tail) ||
is_join(pc->p->exec_tail) ||
is_control_flow(pc->p->exec_tail))
emit_nop(pc);
+ /* last insn must be long so it can have the exit bit set */
+ if (!is_long(pc->p->exec_tail))
+ convert_to_long(pc, pc->p->exec_tail);
+
pc->p->exec_tail->inst[1] |= 1; /* set exit bit */
terminate_mbb(pc);
@@ -4162,7 +4163,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
struct pipe_transfer *transfer;
if (!p->data[0] && p->immd_nr) {
- struct nouveau_resource *heap = nv50->screen->immd_heap[0];
+ struct nouveau_resource *heap = nv50->screen->immd_heap;
if (nouveau_resource_alloc(heap, p->immd_nr, p, &p->data[0])) {
while (heap->next && heap->size < p->immd_nr) {
@@ -4180,7 +4181,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
p->immd_nr, NV50_CB_PMISC);
}
- assert(p->param_nr <= 512);
+ assert(p->param_nr <= 16384);
if (p->param_nr) {
unsigned cb;
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index ad17991be9a..2dd10424245 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -190,9 +190,7 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
nouveau_grobj_free(&screen->tesla);
nouveau_grobj_free(&screen->eng2d);
nouveau_grobj_free(&screen->m2mf);
- nouveau_resource_destroy(&screen->immd_heap[0]);
- nouveau_resource_destroy(&screen->parm_heap[0]);
- nouveau_resource_destroy(&screen->parm_heap[1]);
+ nouveau_resource_destroy(&screen->immd_heap);
nouveau_screen_fini(&screen->base);
FREE(screen);
}
@@ -242,7 +240,7 @@ nv50_screen_relocs(struct nv50_screen *screen)
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOC (chan, screen->constbuf_parm[i],
- ((NV50_CB_PVP + i) << 16) | 0x0800, rl, 0, 0);
+ ((NV50_CB_PVP + i) << 16) | 0x0000, rl, 0, 0);
}
}
@@ -411,7 +409,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
OUT_RING (chan, (NV50_CB_AUX << 16) | 0x0200);
for (i = 0; i < 3; i++) {
- ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (256 * 4) * 4,
+ ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (4096 * 4) * 4,
&screen->constbuf_parm[i]);
if (ret) {
nv50_screen_destroy(pscreen);
@@ -420,14 +418,12 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
BEGIN_RING(chan, screen->tesla, NV50TCL_CB_DEF_ADDRESS_HIGH, 3);
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
- OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0800);
+ /* CB_DEF_SET_SIZE value of 0x0000 means 65536 */
+ OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0000);
}
- if (nouveau_resource_init(&screen->immd_heap[0], 0, 128) ||
- nouveau_resource_init(&screen->parm_heap[0], 0, 512) ||
- nouveau_resource_init(&screen->parm_heap[1], 0, 512))
- {
- NOUVEAU_ERR("Error initialising constant buffers.\n");
+ if (nouveau_resource_init(&screen->immd_heap, 0, 128)) {
+ NOUVEAU_ERR("Error initialising shader immediates heap.\n");
nv50_screen_destroy(pscreen);
return NULL;
}
diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h
index 40ebbee72e2..fbf15a75967 100644
--- a/src/gallium/drivers/nv50/nv50_screen.h
+++ b/src/gallium/drivers/nv50/nv50_screen.h
@@ -20,8 +20,7 @@ struct nv50_screen {
struct nouveau_bo *constbuf_misc[1];
struct nouveau_bo *constbuf_parm[PIPE_SHADER_TYPES];
- struct nouveau_resource *immd_heap[1];
- struct nouveau_resource *parm_heap[PIPE_SHADER_TYPES];
+ struct nouveau_resource *immd_heap;
struct pipe_resource *strm_vbuf[16];
diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c
index c2d9e835260..d905d95354f 100644
--- a/src/gallium/drivers/nv50/nv50_surface.c
+++ b/src/gallium/drivers/nv50/nv50_surface.c
@@ -31,6 +31,27 @@
#include "util/u_tile.h"
#include "util/u_format.h"
+/* return TRUE for formats that can be converted among each other by NV50_2D */
+static INLINE boolean
+nv50_2d_format_faithful(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_B8G8R8A8_UNORM:
+ case PIPE_FORMAT_B8G8R8X8_UNORM:
+ case PIPE_FORMAT_B8G8R8A8_SRGB:
+ case PIPE_FORMAT_B8G8R8X8_SRGB:
+ case PIPE_FORMAT_B5G6R5_UNORM:
+ case PIPE_FORMAT_B5G5R5A1_UNORM:
+ case PIPE_FORMAT_B10G10R10A2_UNORM:
+ case PIPE_FORMAT_R8_UNORM:
+ case PIPE_FORMAT_R32G32B32A32_FLOAT:
+ case PIPE_FORMAT_R32G32B32_FLOAT:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
static INLINE int
nv50_format(enum pipe_format format)
{
@@ -47,9 +68,12 @@ nv50_format(enum pipe_format format)
return NV50_2D_DST_FORMAT_R5G6B5_UNORM;
case PIPE_FORMAT_B5G5R5A1_UNORM:
return NV50_2D_DST_FORMAT_A1R5G5B5_UNORM;
+ case PIPE_FORMAT_B10G10R10A2_UNORM:
+ return NV50_2D_DST_FORMAT_A2R10G10B10_UNORM;
case PIPE_FORMAT_A8_UNORM:
case PIPE_FORMAT_I8_UNORM:
case PIPE_FORMAT_L8_UNORM:
+ case PIPE_FORMAT_R8_UNORM:
return NV50_2D_DST_FORMAT_R8_UNORM;
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return NV50_2D_DST_FORMAT_R32G32B32A32_FLOAT;
@@ -178,7 +202,9 @@ nv50_surface_copy(struct pipe_context *pipe,
struct nv50_context *nv50 = nv50_context(pipe);
struct nv50_screen *screen = nv50->screen;
- assert(src->format == dest->format);
+ assert((src->format == dest->format) ||
+ (nv50_2d_format_faithful(src->format) &&
+ nv50_2d_format_faithful(dest->format)));
nv50_surface_do_copy(screen, dest, destx, desty, src, srcx,
srcy, width, height);
diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c
index 928ad300eee..85c2c149016 100644
--- a/src/gallium/drivers/r300/r300_blit.c
+++ b/src/gallium/drivers/r300/r300_blit.c
@@ -129,15 +129,16 @@ void r300_surface_copy(struct pipe_context* pipe,
if (dst->texture->format != src->texture->format) {
debug_printf("r300: Implementation error: Format mismatch in %s\n"
" : src: %s dst: %s\n", __FUNCTION__,
- util_format_name(src->texture->format),
- util_format_name(dst->texture->format));
+ util_format_short_name(src->texture->format),
+ util_format_short_name(dst->texture->format));
debug_assert(0);
}
if (!pipe->screen->is_format_supported(pipe->screen,
old_format, src->texture->target,
PIPE_BIND_RENDER_TARGET |
- PIPE_BIND_SAMPLER_VIEW, 0)) {
+ PIPE_BIND_SAMPLER_VIEW, 0) &&
+ util_format_is_plain(old_format)) {
switch (util_format_get_blocksize(old_format)) {
case 1:
new_format = PIPE_FORMAT_I8_UNORM;
@@ -154,7 +155,7 @@ void r300_surface_copy(struct pipe_context* pipe,
default:
debug_printf("r300: surface_copy: Unhandled format: %s. Falling back to software.\n"
"r300: surface_copy: Software fallback doesn't work for tiled textures.\n",
- util_format_name(old_format));
+ util_format_short_name(old_format));
}
}
diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index 4f721ebb599..e84bce0010f 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -76,7 +76,6 @@ static void r300_destroy_context(struct pipe_context* context)
FREE(r300->rs_block_state.state);
FREE(r300->scissor_state.state);
FREE(r300->textures_state.state);
- FREE(r300->vap_output_state.state);
FREE(r300->viewport_state.state);
FREE(r300->ztop_state.state);
FREE(r300->fs_constants.state);
@@ -125,7 +124,6 @@ static void r300_setup_atoms(struct r300_context* r300)
R300_INIT_ATOM(viewport_state, 9);
R300_INIT_ATOM(rs_block_state, 0);
R300_INIT_ATOM(vertex_stream_state, 0);
- R300_INIT_ATOM(vap_output_state, 6);
R300_INIT_ATOM(pvs_flush, 2);
R300_INIT_ATOM(vs_state, 0);
R300_INIT_ATOM(vs_constants, 0);
@@ -149,7 +147,6 @@ static void r300_setup_atoms(struct r300_context* r300)
r300->rs_block_state.state = CALLOC_STRUCT(r300_rs_block);
r300->scissor_state.state = CALLOC_STRUCT(pipe_scissor_state);
r300->textures_state.state = CALLOC_STRUCT(r300_textures_state);
- r300->vap_output_state.state = CALLOC_STRUCT(r300_vap_output_state);
r300->viewport_state.state = CALLOC_STRUCT(r300_viewport_state);
r300->ztop_state.state = CALLOC_STRUCT(r300_ztop_state);
r300->fs_constants.state = CALLOC_STRUCT(r300_constant_buffer);
diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h
index a05bf3ce099..e9c8fcdc157 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -119,6 +119,10 @@ struct r300_rs_state {
};
struct r300_rs_block {
+ uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */
+ uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */
+ uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */
+
uint32_t ip[8]; /* R300_RS_IP_[0-7], R500_RS_IP_[0-7] */
uint32_t count; /* R300_RS_COUNT */
uint32_t inst_count; /* R300_RS_INST_COUNT */
@@ -190,12 +194,6 @@ struct r300_vertex_stream_state {
unsigned count;
};
-struct r300_vap_output_state {
- uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */
- uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */
- uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */
-};
-
struct r300_viewport_state {
float xscale; /* R300_VAP_VPORT_XSCALE: 0x2098 */
float xoffset; /* R300_VAP_VPORT_XOFFSET: 0x209c */
@@ -381,7 +379,7 @@ struct r300_context {
struct r300_atom query_start;
/* Rasterizer state. */
struct r300_atom rs_state;
- /* RS block state. */
+ /* RS block state + VAP (vertex shader) output mapping state. */
struct r300_atom rs_block_state;
/* Scissor state. */
struct r300_atom scissor_state;
@@ -389,8 +387,6 @@ struct r300_context {
struct r300_atom textures_state;
/* Vertex stream formatting state. */
struct r300_atom vertex_stream_state;
- /* VAP (vertex shader) output mapping state. */
- struct r300_atom vap_output_state;
/* Vertex shader. */
struct r300_atom vs_state;
/* Vertex shader constant buffer. */
@@ -424,6 +420,9 @@ struct r300_context {
struct pipe_viewport_state viewport;
+ /* Stream locations for SWTCL. */
+ int stream_loc_notcl[16];
+
/* Flag indicating whether or not the HW is dirty. */
uint32_t dirty_hw;
/* Whether polygon offset is enabled. */
diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c
index 4c2836f36a8..8eb321fa08a 100644
--- a/src/gallium/drivers/r300/r300_debug.c
+++ b/src/gallium/drivers/r300/r300_debug.c
@@ -37,6 +37,7 @@ static struct debug_option debug_options[] = {
{ "cs", DBG_CS, "Command submissions (for debugging)" },
{ "draw", DBG_DRAW, "Draw and emit (for debugging)" },
{ "tex", DBG_TEX, "Textures (for debugging)" },
+ { "texalloc", DBG_TEXALLOC, "Texture allocation (for debugging)" },
{ "fall", DBG_FALL, "Fallbacks (for debugging)" },
{ "rs", DBG_RS, "Rasterizer (for debugging)" },
{ "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" },
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 92b7517b8d6..23bbc6a99c8 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -717,6 +717,13 @@ void r300_emit_rs_block_state(struct r300_context* r300,
DBG(r300, DBG_DRAW, "r300: RS emit:\n");
BEGIN_CS(size);
+ OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2);
+ OUT_CS(rs->vap_vtx_state_cntl);
+ OUT_CS(rs->vap_vsm_vtx_assm);
+ OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2);
+ OUT_CS(rs->vap_out_vtx_fmt[0]);
+ OUT_CS(rs->vap_out_vtx_fmt[1]);
+
if (r300->screen->caps.is_r500) {
OUT_CS_REG_SEQ(R500_RS_IP_0, count);
} else {
@@ -901,25 +908,6 @@ void r300_emit_vertex_stream_state(struct r300_context* r300,
END_CS;
}
-void r300_emit_vap_output_state(struct r300_context* r300,
- unsigned size, void* state)
-{
- struct r300_vap_output_state *vap_out_state =
- (struct r300_vap_output_state*)state;
- CS_LOCALS(r300);
-
- DBG(r300, DBG_DRAW, "r300: VAP emit:\n");
-
- BEGIN_CS(size);
- OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2);
- OUT_CS(vap_out_state->vap_vtx_state_cntl);
- OUT_CS(vap_out_state->vap_vsm_vtx_assm);
- OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2);
- OUT_CS(vap_out_state->vap_out_vtx_fmt[0]);
- OUT_CS(vap_out_state->vap_out_vtx_fmt[1]);
- END_CS;
-}
-
void r300_emit_pvs_flush(struct r300_context* r300, unsigned size, void* state)
{
CS_LOCALS(r300);
diff --git a/src/gallium/drivers/r300/r300_emit.h b/src/gallium/drivers/r300/r300_emit.h
index c3eb195d4e7..3c0edf6fdca 100644
--- a/src/gallium/drivers/r300/r300_emit.h
+++ b/src/gallium/drivers/r300/r300_emit.h
@@ -81,9 +81,6 @@ void r300_emit_vertex_buffer(struct r300_context* r300);
void r300_emit_vertex_stream_state(struct r300_context* r300,
unsigned size, void* state);
-void r300_emit_vap_output_state(struct r300_context* r300,
- unsigned size, void* state);
-
void r300_emit_vs_constants(struct r300_context* r300,
unsigned size, void *state);
diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h
index 735c233c9e2..d58aa138a70 100644
--- a/src/gallium/drivers/r300/r300_screen.h
+++ b/src/gallium/drivers/r300/r300_screen.h
@@ -73,6 +73,7 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
#define DBG_NO_IMMD 0x0000200
#define DBG_STATS 0x0000400
#define DBG_RS 0x0000800
+#define DBG_TEXALLOC 0x0001000
/*@}*/
static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 9319dadfd1e..446422ca0f0 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -538,46 +538,12 @@ static void r300_set_stencil_ref(struct pipe_context* pipe,
}
/* This switcheroo is needed just because of goddamned MACRO_SWITCH. */
-static void r300_fb_update_tiling_flags(struct r300_context *r300,
+static void r300_fb_set_tiling_flags(struct r300_context *r300,
const struct pipe_framebuffer_state *old_state,
const struct pipe_framebuffer_state *new_state)
{
struct r300_texture *tex;
- unsigned i, j, level;
-
- /* Reset tiling flags for old surfaces to default values. */
- for (i = 0; i < old_state->nr_cbufs; i++) {
- for (j = 0; j < new_state->nr_cbufs; j++) {
- if (old_state->cbufs[i]->texture == new_state->cbufs[j]->texture) {
- break;
- }
- }
- /* If not binding the surface again... */
- if (j != new_state->nr_cbufs) {
- continue;
- }
-
- tex = r300_texture(old_state->cbufs[i]->texture);
-
- if (tex) {
- r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[0],
- tex->microtile,
- tex->macrotile);
- }
- }
- if (old_state->zsbuf &&
- (!new_state->zsbuf ||
- old_state->zsbuf->texture != new_state->zsbuf->texture)) {
- tex = r300_texture(old_state->zsbuf->texture);
-
- if (tex) {
- r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[0],
- tex->microtile,
- tex->macrotile);
- }
- }
+ unsigned i, level;
/* Set tiling flags for new surfaces. */
for (i = 0; i < new_state->nr_cbufs; i++) {
@@ -585,7 +551,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300,
level = new_state->cbufs[i]->level;
r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[level],
+ tex->pitch[0],
tex->microtile,
tex->mip_macrotile[level]);
}
@@ -594,7 +560,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300,
level = new_state->zsbuf->level;
r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[level],
+ tex->pitch[0],
tex->microtile,
tex->mip_macrotile[level]);
}
@@ -644,7 +610,8 @@ static void
r300->dsa_state.dirty = TRUE;
}
- r300_fb_update_tiling_flags(r300, r300->fb_state.state, state);
+ /* The tiling flags are dependent on the surface miplevel, unfortunately. */
+ r300_fb_set_tiling_flags(r300, r300->fb_state.state, state);
memcpy(r300->fb_state.state, state, sizeof(struct pipe_framebuffer_state));
@@ -719,10 +686,6 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader)
r300_mark_fs_code_dirty(r300);
r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */
-
- if (r300->vs_state.state && r300_vertex_shader_setup_wpos(r300)) {
- r300->vap_output_state.dirty = TRUE;
- }
}
/* Delete fragment shader state. */
@@ -853,11 +816,8 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
rs->clip_rule = state->scissor ? 0xAAAA : 0xFFFF;
- /* XXX Disable point sprites until we know what's wrong with them. */
- rs->rs.sprite_coord_enable = 0;
-
/* Point sprites */
- if (rs->rs.sprite_coord_enable) {
+ if (state->sprite_coord_enable) {
rs->stuffing_enable = R300_GB_POINT_STUFF_ENABLE;
for (i = 0; i < 8; i++) {
if (state->sprite_coord_enable & (1 << i))
@@ -1357,7 +1317,7 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
/* XXX Shouldn't we align the format? */
fprintf(stderr, "r300_create_vertex_elements_state: "
"Unaligned format %s:%i isn't supported\n",
- util_format_name(*format), size);
+ util_format_short_name(*format), size);
assert(0);
abort();
}
@@ -1428,14 +1388,6 @@ static void r300_bind_vs_state(struct pipe_context* pipe, void* shader)
}
r300->vs_state.state = vs;
- // VS output mapping for HWTCL or stream mapping for SWTCL to the RS block
- if (r300->fs.state) {
- r300_vertex_shader_setup_wpos(r300);
- }
- memcpy(r300->vap_output_state.state, &vs->vap_out,
- sizeof(struct r300_vap_output_state));
- r300->vap_output_state.dirty = TRUE;
-
/* The majority of the RS block bits is dependent on the vertex shader. */
r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index ccc4b583a6a..e3adace0faa 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -115,12 +115,11 @@ static void r300_draw_emit_all_attribs(struct r300_context* r300)
static void r300_swtcl_vertex_psc(struct r300_context *r300)
{
struct r300_vertex_stream_state *vstream = r300->vertex_stream_state.state;
- struct r300_vertex_shader* vs = r300->vs_state.state;
- struct vertex_info* vinfo = &r300->vertex_info;
+ struct vertex_info* vinfo = &r300->vertex_info;
uint16_t type, swizzle;
enum pipe_format format;
unsigned i, attrib_count;
- int* vs_output_tab = vs->stream_loc_notcl;
+ int* vs_output_tab = r300->stream_loc_notcl;
/* XXX hax */
memset(vstream, 0, sizeof(struct r300_vertex_stream_state));
@@ -269,21 +268,29 @@ static void r500_rs_tex_write(struct r300_rs_block* rs, int id, int fp_offset)
/* Set up the RS block.
*
- * This is the part of the chipset that actually does the rasterization
- * of vertices into fragments. This is also the part of the chipset that
- * locks up if any part of it is even slightly wrong. */
-static void r300_update_rs_block(struct r300_context* r300,
- struct r300_shader_semantics* vs_outputs,
- struct r300_shader_semantics* fs_inputs)
+ * This is the part of the chipset that is responsible for linking vertex
+ * and fragment shaders and stuffed texture coordinates.
+ *
+ * The rasterizer reads data from VAP, which produces vertex shader outputs,
+ * and GA, which produces stuffed texture coordinates. VAP outputs have
+ * precedence over GA. All outputs must be rasterized otherwise it locks up.
+ * If there are more outputs rasterized than is set in VAP/GA, it locks up
+ * too. The funky part is that this info has been pretty much obtained by trial
+ * and error. */
+static void r300_update_rs_block(struct r300_context *r300)
{
- struct r300_rs_block rs = { { 0 } };
- int i, col_count = 0, tex_count = 0, fp_offset = 0, count;
+ struct r300_vertex_shader *vs = r300->vs_state.state;
+ struct r300_shader_semantics *vs_outputs = &vs->outputs;
+ struct r300_shader_semantics *fs_inputs = &r300_fs(r300)->shader->inputs;
+ struct r300_rs_block rs = {0};
+ int i, col_count = 0, tex_count = 0, fp_offset = 0, count, loc = 0;
void (*rX00_rs_col)(struct r300_rs_block*, int, int, enum r300_rs_swizzle);
void (*rX00_rs_col_write)(struct r300_rs_block*, int, int);
void (*rX00_rs_tex)(struct r300_rs_block*, int, int, enum r300_rs_swizzle);
void (*rX00_rs_tex_write)(struct r300_rs_block*, int, int);
boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED ||
vs_outputs->bcolor[1] != ATTR_UNUSED;
+ int *stream_loc_notcl = r300->stream_loc_notcl;
if (r300->screen->caps.is_r500) {
rX00_rs_col = r500_rs_col;
@@ -297,15 +304,31 @@ static void r300_update_rs_block(struct r300_context* r300,
rX00_rs_tex_write = r300_rs_tex_write;
}
- /* Rasterize colors. */
+ /* The position is always present in VAP. */
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS;
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT;
+ stream_loc_notcl[loc++] = 0;
+
+ /* Set up the point size in VAP. */
+ if (vs_outputs->psize != ATTR_UNUSED) {
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT;
+ stream_loc_notcl[loc++] = 1;
+ }
+
+ /* Set up and rasterize colors. */
for (i = 0; i < ATTR_COLOR_COUNT; i++) {
if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used ||
vs_outputs->color[1] != ATTR_UNUSED) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
+ /* Set up the color in VAP. */
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
+ rs.vap_out_vtx_fmt[0] |=
+ R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i;
+ stream_loc_notcl[loc++] = 2 + i;
+
+ /* Rasterize it. */
rX00_rs_col(&rs, col_count, col_count, SWIZ_XYZW);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->color[i] != ATTR_UNUSED) {
rX00_rs_col_write(&rs, col_count, fp_offset);
fp_offset++;
@@ -328,17 +351,33 @@ static void r300_update_rs_block(struct r300_context* r300,
}
}
+ /* Set up back-face colors. The rasterizer will do the color selection
+ * automatically. */
+ if (any_bcolor_used) {
+ for (i = 0; i < ATTR_COLOR_COUNT; i++) {
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i);
+ stream_loc_notcl[loc++] = 4 + i;
+ }
+ }
+
/* Rasterize texture coordinates. */
- for (i = 0; i < ATTR_GENERIC_COUNT; i++) {
+ for (i = 0; i < ATTR_GENERIC_COUNT && tex_count < 8; i++) {
bool sprite_coord = !!(r300->sprite_coord_enable & (1 << i));
if (vs_outputs->generic[i] != ATTR_UNUSED || sprite_coord) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
+ if (!sprite_coord) {
+ /* Set up the texture coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+ }
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count,
sprite_coord ? SWIZ_XY01 : SWIZ_XYZW);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->generic[i] != ATTR_UNUSED) {
rX00_rs_tex_write(&rs, tex_count, fp_offset);
fp_offset++;
@@ -365,12 +404,16 @@ static void r300_update_rs_block(struct r300_context* r300,
}
/* Rasterize fog coordinates. */
- if (vs_outputs->fog != ATTR_UNUSED) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
+ if (vs_outputs->fog != ATTR_UNUSED && tex_count < 8) {
+ /* Set up the fog coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_X001);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->fog != ATTR_UNUSED) {
rX00_rs_tex_write(&rs, tex_count, fp_offset);
fp_offset++;
@@ -391,9 +434,17 @@ static void r300_update_rs_block(struct r300_context* r300,
}
/* Rasterize WPOS. */
- /* If the FS doesn't need it, it's not written by the VS. */
- if (vs_outputs->wpos != ATTR_UNUSED && fs_inputs->wpos != ATTR_UNUSED) {
+ /* Don't set it in VAP if the FS doesn't need it. */
+ if (fs_inputs->wpos != ATTR_UNUSED && tex_count < 8) {
+ /* Set up the WPOS coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_XYZW);
+
+ /* Write it to the FS input register. */
rX00_rs_tex_write(&rs, tex_count, fp_offset);
DBG(r300, DBG_RS, "r300: Rasterized WPOS written to FS.\n");
@@ -402,6 +453,11 @@ static void r300_update_rs_block(struct r300_context* r300,
tex_count++;
}
+ /* Invalidate the rest of the no-TCL (GA) stream locations. */
+ for (; loc < 16;) {
+ stream_loc_notcl[loc++] = -1;
+ }
+
/* Rasterize at least one color, or bad things happen. */
if (col_count == 0 && tex_count == 0) {
rX00_rs_col(&rs, 0, 0, SWIZ_0001);
@@ -422,18 +478,10 @@ static void r300_update_rs_block(struct r300_context* r300,
/* Now, after all that, see if we actually need to update the state. */
if (memcmp(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block))) {
memcpy(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block));
- r300->rs_block_state.size = 5 + count*2;
+ r300->rs_block_state.size = 11 + count*2;
}
}
-/* Update the shader-dependant states. */
-static void r300_update_derived_shader_state(struct r300_context* r300)
-{
- struct r300_vertex_shader* vs = r300->vs_state.state;
-
- r300_update_rs_block(r300, &vs->outputs, &r300_fs(r300)->shader->inputs);
-}
-
static void r300_merge_textures_and_samplers(struct r300_context* r300)
{
struct r300_textures_state *state =
@@ -529,7 +577,7 @@ void r300_update_derived_state(struct r300_context* r300)
}
if (r300->rs_block_state.dirty) {
- r300_update_derived_shader_state(r300);
+ r300_update_rs_block(r300);
}
if (r300->draw) {
diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h
index fcbdb91b67e..715601042fa 100644
--- a/src/gallium/drivers/r300/r300_state_inlines.h
+++ b/src/gallium/drivers/r300/r300_state_inlines.h
@@ -371,7 +371,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
desc = util_format_description(format);
if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
- fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_name(format),
+ fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_short_name(format),
__FUNCTION__, __LINE__);
assert(0);
abort();
@@ -394,7 +394,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
break;
default:
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
- util_format_name(format), __FUNCTION__, __LINE__);
+ util_format_short_name(format), __FUNCTION__, __LINE__);
assert(0);
abort();
}
@@ -416,7 +416,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
break;
default:
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
- util_format_name(format), __FUNCTION__, __LINE__);
+ util_format_short_name(format), __FUNCTION__, __LINE__);
fprintf(stderr, "r300: desc->channel[0].size == %d\n",
desc->channel[0].size);
assert(0);
@@ -425,7 +425,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
break;
default:
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
- util_format_name(format), __FUNCTION__, __LINE__);
+ util_format_short_name(format), __FUNCTION__, __LINE__);
assert(0);
abort();
}
@@ -449,7 +449,7 @@ r300_translate_vertex_data_swizzle(enum pipe_format format) {
if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) {
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
- util_format_name(format), __FUNCTION__, __LINE__);
+ util_format_short_name(format), __FUNCTION__, __LINE__);
return 0;
}
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index 69e6a124458..d6f629cf9c6 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -46,18 +46,6 @@ static const unsigned microblock_table[5][3][2] = {
{{ 2, 1}, {0, 0}, {0, 0}} /* 128 bits per pixel */
};
-/* Return true for non-compressed and non-YUV formats. */
-static boolean r300_format_is_plain(enum pipe_format format)
-{
- const struct util_format_description *desc = util_format_description(format);
-
- if (!format) {
- return FALSE;
- }
-
- return desc->layout == UTIL_FORMAT_LAYOUT_PLAIN;
-}
-
/* Translate a pipe_format into a useful texture format for sampling.
*
* Some special formats are translated directly using R300_EASY_TX_FORMAT,
@@ -585,9 +573,6 @@ static void r300_texture_setup_immutable_state(struct r300_screen* screen,
f->tile_config = R300_TXO_MACRO_TILE(tex->macrotile) |
R300_TXO_MICRO_TILE(tex->microtile);
-
- SCREEN_DBG(screen, DBG_TEX, "r300: Set texture state (%dx%d, %d levels)\n",
- pt->width0, pt->height0, pt->last_level);
}
static void r300_texture_setup_fb_state(struct r300_screen* screen,
@@ -622,8 +607,8 @@ void r300_texture_reinterpret_format(struct pipe_screen *screen,
{
struct r300_screen *r300screen = r300_screen(screen);
- SCREEN_DBG(r300screen, DBG_TEX, "r300: Reinterpreting format: %s -> %s\n",
- util_format_name(tex->format), util_format_name(new_format));
+ SCREEN_DBG(r300screen, DBG_TEX, "r300: texture_reinterpret_format: %s -> %s\n",
+ util_format_short_name(tex->format), util_format_short_name(new_format));
tex->format = new_format;
@@ -714,7 +699,7 @@ unsigned r300_texture_get_stride(struct r300_screen* screen,
width = u_minify(tex->b.b.width0, level);
- if (r300_format_is_plain(tex->b.b.format)) {
+ if (util_format_is_plain(tex->b.b.format)) {
tile_width = r300_texture_get_tile_size(tex, TILE_WIDTH,
tex->mip_macrotile[level]);
width = align(width, tile_width);
@@ -732,7 +717,7 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex,
height = u_minify(tex->b.b.height0, level);
- if (r300_format_is_plain(tex->b.b.format)) {
+ if (util_format_is_plain(tex->b.b.format)) {
tile_height = r300_texture_get_tile_size(tex, TILE_HEIGHT,
tex->mip_macrotile[level]);
height = align(height, tile_height);
@@ -774,8 +759,8 @@ static void r300_setup_miptree(struct r300_screen* screen,
unsigned stride, size, layer_size, nblocksy, i;
boolean rv350_mode = screen->caps.is_rv350;
- SCREEN_DBG(screen, DBG_TEX, "r300: Making miptree for texture, format %s\n",
- util_format_name(base->format));
+ SCREEN_DBG(screen, DBG_TEXALLOC, "r300: Making miptree for texture, format %s\n",
+ util_format_short_name(base->format));
for (i = 0; i <= base->last_level; i++) {
/* Let's see if this miplevel can be macrotiled. */
@@ -801,7 +786,7 @@ static void r300_setup_miptree(struct r300_screen* screen,
tex->hwpitch[i] =
tex->pitch[i] * util_format_get_blockwidth(base->format);
- SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d "
+ SCREEN_DBG(screen, DBG_TEXALLOC, "r300: Texture miptree: Level %d "
"(%dx%dx%d px, pitch %d bytes) %d bytes total, macrotiled %s\n",
i, u_minify(base->width0, i), u_minify(base->height0, i),
u_minify(base->depth0, i), stride, tex->size,
@@ -825,7 +810,7 @@ static void r300_setup_tiling(struct pipe_screen *screen,
boolean is_zb = util_format_is_depth_or_stencil(format);
boolean dbg_no_tiling = SCREEN_DBG_ON(r300_screen(screen), DBG_NO_TILING);
- if (!r300_format_is_plain(format)) {
+ if (!util_format_is_plain(format)) {
return;
}
@@ -927,6 +912,17 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen,
return NULL;
}
+ /* Refuse to create a texture with size 0. */
+ if (!base->width0 ||
+ (!base->height0 && (base->target == PIPE_TEXTURE_2D ||
+ base->target == PIPE_TEXTURE_CUBE)) ||
+ (!base->depth0 && base->target == PIPE_TEXTURE_3D)) {
+ fprintf(stderr, "r300: texture_create: "
+ "Got invalid texture dimensions: %ix%ix%i\n",
+ base->width0, base->height0, base->depth0);
+ return NULL;
+ }
+
tex->b.b = *base;
tex->b.vtbl = &r300_texture_vtbl;
pipe_reference_init(&tex->b.b.reference, 1);
@@ -942,6 +938,15 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen,
r300_texture_setup_immutable_state(rscreen, tex);
r300_texture_setup_fb_state(rscreen, tex);
+ SCREEN_DBG(rscreen, DBG_TEX,
+ "r300: texture_create: Macro: %s, Micro: %s, Pitch: %i, "
+ "Dim: %ix%ix%i, LastLevel: %i, Format: %s\n",
+ tex->macrotile ? "YES" : " NO",
+ tex->microtile ? "YES" : " NO",
+ tex->hwpitch[0],
+ base->width0, base->height0, base->depth0, base->last_level,
+ util_format_short_name(base->format));
+
tex->buffer = rws->buffer_create(rws, 2048,
PIPE_BIND_SAMPLER_VIEW, /* XXX */
tex->size);
@@ -1039,6 +1044,14 @@ r300_texture_from_handle(struct pipe_screen* screen,
rws->buffer_get_tiling(rws, buffer, &tex->microtile, &tex->macrotile);
r300_setup_flags(tex);
+ SCREEN_DBG(rscreen, DBG_TEX,
+ "r300: texture_from_handle: Macro: %s, Micro: %s, "
+ "Pitch: % 4i, Dim: %ix%i, Format: %s\n",
+ tex->macrotile ? "YES" : " NO",
+ tex->microtile ? "YES" : " NO",
+ stride / util_format_get_blocksize(base->format),
+ base->width0, base->height0,
+ util_format_short_name(base->format));
/* Enforce microtiled zbuffer. */
override_zb_flags = util_format_is_depth_or_stencil(base->format) &&
diff --git a/src/gallium/drivers/r300/r300_vs.c b/src/gallium/drivers/r300/r300_vs.c
index bfab9c3b014..f3186431e1d 100644
--- a/src/gallium/drivers/r300/r300_vs.c
+++ b/src/gallium/drivers/r300/r300_vs.c
@@ -22,7 +22,6 @@
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "r300_vs.h"
-#include "r300_fs.h"
#include "r300_context.h"
#include "r300_screen.h"
@@ -94,94 +93,6 @@ static void r300_shader_read_vs_outputs(
vs_outputs->wpos = i;
}
-/* This function sets up:
- * - VAP mapping, which maps VS registers to output semantics and
- * at the same time it indicates which attributes are enabled and should
- * be rasterized.
- * - Stream mapping to VS outputs if TCL is not present. */
-static void r300_init_vs_output_mapping(struct r300_vertex_shader* vs)
-{
- struct r300_shader_semantics* vs_outputs = &vs->outputs;
- struct r300_vap_output_state *vap_out = &vs->vap_out;
- int *stream_loc = vs->stream_loc_notcl;
- int i, gen_count, tabi = 0;
- boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED ||
- vs_outputs->bcolor[1] != ATTR_UNUSED;
-
- vap_out->vap_vtx_state_cntl = 0x5555; /* XXX this is classic Mesa bonghits */
-
- /* Position. */
- if (vs_outputs->pos != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT;
-
- stream_loc[tabi++] = 0;
- } else {
- assert(0);
- }
-
- /* Point size. */
- if (vs_outputs->psize != ATTR_UNUSED) {
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT;
-
- stream_loc[tabi++] = 1;
- }
-
- /* Colors. */
- for (i = 0; i < ATTR_COLOR_COUNT; i++) {
- if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used ||
- vs_outputs->color[1] != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i;
-
- stream_loc[tabi++] = 2 + i;
- }
- }
-
- /* Back-face colors. */
- if (any_bcolor_used) {
- for (i = 0; i < ATTR_COLOR_COUNT; i++) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i);
-
- stream_loc[tabi++] = 4 + i;
- }
- }
-
- /* Texture coordinates. */
- gen_count = 0;
- for (i = 0; i < ATTR_GENERIC_COUNT && gen_count < 8; i++) {
- if (vs_outputs->generic[i] != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count);
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count));
-
- stream_loc[tabi++] = 6 + gen_count;
- gen_count++;
- }
- }
-
- /* Fog coordinates. */
- if (gen_count < 8 && vs_outputs->fog != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count);
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count));
-
- stream_loc[tabi++] = 6 + gen_count;
- gen_count++;
- }
-
- /* WPOS. */
- if (gen_count < 8) {
- vs->wpos_tex_output = gen_count;
- stream_loc[tabi++] = 6 + gen_count;
- } else {
- vs_outputs->wpos = ATTR_UNUSED;
- }
-
- for (; tabi < 16;) {
- stream_loc[tabi++] = -1;
- }
-}
-
static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c)
{
struct r300_vertex_shader * vs = c->UserData;
@@ -246,9 +157,7 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c)
}
/* WPOS. */
- if (outputs->wpos != ATTR_UNUSED) {
- c->code->outputs[outputs->wpos] = reg++;
- }
+ c->code->outputs[outputs->wpos] = reg++;
}
static void r300_dummy_vertex_shader(
@@ -286,7 +195,6 @@ void r300_translate_vertex_shader(struct r300_context* r300,
tgsi_scan_shader(tokens, &vs->info);
r300_shader_read_vs_outputs(&vs->info, &vs->outputs);
- r300_init_vs_output_mapping(vs);
/* Setup the compiler */
rc_init(&compiler.Base);
@@ -307,16 +215,11 @@ void r300_translate_vertex_shader(struct r300_context* r300,
r300_tgsi_to_rc(&ttr, tokens);
- compiler.RequiredOutputs =
- ~(~0 << (vs->info.num_outputs +
- (vs->outputs.wpos != ATTR_UNUSED ? 1 : 0)));
-
+ compiler.RequiredOutputs = ~(~0 << (vs->info.num_outputs + 1));
compiler.SetHwInputOutput = &set_vertex_inputs_outputs;
/* Insert the WPOS output. */
- if (vs->outputs.wpos != ATTR_UNUSED) {
- rc_copy_output(&compiler.Base, 0, vs->outputs.wpos);
- }
+ rc_copy_output(&compiler.Base, 0, vs->outputs.wpos);
/* Invoke the compiler */
r3xx_compile_vertex_program(&compiler);
@@ -343,32 +246,3 @@ void r300_translate_vertex_shader(struct r300_context* r300,
/* And, finally... */
rc_destroy(&compiler.Base);
}
-
-boolean r300_vertex_shader_setup_wpos(struct r300_context* r300)
-{
- struct r300_vertex_shader* vs = r300->vs_state.state;
- struct r300_vap_output_state *vap_out = &vs->vap_out;
- int tex_output = vs->wpos_tex_output;
- uint32_t tex_fmt = R300_INPUT_CNTL_TC0 << tex_output;
-
- if (vs->outputs.wpos == ATTR_UNUSED) {
- return FALSE;
- }
-
- if (r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) {
- /* Enable WPOS in VAP. */
- if (!(vap_out->vap_vsm_vtx_assm & tex_fmt)) {
- vap_out->vap_vsm_vtx_assm |= tex_fmt;
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * tex_output));
- return TRUE;
- }
- } else {
- /* Disable WPOS in VAP. */
- if (vap_out->vap_vsm_vtx_assm & tex_fmt) {
- vap_out->vap_vsm_vtx_assm &= ~tex_fmt;
- vap_out->vap_out_vtx_fmt[1] &= ~(4 << (3 * tex_output));
- return TRUE;
- }
- }
- return FALSE;
-}
diff --git a/src/gallium/drivers/r300/r300_vs.h b/src/gallium/drivers/r300/r300_vs.h
index 56bcc3b70b8..57b3fbca0bb 100644
--- a/src/gallium/drivers/r300/r300_vs.h
+++ b/src/gallium/drivers/r300/r300_vs.h
@@ -39,7 +39,6 @@ struct r300_vertex_shader {
struct tgsi_shader_info info;
struct r300_shader_semantics outputs;
- struct r300_vap_output_state vap_out;
/* Whether the shader was replaced by a dummy one due to a shader
* compilation failure. */
@@ -49,12 +48,6 @@ struct r300_vertex_shader {
unsigned externals_count;
unsigned immediates_count;
- /* Stream locations for SWTCL or if TCL is bypassed. */
- int stream_loc_notcl[16];
-
- /* Output stream location for WPOS. */
- int wpos_tex_output;
-
/* HWTCL-specific. */
/* Machine code (if translated) */
struct r300_vertex_program_code code;
@@ -67,7 +60,4 @@ void r300_translate_vertex_shader(struct r300_context* r300,
struct r300_vertex_shader* vs,
const struct tgsi_token *tokens);
-/* Return TRUE if VAP (hwfmt) needs to be re-emitted. */
-boolean r300_vertex_shader_setup_wpos(struct r300_context* r300);
-
#endif /* R300_VS_H */
diff --git a/src/gallium/drivers/softpipe/sp_quad_blend.c b/src/gallium/drivers/softpipe/sp_quad_blend.c
index ead489393ef..00187febf0c 100644
--- a/src/gallium/drivers/softpipe/sp_quad_blend.c
+++ b/src/gallium/drivers/softpipe/sp_quad_blend.c
@@ -33,6 +33,7 @@
#include "pipe/p_defines.h"
#include "util/u_math.h"
#include "util/u_memory.h"
+#include "util/u_format.h"
#include "sp_context.h"
#include "sp_quad.h"
#include "sp_tile_cache.h"
@@ -224,7 +225,8 @@ static void
blend_quad(struct quad_stage *qs,
float (*quadColor)[4],
float (*dest)[4],
- unsigned cbuf)
+ unsigned cbuf,
+ boolean has_dst_alpha)
{
static const float zero[4] = { 0, 0, 0, 0 };
static const float one[4] = { 1, 1, 1, 1 };
@@ -259,24 +261,34 @@ blend_quad(struct quad_stage *qs,
VEC4_MUL(source[2], quadColor[2], dest[2]); /* B */
break;
case PIPE_BLENDFACTOR_DST_ALPHA:
- {
- const float *alpha = dest[3];
- VEC4_MUL(source[0], quadColor[0], alpha); /* R */
- VEC4_MUL(source[1], quadColor[1], alpha); /* G */
- VEC4_MUL(source[2], quadColor[2], alpha); /* B */
- }
- break;
+ if (has_dst_alpha) {
+ const float *alpha = dest[3];
+ VEC4_MUL(source[0], quadColor[0], alpha); /* R */
+ VEC4_MUL(source[1], quadColor[1], alpha); /* G */
+ VEC4_MUL(source[2], quadColor[2], alpha); /* B */
+ }
+ else {
+ VEC4_COPY(source[0], quadColor[0]); /* R */
+ VEC4_COPY(source[1], quadColor[1]); /* G */
+ VEC4_COPY(source[2], quadColor[2]); /* B */
+ }
+ break;
case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
- {
- const float *alpha = quadColor[3];
- float diff[4], temp[4];
- VEC4_SUB(diff, one, dest[3]);
- VEC4_MIN(temp, alpha, diff);
- VEC4_MUL(source[0], quadColor[0], temp); /* R */
- VEC4_MUL(source[1], quadColor[1], temp); /* G */
- VEC4_MUL(source[2], quadColor[2], temp); /* B */
- }
- break;
+ if (has_dst_alpha) {
+ const float *alpha = quadColor[3];
+ float diff[4], temp[4];
+ VEC4_SUB(diff, one, dest[3]);
+ VEC4_MIN(temp, alpha, diff);
+ VEC4_MUL(source[0], quadColor[0], temp); /* R */
+ VEC4_MUL(source[1], quadColor[1], temp); /* G */
+ VEC4_MUL(source[2], quadColor[2], temp); /* B */
+ }
+ else {
+ VEC4_COPY(source[0], zero); /* R */
+ VEC4_COPY(source[1], zero); /* G */
+ VEC4_COPY(source[2], zero); /* B */
+ }
+ break;
case PIPE_BLENDFACTOR_CONST_COLOR:
{
float comp[4];
@@ -329,14 +341,19 @@ blend_quad(struct quad_stage *qs,
}
break;
case PIPE_BLENDFACTOR_INV_DST_ALPHA:
- {
- float inv_alpha[4];
- VEC4_SUB(inv_alpha, one, dest[3]);
- VEC4_MUL(source[0], quadColor[0], inv_alpha); /* R */
- VEC4_MUL(source[1], quadColor[1], inv_alpha); /* G */
- VEC4_MUL(source[2], quadColor[2], inv_alpha); /* B */
- }
- break;
+ if (has_dst_alpha) {
+ float inv_alpha[4];
+ VEC4_SUB(inv_alpha, one, dest[3]);
+ VEC4_MUL(source[0], quadColor[0], inv_alpha); /* R */
+ VEC4_MUL(source[1], quadColor[1], inv_alpha); /* G */
+ VEC4_MUL(source[2], quadColor[2], inv_alpha); /* B */
+ }
+ else {
+ VEC4_COPY(source[0], zero); /* R */
+ VEC4_COPY(source[1], zero); /* G */
+ VEC4_COPY(source[2], zero); /* B */
+ }
+ break;
case PIPE_BLENDFACTOR_INV_DST_COLOR:
{
float inv_comp[4];
@@ -399,7 +416,10 @@ blend_quad(struct quad_stage *qs,
case PIPE_BLENDFACTOR_DST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_DST_ALPHA:
- VEC4_MUL(source[3], quadColor[3], dest[3]); /* A */
+ if (has_dst_alpha)
+ VEC4_MUL(source[3], quadColor[3], dest[3]); /* A */
+ else
+ VEC4_COPY(source[3], quadColor[3]); /* A */
break;
case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
/* multiply alpha by 1.0 */
@@ -429,12 +449,15 @@ blend_quad(struct quad_stage *qs,
case PIPE_BLENDFACTOR_INV_DST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_INV_DST_ALPHA:
- {
- float inv_alpha[4];
- VEC4_SUB(inv_alpha, one, dest[3]);
- VEC4_MUL(source[3], quadColor[3], inv_alpha); /* A */
- }
- break;
+ if (has_dst_alpha) {
+ float inv_alpha[4];
+ VEC4_SUB(inv_alpha, one, dest[3]);
+ VEC4_MUL(source[3], quadColor[3], inv_alpha); /* A */
+ }
+ else {
+ VEC4_COPY(source[3], zero); /* A */
+ }
+ break;
case PIPE_BLENDFACTOR_INV_CONST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
@@ -468,9 +491,14 @@ blend_quad(struct quad_stage *qs,
VEC4_MUL(dest[2], dest[2], quadColor[3]); /* B * A */
break;
case PIPE_BLENDFACTOR_DST_ALPHA:
- VEC4_MUL(dest[0], dest[0], dest[3]); /* R * A */
- VEC4_MUL(dest[1], dest[1], dest[3]); /* G * A */
- VEC4_MUL(dest[2], dest[2], dest[3]); /* B * A */
+ if (has_dst_alpha) {
+ VEC4_MUL(dest[0], dest[0], dest[3]); /* R * A */
+ VEC4_MUL(dest[1], dest[1], dest[3]); /* G * A */
+ VEC4_MUL(dest[2], dest[2], dest[3]); /* B * A */
+ }
+ else {
+ /* dest = dest * 1 NO-OP, leave dest as-is */
+ }
break;
case PIPE_BLENDFACTOR_DST_COLOR:
VEC4_MUL(dest[0], dest[0], dest[0]); /* R */
@@ -478,15 +506,20 @@ blend_quad(struct quad_stage *qs,
VEC4_MUL(dest[2], dest[2], dest[2]); /* B */
break;
case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
- {
- const float *alpha = quadColor[3];
- float diff[4], temp[4];
- VEC4_SUB(diff, one, dest[3]);
- VEC4_MIN(temp, alpha, diff);
- VEC4_MUL(dest[0], quadColor[0], temp); /* R */
- VEC4_MUL(dest[1], quadColor[1], temp); /* G */
- VEC4_MUL(dest[2], quadColor[2], temp); /* B */
- }
+ if (has_dst_alpha) {
+ const float *alpha = quadColor[3];
+ float diff[4], temp[4];
+ VEC4_SUB(diff, one, dest[3]);
+ VEC4_MIN(temp, alpha, diff);
+ VEC4_MUL(dest[0], quadColor[0], temp); /* R */
+ VEC4_MUL(dest[1], quadColor[1], temp); /* G */
+ VEC4_MUL(dest[2], quadColor[2], temp); /* B */
+ }
+ else {
+ VEC4_COPY(dest[0], zero); /* R */
+ VEC4_COPY(dest[1], zero); /* G */
+ VEC4_COPY(dest[2], zero); /* B */
+ }
break;
case PIPE_BLENDFACTOR_CONST_COLOR:
{
@@ -539,13 +572,18 @@ blend_quad(struct quad_stage *qs,
}
break;
case PIPE_BLENDFACTOR_INV_DST_ALPHA:
- {
- float inv_comp[4];
- VEC4_SUB(inv_comp, one, dest[3]); /* A */
- VEC4_MUL(dest[0], inv_comp, dest[0]); /* R */
- VEC4_MUL(dest[1], inv_comp, dest[1]); /* G */
- VEC4_MUL(dest[2], inv_comp, dest[2]); /* B */
- }
+ if (has_dst_alpha) {
+ float inv_comp[4];
+ VEC4_SUB(inv_comp, one, dest[3]); /* A */
+ VEC4_MUL(dest[0], inv_comp, dest[0]); /* R */
+ VEC4_MUL(dest[1], inv_comp, dest[1]); /* G */
+ VEC4_MUL(dest[2], inv_comp, dest[2]); /* B */
+ }
+ else {
+ VEC4_COPY(dest[0], zero); /* R */
+ VEC4_COPY(dest[1], zero); /* G */
+ VEC4_COPY(dest[2], zero); /* B */
+ }
break;
case PIPE_BLENDFACTOR_INV_DST_COLOR:
{
@@ -605,7 +643,12 @@ blend_quad(struct quad_stage *qs,
case PIPE_BLENDFACTOR_DST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_DST_ALPHA:
- VEC4_MUL(dest[3], dest[3], dest[3]); /* A */
+ if (has_dst_alpha) {
+ VEC4_MUL(dest[3], dest[3], dest[3]); /* A */
+ }
+ else {
+ /* dest = dest * 1 NO-OP, leave dest as-is */
+ }
break;
case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
/* dest = dest * 1 NO-OP, leave dest as-is */
@@ -634,12 +677,15 @@ blend_quad(struct quad_stage *qs,
case PIPE_BLENDFACTOR_INV_DST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_INV_DST_ALPHA:
- {
- float inv_comp[4];
- VEC4_SUB(inv_comp, one, dest[3]); /* A */
- VEC4_MUL(dest[3], inv_comp, dest[3]); /* A */
- }
- break;
+ if (has_dst_alpha) {
+ float inv_comp[4];
+ VEC4_SUB(inv_comp, one, dest[3]); /* A */
+ VEC4_MUL(dest[3], inv_comp, dest[3]); /* A */
+ }
+ else {
+ VEC4_COPY(dest[3], zero); /* A */
+ }
+ break;
case PIPE_BLENDFACTOR_INV_CONST_COLOR:
/* fall-through */
case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
@@ -751,6 +797,8 @@ blend_fallback(struct quad_stage *qs,
= sp_get_cached_tile(softpipe->cbuf_cache[cbuf],
quads[0]->input.x0,
quads[0]->input.y0);
+ boolean has_dst_alpha
+ = util_format_has_alpha(softpipe->framebuffer.cbufs[cbuf]->format);
uint q, i, j;
for (q = 0; q < nr; q++) {
@@ -774,7 +822,7 @@ blend_fallback(struct quad_stage *qs,
logicop_quad( qs, quadColor, dest );
}
else if (blend->rt[blend_buf].blend_enable) {
- blend_quad( qs, quadColor, dest, cbuf );
+ blend_quad( qs, quadColor, dest, cbuf, has_dst_alpha );
}
if (blend->rt[blend_buf].colormask != 0xf)
diff --git a/src/gallium/drivers/softpipe/sp_surface.c b/src/gallium/drivers/softpipe/sp_surface.c
index b04c2a63ad6..32cab06004f 100644
--- a/src/gallium/drivers/softpipe/sp_surface.c
+++ b/src/gallium/drivers/softpipe/sp_surface.c
@@ -25,7 +25,7 @@
*
**************************************************************************/
-#include "util/u_rect.h"
+#include "util/u_surface.h"
#include "sp_context.h"
#include "sp_surface.h"
diff --git a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
index fbce9e042ba..b3e1c494069 100644
--- a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
+++ b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
@@ -115,6 +115,20 @@ sp_tex_tile_cache_validate_texture(struct softpipe_tex_tile_cache *tc)
}
}
+static boolean
+sp_tex_tile_is_compat_view(struct softpipe_tex_tile_cache *tc,
+ struct pipe_sampler_view *view)
+{
+ if (!view)
+ return FALSE;
+ return (tc->texture == view->texture &&
+ tc->format == view->format &&
+ tc->swizzle_r == view->swizzle_r &&
+ tc->swizzle_g == view->swizzle_g &&
+ tc->swizzle_b == view->swizzle_b &&
+ tc->swizzle_a == view->swizzle_a);
+}
+
/**
* Specify the sampler view to cache.
*/
@@ -127,7 +141,7 @@ sp_tex_tile_cache_set_sampler_view(struct softpipe_tex_tile_cache *tc,
assert(!tc->transfer);
- if (tc->texture != texture) {
+ if (!sp_tex_tile_is_compat_view(tc, view)) {
pipe_resource_reference(&tc->texture, texture);
if (tc->tex_trans) {
diff --git a/src/gallium/drivers/svga/svga_context.c b/src/gallium/drivers/svga/svga_context.c
index 3228a6d3d7f..75d8afb2ea8 100644
--- a/src/gallium/drivers/svga/svga_context.c
+++ b/src/gallium/drivers/svga/svga_context.c
@@ -194,6 +194,7 @@ void svga_context_flush( struct svga_context *svga,
struct pipe_fence_handle **pfence )
{
struct svga_screen *svgascreen = svga_screen(svga->pipe.screen);
+ struct pipe_fence_handle *fence = NULL;
svga->curr.nr_fbs = 0;
@@ -202,21 +203,26 @@ void svga_context_flush( struct svga_context *svga,
u_upload_flush(svga->upload_vb);
u_upload_flush(svga->upload_ib);
- /* Flush screen, to ensure that texture dma uploads are processed
+ /* Ensure that texture dma uploads are processed
* before submitting commands.
*/
- svga_screen_flush(svgascreen, NULL);
-
svga_context_flush_buffers(svga);
/* Flush pending commands to hardware:
*/
- svga->swc->flush(svga->swc, pfence);
+ svga->swc->flush(svga->swc, &fence);
+
+ svga_screen_cache_flush(svgascreen, fence);
if (SVGA_DEBUG & DEBUG_SYNC) {
- if (pfence && *pfence)
- svga->pipe.screen->fence_finish( svga->pipe.screen, *pfence, 0);
+ if (fence)
+ svga->pipe.screen->fence_finish( svga->pipe.screen, fence, 0);
}
+
+ if(pfence)
+ *pfence = fence;
+ else
+ svgascreen->sws->fence_reference(svgascreen->sws, &fence, NULL);
}
diff --git a/src/gallium/drivers/svga/svga_draw_arrays.c b/src/gallium/drivers/svga/svga_draw_arrays.c
index 005996d05d3..da33fae62f1 100644
--- a/src/gallium/drivers/svga/svga_draw_arrays.c
+++ b/src/gallium/drivers/svga/svga_draw_arrays.c
@@ -277,12 +277,13 @@ svga_hwtnl_draw_arrays( struct svga_hwtnl *hwtnl,
ret = svga_hwtnl_simple_draw_range_elements( hwtnl,
gen_buf,
gen_size,
+ start,
0,
count - 1,
gen_prim,
0,
- gen_nr,
- start );
+ gen_nr );
+
if (ret)
goto done;
diff --git a/src/gallium/drivers/svga/svga_pipe_query.c b/src/gallium/drivers/svga/svga_pipe_query.c
index 9c6f5858ba4..96fb4b8e536 100644
--- a/src/gallium/drivers/svga/svga_pipe_query.c
+++ b/src/gallium/drivers/svga/svga_pipe_query.c
@@ -68,6 +68,7 @@ static boolean svga_get_query_result(struct pipe_context *pipe,
static struct pipe_query *svga_create_query( struct pipe_context *pipe,
unsigned query_type )
{
+ struct svga_context *svga = svga_context( pipe );
struct svga_screen *svgascreen = svga_screen(pipe->screen);
struct svga_winsys_screen *sws = svgascreen->sws;
struct svga_query *sq;
@@ -80,7 +81,7 @@ static struct pipe_query *svga_create_query( struct pipe_context *pipe,
sq->type = SVGA3D_QUERYTYPE_OCCLUSION;
- sq->hwbuf = svga_winsys_buffer_create(svgascreen,
+ sq->hwbuf = svga_winsys_buffer_create(svga,
1,
SVGA_BUFFER_USAGE_PINNED,
sizeof *sq->queryResult);
diff --git a/src/gallium/drivers/svga/svga_resource_buffer.c b/src/gallium/drivers/svga/svga_resource_buffer.c
index 18eeff9c67e..198d4013328 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer.c
+++ b/src/gallium/drivers/svga/svga_resource_buffer.c
@@ -125,8 +125,6 @@ svga_buffer_map_range( struct pipe_screen *screen,
}
if(map) {
- pipe_mutex_lock(ss->swc_mutex);
-
++sbuf->map.count;
if (usage & PIPE_TRANSFER_WRITE) {
@@ -135,8 +133,6 @@ svga_buffer_map_range( struct pipe_screen *screen,
if (usage & PIPE_TRANSFER_FLUSH_EXPLICIT)
sbuf->map.flush_explicit = TRUE;
}
-
- pipe_mutex_unlock(ss->swc_mutex);
}
return map;
diff --git a/src/gallium/drivers/svga/svga_resource_buffer.h b/src/gallium/drivers/svga/svga_resource_buffer.h
index 55e7321184f..d3ec11bfd52 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer.h
+++ b/src/gallium/drivers/svga/svga_resource_buffer.h
@@ -238,7 +238,7 @@ void
svga_context_flush_buffers(struct svga_context *svga);
struct svga_winsys_buffer *
-svga_winsys_buffer_create(struct svga_screen *ss,
+svga_winsys_buffer_create(struct svga_context *svga,
unsigned alignment,
unsigned usage,
unsigned size);
diff --git a/src/gallium/drivers/svga/svga_resource_buffer_host.c b/src/gallium/drivers/svga/svga_resource_buffer_host.c
deleted file mode 100644
index 139597f9cb0..00000000000
--- a/src/gallium/drivers/svga/svga_resource_buffer_host.c
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
index acef60f4647..3de5216a949 100644
--- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c
+++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c
@@ -40,15 +40,21 @@
#include "svga_debug.h"
-/* Allocate a winsys_buffer (ie. DMA, aka GMR memory).
+/**
+ * Allocate a winsys_buffer (ie. DMA, aka GMR memory).
+ *
+ * It will flush and retry in case the first attempt to create a DMA buffer
+ * fails, so it should not be called from any function involved in flushing
+ * to avoid recursion.
*/
struct svga_winsys_buffer *
-svga_winsys_buffer_create( struct svga_screen *ss,
+svga_winsys_buffer_create( struct svga_context *svga,
unsigned alignment,
unsigned usage,
unsigned size )
{
- struct svga_winsys_screen *sws = ss->sws;
+ struct svga_screen *svgascreen = svga_screen(svga->pipe.screen);
+ struct svga_winsys_screen *sws = svgascreen->sws;
struct svga_winsys_buffer *buf;
/* Just try */
@@ -59,9 +65,8 @@ svga_winsys_buffer_create( struct svga_screen *ss,
size);
/* Try flushing all pending DMAs */
- svga_screen_flush(ss, NULL);
+ svga_context_flush(svga, NULL);
buf = sws->buffer_create(sws, alignment, usage, size);
-
}
return buf;
@@ -95,11 +100,12 @@ svga_buffer_create_hw_storage(struct svga_screen *ss,
assert(!sbuf->user);
if(!sbuf->hwbuf) {
+ struct svga_winsys_screen *sws = ss->sws;
unsigned alignment = 16;
unsigned usage = 0;
unsigned size = sbuf->b.b.width0;
- sbuf->hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size);
+ sbuf->hwbuf = sws->buffer_create(sws, alignment, usage, size);
if(!sbuf->hwbuf)
return PIPE_ERROR_OUT_OF_MEMORY;
@@ -476,12 +482,12 @@ svga_buffer_upload_piecewise(struct svga_screen *ss,
if (offset + size > range->end)
size = range->end - offset;
- hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size);
+ hwbuf = sws->buffer_create(sws, alignment, usage, size);
while (!hwbuf) {
size /= 2;
if (!size)
return PIPE_ERROR_OUT_OF_MEMORY;
- hwbuf = svga_winsys_buffer_create(ss, alignment, usage, size);
+ hwbuf = sws->buffer_create(sws, alignment, usage, size);
}
SVGA_DBG(DEBUG_DMA, " bytes %u - %u\n",
diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c
index f06b0323d8c..ff83c750aaf 100644
--- a/src/gallium/drivers/svga/svga_resource_texture.c
+++ b/src/gallium/drivers/svga/svga_resource_texture.c
@@ -163,12 +163,12 @@ svga_translate_format_render(enum pipe_format format)
static INLINE void
-svga_transfer_dma_band(struct svga_transfer *st,
+svga_transfer_dma_band(struct svga_context *svga,
+ struct svga_transfer *st,
SVGA3dTransferType transfer,
unsigned y, unsigned h, unsigned srcy)
{
struct svga_texture *texture = svga_texture(st->base.resource);
- struct svga_screen *screen = svga_screen(texture->b.b.screen);
SVGA3dCopyBox box;
enum pipe_error ret;
@@ -195,20 +195,19 @@ svga_transfer_dma_band(struct svga_transfer *st,
box.srcy = srcy;
box.srcz = 0;
- pipe_mutex_lock(screen->swc_mutex);
- ret = SVGA3D_SurfaceDMA(screen->swc, st, transfer, &box, 1);
+ ret = SVGA3D_SurfaceDMA(svga->swc, st, transfer, &box, 1);
if(ret != PIPE_OK) {
- screen->swc->flush(screen->swc, NULL);
- ret = SVGA3D_SurfaceDMA(screen->swc, st, transfer, &box, 1);
+ svga->swc->flush(svga->swc, NULL);
+ ret = SVGA3D_SurfaceDMA(svga->swc, st, transfer, &box, 1);
assert(ret == PIPE_OK);
}
- pipe_mutex_unlock(screen->swc_mutex);
}
static INLINE void
-svga_transfer_dma(struct svga_transfer *st,
- SVGA3dTransferType transfer)
+svga_transfer_dma(struct svga_context *svga,
+ struct svga_transfer *st,
+ SVGA3dTransferType transfer)
{
struct svga_texture *texture = svga_texture(st->base.resource);
struct svga_screen *screen = svga_screen(texture->b.b.screen);
@@ -223,10 +222,10 @@ svga_transfer_dma(struct svga_transfer *st,
if(!st->swbuf) {
/* Do the DMA transfer in a single go */
- svga_transfer_dma_band(st, transfer, st->base.box.y, st->base.box.height, 0);
+ svga_transfer_dma_band(svga, st, transfer, st->base.box.y, st->base.box.height, 0);
if(transfer == SVGA3D_READ_HOST_VRAM) {
- svga_screen_flush(screen, &fence);
+ svga_context_flush(svga, &fence);
sws->fence_finish(sws, fence, 0);
sws->fence_reference(sws, &fence, NULL);
}
@@ -256,7 +255,7 @@ svga_transfer_dma(struct svga_transfer *st,
/* Wait for the previous DMAs to complete */
/* TODO: keep one DMA (at half the size) in the background */
if(y) {
- svga_screen_flush(screen, &fence);
+ svga_context_flush(svga, &fence);
sws->fence_finish(sws, fence, 0);
sws->fence_reference(sws, &fence, NULL);
}
@@ -269,10 +268,10 @@ svga_transfer_dma(struct svga_transfer *st,
}
}
- svga_transfer_dma_band(st, transfer, y, h, srcy);
+ svga_transfer_dma_band(svga, st, transfer, y, h, srcy);
if(transfer == SVGA3D_READ_HOST_VRAM) {
- svga_screen_flush(screen, &fence);
+ svga_context_flush(svga, &fence);
sws->fence_finish(sws, fence, 0);
hw = sws->buffer_map(sws, st->hwbuf, PIPE_TRANSFER_READ);
@@ -342,6 +341,7 @@ svga_texture_get_transfer(struct pipe_context *pipe,
unsigned usage,
const struct pipe_box *box)
{
+ struct svga_context *svga = svga_context(pipe);
struct svga_screen *ss = svga_screen(pipe->screen);
struct svga_winsys_screen *sws = ss->sws;
struct svga_transfer *st;
@@ -365,12 +365,12 @@ svga_texture_get_transfer(struct pipe_context *pipe,
st->hw_nblocksy = nblocksy;
- st->hwbuf = svga_winsys_buffer_create(ss,
+ st->hwbuf = svga_winsys_buffer_create(svga,
1,
0,
st->hw_nblocksy*st->base.stride);
while(!st->hwbuf && (st->hw_nblocksy /= 2)) {
- st->hwbuf = svga_winsys_buffer_create(ss,
+ st->hwbuf = svga_winsys_buffer_create(svga,
1,
0,
st->hw_nblocksy*st->base.stride);
@@ -393,7 +393,7 @@ svga_texture_get_transfer(struct pipe_context *pipe,
}
if (usage & PIPE_TRANSFER_READ)
- svga_transfer_dma(st, SVGA3D_READ_HOST_VRAM);
+ svga_transfer_dma(svga, st, SVGA3D_READ_HOST_VRAM);
return &st->base;
@@ -445,13 +445,14 @@ static void
svga_texture_transfer_destroy(struct pipe_context *pipe,
struct pipe_transfer *transfer)
{
+ struct svga_context *svga = svga_context(pipe);
struct svga_texture *tex = svga_texture(transfer->resource);
struct svga_screen *ss = svga_screen(pipe->screen);
struct svga_winsys_screen *sws = ss->sws;
struct svga_transfer *st = svga_transfer(transfer);
if (st->base.usage & PIPE_TRANSFER_WRITE) {
- svga_transfer_dma(st, SVGA3D_WRITE_HOST_VRAM);
+ svga_transfer_dma(svga, st, SVGA3D_WRITE_HOST_VRAM);
ss->texture_timestamp++;
tex->view_age[transfer->sr.level] = ++(tex->age);
tex->defined[transfer->sr.face][transfer->sr.level] = TRUE;
diff --git a/src/gallium/drivers/svga/svga_sampler_view.c b/src/gallium/drivers/svga/svga_sampler_view.c
index fbae552f78f..6911f13f778 100644
--- a/src/gallium/drivers/svga/svga_sampler_view.c
+++ b/src/gallium/drivers/svga/svga_sampler_view.c
@@ -169,7 +169,7 @@ svga_validate_sampler_view(struct svga_context *svga, struct svga_sampler_view *
for (i = v->min_lod; i <= v->max_lod; i++) {
for (k = 0; k < numFaces; k++) {
if (v->age < tex->view_age[i])
- svga_texture_copy_handle(svga, NULL,
+ svga_texture_copy_handle(svga,
tex->handle, 0, 0, 0, i, k,
v->handle, 0, 0, 0, i - v->min_lod, k,
u_minify(tex->b.b.width0, i),
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
index aeda3dcad51..27ac09e275d 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -34,6 +34,7 @@
#include "svga_resource_texture.h"
#include "svga_resource.h"
#include "svga_debug.h"
+#include "svga_surface.h"
#include "svga3d_shaderdefs.h"
@@ -346,8 +347,6 @@ svga_destroy_screen( struct pipe_screen *screen )
pipe_mutex_destroy(svgascreen->swc_mutex);
pipe_mutex_destroy(svgascreen->tex_mutex);
- svgascreen->swc->destroy(svgascreen->swc);
-
svgascreen->sws->destroy(svgascreen->sws);
FREE(svgascreen);
@@ -397,6 +396,7 @@ svga_screen_create(struct svga_winsys_screen *sws)
screen->fence_finish = svga_fence_finish;
svgascreen->sws = sws;
+ svga_screen_init_surface_functions(screen);
svga_init_screen_resource_functions(svgascreen);
svgascreen->use_ps30 =
@@ -416,10 +416,6 @@ svga_screen_create(struct svga_winsys_screen *sws)
svgascreen->use_vs30 = svgascreen->use_ps30 = FALSE;
#endif
- svgascreen->swc = sws->context_create(sws);
- if(!svgascreen->swc)
- goto error2;
-
pipe_mutex_init(svgascreen->tex_mutex);
pipe_mutex_init(svgascreen->swc_mutex);
@@ -432,25 +428,6 @@ error1:
return NULL;
}
-void svga_screen_flush( struct svga_screen *svgascreen,
- struct pipe_fence_handle **pfence )
-{
- struct pipe_fence_handle *fence = NULL;
-
- SVGA_DBG(DEBUG_PERF, "%s\n", __FUNCTION__);
-
- pipe_mutex_lock(svgascreen->swc_mutex);
- svgascreen->swc->flush(svgascreen->swc, &fence);
- pipe_mutex_unlock(svgascreen->swc_mutex);
-
- svga_screen_cache_flush(svgascreen, fence);
-
- if(pfence)
- *pfence = fence;
- else
- svgascreen->sws->fence_reference(svgascreen->sws, &fence, NULL);
-}
-
struct svga_winsys_screen *
svga_winsys_screen(struct pipe_screen *screen)
{
diff --git a/src/gallium/drivers/svga/svga_screen.h b/src/gallium/drivers/svga/svga_screen.h
index 9dc229b0a87..86ec89d88c1 100644
--- a/src/gallium/drivers/svga/svga_screen.h
+++ b/src/gallium/drivers/svga/svga_screen.h
@@ -60,14 +60,11 @@ struct svga_screen
boolean no_sampler_view;
} debug;
- /* The screen needs its own context */
- struct svga_winsys_context *swc;
- struct SVGACmdMemory *fifo;
-
unsigned texture_timestamp;
pipe_mutex tex_mutex;
- pipe_mutex swc_mutex; /* Protects the use of swc and dirty_buffers */
-
+
+ pipe_mutex swc_mutex; /* Used for buffer uploads */
+
struct svga_host_surface_cache cache;
};
@@ -83,7 +80,4 @@ struct svga_screen *
svga_screen(struct pipe_screen *screen);
#endif
-void svga_screen_flush( struct svga_screen *svga_screen,
- struct pipe_fence_handle **pfence );
-
#endif /* SVGA_SCREEN_H */
diff --git a/src/gallium/drivers/svga/svga_surface.c b/src/gallium/drivers/svga/svga_surface.c
index dc1d9a850df..bd2cc380048 100644
--- a/src/gallium/drivers/svga/svga_surface.c
+++ b/src/gallium/drivers/svga/svga_surface.c
@@ -43,7 +43,6 @@
void
svga_texture_copy_handle(struct svga_context *svga,
- struct svga_screen *ss,
struct svga_winsys_surface *src_handle,
unsigned src_x, unsigned src_y, unsigned src_z,
unsigned src_level, unsigned src_face,
@@ -56,7 +55,7 @@ svga_texture_copy_handle(struct svga_context *svga,
enum pipe_error ret;
SVGA3dCopyBox box, *boxes;
- assert(svga || ss);
+ assert(svga);
src.handle = src_handle;
src.real_level = src_level;
@@ -84,39 +83,20 @@ svga_texture_copy_handle(struct svga_context *svga,
dst_handle, dst_level, dst_x, dst_y, dst_z);
*/
- if (svga) {
+ ret = SVGA3D_BeginSurfaceCopy(svga->swc,
+ &src.base,
+ &dst.base,
+ &boxes, 1);
+ if(ret != PIPE_OK) {
+ svga_context_flush(svga, NULL);
ret = SVGA3D_BeginSurfaceCopy(svga->swc,
&src.base,
&dst.base,
&boxes, 1);
- if(ret != PIPE_OK) {
- svga_context_flush(svga, NULL);
- ret = SVGA3D_BeginSurfaceCopy(svga->swc,
- &src.base,
- &dst.base,
- &boxes, 1);
- assert(ret == PIPE_OK);
- }
- *boxes = box;
- SVGA_FIFOCommitAll(svga->swc);
- } else {
- pipe_mutex_lock(ss->swc_mutex);
- ret = SVGA3D_BeginSurfaceCopy(ss->swc,
- &src.base,
- &dst.base,
- &boxes, 1);
- if(ret != PIPE_OK) {
- ss->swc->flush(ss->swc, NULL);
- ret = SVGA3D_BeginSurfaceCopy(ss->swc,
- &src.base,
- &dst.base,
- &boxes, 1);
- assert(ret == PIPE_OK);
- }
- *boxes = box;
- SVGA_FIFOCommitAll(ss->swc);
- pipe_mutex_unlock(ss->swc_mutex);
+ assert(ret == PIPE_OK);
}
+ *boxes = box;
+ SVGA_FIFOCommitAll(svga->swc);
}
@@ -183,7 +163,6 @@ svga_texture_view_surface(struct pipe_context *pipe,
1);
svga_texture_copy_handle(svga_context(pipe),
- ss,
tex->handle,
0, 0, z_offset,
i + start_mip,
@@ -346,7 +325,7 @@ svga_propagate_surface(struct pipe_context *pipe, struct pipe_surface *surf)
if (s->handle != tex->handle) {
SVGA_DBG(DEBUG_VIEWS, "svga: Surface propagate: tex %p, level %u, from %p\n", tex, surf->level, surf);
- svga_texture_copy_handle(svga_context(pipe), ss,
+ svga_texture_copy_handle(svga_context(pipe),
s->handle, 0, 0, 0, s->real_level, s->real_face,
tex->handle, 0, 0, surf->zslice, surf->level, surf->face,
u_minify(tex->b.b.width0, surf->level),
diff --git a/src/gallium/drivers/svga/svga_surface.h b/src/gallium/drivers/svga/svga_surface.h
index b50ecdc9942..13bd5b19b61 100644
--- a/src/gallium/drivers/svga/svga_surface.h
+++ b/src/gallium/drivers/svga/svga_surface.h
@@ -74,7 +74,6 @@ svga_texture_view_surface(struct pipe_context *pipe,
void
svga_texture_copy_handle(struct svga_context *svga,
- struct svga_screen *ss,
struct svga_winsys_surface *src_handle,
unsigned src_x, unsigned src_y, unsigned src_z,
unsigned src_level, unsigned src_face,
diff --git a/src/gallium/drivers/svga/svga_winsys.h b/src/gallium/drivers/svga/svga_winsys.h
index 3892addafd1..c155f5dae2f 100644
--- a/src/gallium/drivers/svga/svga_winsys.h
+++ b/src/gallium/drivers/svga/svga_winsys.h
@@ -85,7 +85,7 @@ struct svga_winsys_context
/**
* Emit a relocation for a host surface.
*
- * @param flags PIPE_BUFFER_USAGE_GPU_READ/WRITE
+ * @param flags bitmask of SVGA_RELOC_* flags
*
* NOTE: Order of this call does matter. It should be the same order
* as relocations appear in the command buffer.
@@ -99,7 +99,7 @@ struct svga_winsys_context
/**
* Emit a relocation for a guest memory region.
*
- * @param flags PIPE_BUFFER_USAGE_GPU_READ/WRITE
+ * @param flags bitmask of SVGA_RELOC_* flags
*
* NOTE: Order of this call does matter. It should be the same order
* as relocations appear in the command buffer.
@@ -230,7 +230,7 @@ struct svga_winsys_screen
/**
* Buffer management. Buffer attributes are mostly fixed over its lifetime.
*
- * XXX usage seems to be a bitmask of SVGA_BUFFER_USAGE_* flags.
+ * @param usage bitmask of SVGA_BUFFER_USAGE_* flags.
*
* alignment indicates the client's alignment requirements, eg for
* SSE instructions.
@@ -243,15 +243,12 @@ struct svga_winsys_screen
/**
* Map the entire data store of a buffer object into the client's address.
- * flags is a bitmask of:
- * - PB_USAGE_CPU_READ/WRITE
- * - PB_USAGE_DONTBLOCK
- * - PB_USAGE_UNSYNCHRONIZED
+ * flags is a bitmaks of PIPE_TRANSFER_*
*/
void *
(*buffer_map)( struct svga_winsys_screen *sws,
struct svga_winsys_buffer *buf,
- unsigned usage );
+ unsigned flags );
void
(*buffer_unmap)( struct svga_winsys_screen *sws,
diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c
index 71ba1e909df..3d1fb96b91e 100644
--- a/src/gallium/drivers/trace/tr_context.c
+++ b/src/gallium/drivers/trace/tr_context.c
@@ -812,7 +812,7 @@ trace_context_delete_vertex_elements_state(struct pipe_context *_pipe,
struct trace_context *tr_ctx = trace_context(_pipe);
struct pipe_context *pipe = tr_ctx->pipe;
- trace_dump_call_begin("pipe_context", "delete_verte_elements_state");
+ trace_dump_call_begin("pipe_context", "delete_vertex_elements_state");
trace_dump_arg(ptr, pipe);
trace_dump_arg(ptr, state);
diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
index e21aaacc18a..0a70237f260 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -73,9 +73,8 @@ enum tgsi_file_type {
TGSI_FILE_SAMPLER =5,
TGSI_FILE_ADDRESS =6,
TGSI_FILE_IMMEDIATE =7,
- TGSI_FILE_LOOP =8,
- TGSI_FILE_PREDICATE =9,
- TGSI_FILE_SYSTEM_VALUE =10,
+ TGSI_FILE_PREDICATE =8,
+ TGSI_FILE_SYSTEM_VALUE =9,
TGSI_FILE_COUNT /**< how many TGSI_FILE_ types */
};
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c
index a808d2d9ddf..203682ef330 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.c
+++ b/src/gallium/state_trackers/dri/common/dri_context.c
@@ -49,7 +49,7 @@ dri_init_extensions(struct dri_context *ctx)
}
GLboolean
-dri_create_context(const __GLcontextModes * visual,
+dri_create_context(gl_api api, const __GLcontextModes * visual,
__DRIcontext * cPriv, void *sharedContextPrivate)
{
__DRIscreen *sPriv = cPriv->driScreenPriv;
diff --git a/src/gallium/state_trackers/dri/common/dri_context.h b/src/gallium/state_trackers/dri/common/dri_context.h
index 9fe6b581016..54e56c64998 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.h
+++ b/src/gallium/state_trackers/dri/common/dri_context.h
@@ -34,6 +34,7 @@
#include "pipe/p_compiler.h"
#include "dri_wrapper.h"
+#include "main/mtypes.h"
struct pipe_context;
struct pipe_fence;
@@ -83,7 +84,8 @@ struct dri_context *
dri_get_current(__DRIscreen * driScreenPriv);
boolean
-dri_create_context(const __GLcontextModes * visual,
+dri_create_context(gl_api api,
+ const __GLcontextModes * visual,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
diff --git a/src/gallium/state_trackers/dri/drm/dri1.c b/src/gallium/state_trackers/dri/drm/dri1.c
index 23c21ed8398..326ff8bcada 100644
--- a/src/gallium/state_trackers/dri/drm/dri1.c
+++ b/src/gallium/state_trackers/dri/drm/dri1.c
@@ -33,6 +33,7 @@
#include "util/u_memory.h"
#include "util/u_rect.h"
+#include "util/u_surface.h"
#include "util/u_inlines.h"
#include "pipe/p_context.h"
#include "state_tracker/dri1_api.h"
diff --git a/src/gallium/state_trackers/vega/renderer.c b/src/gallium/state_trackers/vega/renderer.c
index 48fbc3b330e..e6aea482a76 100644
--- a/src/gallium/state_trackers/vega/renderer.c
+++ b/src/gallium/state_trackers/vega/renderer.c
@@ -40,6 +40,7 @@
#include "util/u_memory.h"
#include "util/u_rect.h"
#include "util/u_sampler.h"
+#include "util/u_surface.h"
#include "cso_cache/cso_context.h"
diff --git a/src/gallium/state_trackers/xorg/xorg_exa.c b/src/gallium/state_trackers/xorg/xorg_exa.c
index d5a1be81747..65be8c332a5 100644
--- a/src/gallium/state_trackers/xorg/xorg_exa.c
+++ b/src/gallium/state_trackers/xorg/xorg_exa.c
@@ -46,6 +46,7 @@
#include "util/u_math.h"
#include "util/u_debug.h"
#include "util/u_format.h"
+#include "util/u_surface.h"
#define DEBUG_PRINT 0
#define ROUND_UP_TEXTURES 1
diff --git a/src/gallium/state_trackers/xorg/xorg_renderer.c b/src/gallium/state_trackers/xorg/xorg_renderer.c
index 13fa561390f..583493116d5 100644
--- a/src/gallium/state_trackers/xorg/xorg_renderer.c
+++ b/src/gallium/state_trackers/xorg/xorg_renderer.c
@@ -9,6 +9,7 @@
#include "util/u_memory.h"
#include "util/u_rect.h"
#include "util/u_sampler.h"
+#include "util/u_surface.h"
#include "util/u_inlines.h"
diff --git a/src/gallium/targets/dri-swrast/Makefile b/src/gallium/targets/dri-swrast/Makefile
index fcfd690e438..3db9781c209 100644
--- a/src/gallium/targets/dri-swrast/Makefile
+++ b/src/gallium/targets/dri-swrast/Makefile
@@ -8,7 +8,8 @@ DRIVER_DEFINES = -D__NOT_HAVE_DRM_H -DGALLIUM_SOFTPIPE
PIPE_DRIVERS = \
$(TOP)/src/gallium/state_trackers/dri/sw/libdrisw.a \
$(TOP)/src/gallium/winsys/sw/dri/libswdri.a \
- $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
+ $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
+ $(TOP)/src/gallium/drivers/trace/libtrace.a
SWRAST_COMMON_GALLIUM_SOURCES = \
$(TOP)/src/mesa/drivers/dri/common/utils.c \
diff --git a/src/gallium/targets/dri-swrast/swrast_drm_api.c b/src/gallium/targets/dri-swrast/swrast_drm_api.c
index e8d6d8069cc..84142be80c8 100644
--- a/src/gallium/targets/dri-swrast/swrast_drm_api.c
+++ b/src/gallium/targets/dri-swrast/swrast_drm_api.c
@@ -31,6 +31,7 @@
#include "state_tracker/drm_api.h"
#include "state_tracker/sw_winsys.h"
#include "dri_sw_winsys.h"
+#include "trace/tr_public.h"
/* Copied from targets/libgl-xlib */
@@ -80,7 +81,7 @@ swrast_create_screen(struct sw_winsys *winsys)
screen = softpipe_create_screen( winsys );
#endif
- return screen;
+ return trace_screen_create(screen);;
}
struct pipe_screen *
diff --git a/src/gallium/tests/python/retrace/interpreter.py b/src/gallium/tests/python/retrace/interpreter.py
index 7118ff85ed8..e58a69322ea 100755
--- a/src/gallium/tests/python/retrace/interpreter.py
+++ b/src/gallium/tests/python/retrace/interpreter.py
@@ -432,6 +432,9 @@ class Context(Object):
swizzle_b = templ.swizzle_g,
swizzle_a = templ.swizzle_a)
+ def sampler_view_destroy(self, view):
+ pass
+
def set_fragment_sampler_views(self, num, views):
for i in range(num):
self.real.set_fragment_sampler_view(i, views[i])
@@ -456,6 +459,10 @@ class Context(Object):
return elements[0:num_elements]
def bind_vertex_elements_state(self, state):
+ if state is None:
+ self.real.set_vertex_elements(0)
+ return
+
elements = state
num_elements = len(elements)
self.velems = elements
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
index 9824ada5b33..b8366498922 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
@@ -22,6 +22,8 @@ struct radeon_drm_buffer {
boolean flinked;
uint32_t flink;
+ uint32_t tileflags;
+ uint32_t pitch;
struct radeon_drm_buffer *next, *prev;
};
@@ -318,6 +320,9 @@ void radeon_drm_bufmgr_get_tiling(struct pb_buffer *_buf,
radeon_bo_get_tiling(buf->bo, &flags, &pitch);
+ buf->tileflags = flags;
+ buf->pitch = pitch;
+
*microtiled = R300_BUFFER_LINEAR;
*macrotiled = R300_BUFFER_LINEAR;
if (flags & RADEON_BO_FLAGS_MICRO_TILE)
@@ -333,7 +338,7 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf,
uint32_t pitch)
{
struct radeon_drm_buffer *buf = get_drm_buffer(_buf);
- uint32_t flags = 0, old_flags, old_pitch;
+ uint32_t flags = 0;
if (microtiled == R300_BUFFER_TILED)
flags |= RADEON_BO_FLAGS_MICRO_TILE;
/* XXX Remove this ifdef when libdrm version 2.4.19 becomes mandatory. */
@@ -344,17 +349,15 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf,
if (macrotiled == R300_BUFFER_TILED)
flags |= RADEON_BO_FLAGS_MACRO_TILE;
- radeon_bo_get_tiling(buf->bo, &old_flags, &old_pitch);
-
- if (flags != old_flags || pitch != old_pitch) {
+ if (flags != buf->tileflags || pitch != buf->pitch) {
/* Tiling determines how DRM treats the buffer data.
* We must flush CS when changing it if the buffer is referenced. */
if (radeon_bo_is_referenced_by_cs(buf->bo, buf->mgr->rws->cs)) {
buf->mgr->rws->flush_cb(buf->mgr->rws->flush_data);
}
- }
- radeon_bo_set_tiling(buf->bo, flags, pitch);
+ radeon_bo_set_tiling(buf->bo, flags, pitch);
+ }
}
boolean radeon_drm_bufmgr_add_buffer(struct pb_buffer *_buf,
diff --git a/src/gallium/winsys/radeon/drm/radeon_r300.c b/src/gallium/winsys/radeon/drm/radeon_r300.c
index 80923de9373..fb779e4033b 100644
--- a/src/gallium/winsys/radeon/drm/radeon_r300.c
+++ b/src/gallium/winsys/radeon/drm/radeon_r300.c
@@ -181,7 +181,7 @@ static boolean radeon_check_cs(struct r300_winsys_screen *rws, int size)
struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
struct radeon_cs *cs = ws->cs;
- return radeon_validate(rws) && cs->cdw + size <= cs->ndw;
+ return cs->cdw + size <= cs->ndw;
}
static void radeon_begin_cs(struct r300_winsys_screen *rws,
diff --git a/src/gles/Makefile b/src/gles/Makefile
new file mode 100644
index 00000000000..d023c14049f
--- /dev/null
+++ b/src/gles/Makefile
@@ -0,0 +1,70 @@
+TOP = ../..
+MESA = $(TOP)/src/mesa
+include $(TOP)/configs/current
+include $(MESA)/sources.mak
+
+GLESv1_CM_ASM := $(addprefix $(MESA)/es/glapi/glapi-es1/,$(GLAPI_ASM_SOURCES))
+GLESv2_ASM := $(addprefix $(MESA)/es/glapi/glapi-es2/,$(GLAPI_ASM_SOURCES))
+API_SOURCES := $(addprefix $(MESA)/,$(GLAPI_SOURCES))
+
+$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : PREFIX = es1
+$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : NAME = GLESv1_CM
+
+$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : PREFIX = es2
+$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : NAME = GLESv2
+
+INCLUDES = -I$(TOP)/include -I$(MESA)/es/glapi/glapi-$(PREFIX) -I$(MESA)
+
+OBJECTS = \
+ $(notdir $(GLAPI_ASM_SOURCES:%.S=%.o)) \
+ $(notdir $(GLAPI_SOURCES:%.c=%.o))
+
+GLESv1_CM_OBJECTS = $(addprefix es1-,$(OBJECTS))
+GLESv2_OBJECTS = $(addprefix es2-,$(OBJECTS))
+
+es1-%.o: $(dir $(GLESv1_CM_ASM))%.S
+ $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
+es1-%.o: $(MESA)/glapi/%.c
+ $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
+
+es2-%.o: $(dir $(GLESv2_ASM))%.S
+ $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
+es2-%.o: $(MESA)/glapi/%.c
+ $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
+
+default: depend \
+ $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \
+ $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME)
+
+$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : $(GLESv1_CM_OBJECTS)
+$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : $(GLESv2_OBJECTS)
+
+$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \
+$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : Makefile
+ $(MKLIB) -o $($(NAME)_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+ -major 1 -minor 2 $(MKLIB_OPTIONS) \
+ -install $(TOP)/$(LIB_DIR) -id \
+ $(INSTALL_LIB_DIR)/lib$($(NAME)_LIB).1.dylib \
+ $($(NAME)_LIB_DEPS) $($(NAME)_OBJECTS)
+
+depend: Makefile
+ rm -f depend
+ touch depend
+ $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(API_SOURCES) \
+ $(ES1_API_ASM) $(ES2_API_ASM)
+
+# Emacs tags
+tags:
+ etags `find . -name \*.[ch]` `find $(TOP)/include`
+
+install: $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME)
+ $(MAKE) -C $(TOP)/src/mesa install-es2 install-es1
+
+# Remove .o and backup files
+clean:
+ -rm -f $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB)
+ -rm -f $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB)
+ -rm -f *.o *~
+ -rm -f depend depend.bak
+
+-include depend
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 82d3a56f37d..0e148edf8eb 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -584,6 +584,9 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
config->yInverted = *bp++;
break;
#endif
+ case GLX_USE_GL:
+ if (fbconfig_style_tags) *bp++;
+ break;
case None:
i = count;
break;
diff --git a/src/mesa/Makefile b/src/mesa/Makefile
index 8c0ebf84c4b..72f983e10a0 100644
--- a/src/mesa/Makefile
+++ b/src/mesa/Makefile
@@ -16,14 +16,32 @@ include sources.mak
.S.o:
$(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+CFLAGS += $(API_DEFINES)
# Default: build dependencies, then asm_subdirs, GLSL built-in lib,
# then convenience libs (.a) and finally the device drivers:
-default: depend asm_subdirs glsl_builtin libmesa.a libmesagallium.a \
+default: depend es_glapi asm_subdirs glsl_builtin libmesa.a libmesagallium.a \
libglapi.a driver_subdirs
+es_glapi:
+ @for api in $(APIS) ; do \
+ case "$$api" in \
+ es1|es2) $(MAKE) -C es/glapi $$api;; \
+ esac; \
+ done
+
+main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
+ $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
+
+main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
+ $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@
+
+main/get_es1.c: main/get_gen_es.py
+ $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@
+main/get_es2.c: main/get_gen_es.py
+ $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@
######################################################################
# Helper libraries used by many drivers:
@@ -94,14 +112,23 @@ install: default
dri) $(MAKE) install-libgl install-dri || exit 1 ;; \
*) $(MAKE) install-libgl || exit 1 ;; \
esac ; \
+ done; \
+ for api in $(APIS) ; do \
+ case "$$api" in \
+ es1) $(MAKE) install-es1 || exit 1;; \
+ es2) $(MAKE) install-es2 || exit 1;; \
+ esac; \
done
-
-gl_pcedit = sed \
+pcedit = \
-e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
-e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
-e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
-e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
+
+
+gl_pcedit = sed \
+ $(pcedit) \
-e 's,@GL_PC_REQ_PRIV@,$(GL_PC_REQ_PRIV),' \
-e 's,@GL_PC_LIB_PRIV@,$(GL_PC_LIB_PRIV),' \
-e 's,@GL_PC_CFLAGS@,$(GL_PC_CFLAGS),' \
@@ -110,11 +137,24 @@ gl_pcedit = sed \
gl.pc: gl.pc.in
$(gl_pcedit) $< > $@
+glesv2_pcedit = sed \
+ $(pcedit) \
+ -e 's,@GLESv2_PC_LIB_PRIV@,$(GLESv2_PC_LIB_PRIV),' \
+ -e 's,@GLESv2_LIB@,$(GLESv2_LIB),'
+
+glesv2.pc: glesv2.pc.in
+ $(glesv2_pcedit) $< > $@
+
+glesv1_cm_pcedit = sed \
+ $(pcedit) \
+ -e 's,@GLESv1_CM_PC_LIB_PRIV@,$(GLESv1_CM_PC_LIB_PRIV),' \
+ -e 's,@GLESv1_CM_LIB@,$(GLESv1_CM_LIB),'
+
+glesv1_cm.pc: glesv1_cm.pc.in
+ $(glesv1_cm_pcedit) $< > $@
+
osmesa_pcedit = sed \
- -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
- -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
- -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
- -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
+ $(pcedit) \
-e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \
-e 's,@OSMESA_PC_REQ@,$(OSMESA_PC_REQ),' \
-e 's,@OSMESA_PC_LIB_PRIV@,$(OSMESA_PC_LIB_PRIV),'
@@ -134,6 +174,30 @@ install-libgl: default gl.pc install-headers
$(DESTDIR)$(INSTALL_LIB_DIR)
$(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+install-headers-es1:
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES
+ $(INSTALL) -m 644 $(TOP)/include/GLES/*.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GLES
+
+install-es1: default glesv1_cm.pc install-headers-es1
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+ $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB) \
+ $(DESTDIR)$(INSTALL_LIB_DIR)
+ $(INSTALL) -m 644 glesv1_cm.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+
+install-headers-es2:
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES2
+ $(INSTALL) -m 644 $(TOP)/include/GLES2/*.h \
+ $(DESTDIR)$(INSTALL_INC_DIR)/GLES2
+
+install-es2: default glesv2.pc install-headers-es2
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+ $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB) \
+ $(DESTDIR)$(INSTALL_LIB_DIR)
+ $(INSTALL) -m 644 glesv2.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+
install-osmesa: default osmesa.pc
$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
$(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template
index 4cdd51efeee..4b9a0c1786d 100644
--- a/src/mesa/drivers/dri/Makefile.template
+++ b/src/mesa/drivers/dri/Makefile.template
@@ -31,6 +31,7 @@ SHARED_INCLUDES = \
-I$(TOP)/src/egl/drivers/dri \
$(LIBDRM_CFLAGS)
+CFLAGS += $(API_DEFINES)
##### RULES #####
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index d2ffa5da642..360c5247548 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -612,7 +612,8 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config,
pcp->hHWContext = hwContext;
- if ( !(*psp->DriverAPI.CreateContext)(&config->modes, pcp, shareCtx) ) {
+ if ( !(*psp->DriverAPI.CreateContext)(API_OPENGL,
+ &config->modes, pcp, shareCtx) ) {
free(pcp);
return NULL;
}
@@ -620,15 +621,62 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config,
return pcp;
}
+static unsigned int
+dri2GetAPIMask(__DRIscreen *screen)
+{
+ return screen->api_mask;
+}
+
+static __DRIcontext *
+dri2CreateNewContextForAPI(__DRIscreen *screen, int api,
+ const __DRIconfig *config,
+ __DRIcontext *shared, void *data)
+{
+ __DRIcontext *context;
+ void *shareCtx = (shared != NULL) ? shared->driverPrivate : NULL;
+ gl_api mesa_api;
+
+ if (!(screen->api_mask & (1 << api)))
+ return NULL;
+
+ switch (api) {
+ case __DRI_API_OPENGL:
+ mesa_api = API_OPENGL;
+ break;
+ case __DRI_API_GLES:
+ mesa_api = API_OPENGLES;
+ break;
+ case __DRI_API_GLES2:
+ mesa_api = API_OPENGLES2;
+ break;
+ }
+
+ context = malloc(sizeof *context);
+ if (!context)
+ return NULL;
+
+ context->driScreenPriv = screen;
+ context->driDrawablePriv = NULL;
+ context->loaderPrivate = data;
+
+ if (!(*screen->DriverAPI.CreateContext)(api, &config->modes,
+ context, shareCtx) ) {
+ free(context);
+ return NULL;
+ }
+
+ return context;
+}
+
static __DRIcontext *
dri2CreateNewContext(__DRIscreen *screen, const __DRIconfig *config,
__DRIcontext *shared, void *data)
{
- return driCreateNewContext(screen, config, 0, shared, 0, data);
+ return dri2CreateNewContextForAPI(screen, __DRI_API_OPENGL,
+ config, shared, data);
}
-
static int
driCopyContext(__DRIcontext *dest, __DRIcontext *src, unsigned long mask)
{
@@ -766,6 +814,7 @@ driCreateNewScreen(int scrn,
psp->dri2.enabled = GL_FALSE;
psp->DriverAPI = driDriverAPI;
+ psp->api_mask = (1 << __DRI_API_OPENGL);
*driver_modes = driDriverAPI.InitScreen(psp);
if (*driver_modes == NULL) {
@@ -812,6 +861,7 @@ dri2CreateNewScreen(int scrn, int fd,
psp->dri2.enabled = GL_TRUE;
psp->DriverAPI = driDriverAPI;
+ psp->api_mask = (1 << __DRI_API_OPENGL);
*driver_configs = driDriverAPI.InitScreen2(psp);
if (*driver_configs == NULL) {
free(psp);
@@ -863,6 +913,8 @@ const __DRIdri2Extension driDRI2Extension = {
dri2CreateNewScreen,
dri2CreateNewDrawable,
dri2CreateNewContext,
+ dri2GetAPIMask,
+ dri2CreateNewContextForAPI
};
const __DRI2configQueryExtension dri2ConfigQueryExtension = {
diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h
index 0fe6f1e246c..ab6c6e57afc 100644
--- a/src/mesa/drivers/dri/common/dri_util.h
+++ b/src/mesa/drivers/dri/common/dri_util.h
@@ -53,6 +53,7 @@
#include <xf86drm.h>
#include "xmlconfig.h"
#include "main/glheader.h"
+#include "main/mtypes.h"
#include "GL/internal/glcore.h"
#include "GL/internal/dri_interface.h"
@@ -148,8 +149,9 @@ struct __DriverAPIRec {
/**
* Context creation callback
*/
- GLboolean (*CreateContext)(const __GLcontextModes *glVis,
- __DRIcontext *driContextPriv,
+ GLboolean (*CreateContext)(gl_api api,
+ const __GLcontextModes *glVis,
+ __DRIcontext *driContextPriv,
void *sharedContextPrivate);
/**
@@ -531,6 +533,7 @@ struct __DRIscreenRec {
drmLock *lock;
driOptionCache optionCache;
+ unsigned int api_mask;
};
extern void
diff --git a/src/mesa/drivers/dri/common/drisw_util.c b/src/mesa/drivers/dri/common/drisw_util.c
index 8d08b93bfb5..1529c23b16d 100644
--- a/src/mesa/drivers/dri/common/drisw_util.c
+++ b/src/mesa/drivers/dri/common/drisw_util.c
@@ -112,7 +112,8 @@ driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config,
pcp->driDrawablePriv = NULL;
pcp->driReadablePriv = NULL;
- if (!driDriverAPI.CreateContext(&config->modes, pcp, shareCtx)) {
+ if (!driDriverAPI.CreateContext(API_OPENGL,
+ &config->modes, pcp, shareCtx)) {
FREE(pcp);
return NULL;
}
diff --git a/src/mesa/drivers/dri/common/drisw_util.h b/src/mesa/drivers/dri/common/drisw_util.h
index 08d5a116e96..9c3d01c99c0 100644
--- a/src/mesa/drivers/dri/common/drisw_util.h
+++ b/src/mesa/drivers/dri/common/drisw_util.h
@@ -36,6 +36,8 @@
#ifndef _DRISW_UTIL_H
#define _DRISW_UTIL_H
+#include "main/mtypes.h"
+
#include <GL/gl.h>
#include <GL/internal/glcore.h>
#include <GL/internal/dri_interface.h>
@@ -57,7 +59,8 @@ struct __DriverAPIRec {
void (*DestroyScreen)(__DRIscreen *driScrnPriv);
- GLboolean (*CreateContext)(const __GLcontextModes *glVis,
+ GLboolean (*CreateContext)(gl_api glapi,
+ const __GLcontextModes *glVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c
index 34e34606b4b..49f3ee88a61 100644
--- a/src/mesa/drivers/dri/i810/i810context.c
+++ b/src/mesa/drivers/dri/i810/i810context.c
@@ -166,7 +166,8 @@ static const struct dri_debug_control debug_control[] =
};
GLboolean
-i810CreateContext( const __GLcontextModes *mesaVis,
+i810CreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/i810/i810screen.h b/src/mesa/drivers/dri/i810/i810screen.h
index 734e2fb002d..fe6db7e6e1c 100644
--- a/src/mesa/drivers/dri/i810/i810screen.h
+++ b/src/mesa/drivers/dri/i810/i810screen.h
@@ -78,7 +78,8 @@ typedef struct {
extern GLboolean
-i810CreateContext( const __GLcontextModes *mesaVis,
+i810CreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate );
diff --git a/src/mesa/drivers/dri/i915/Makefile b/src/mesa/drivers/dri/i915/Makefile
index 5b49d0c77c6..71ee753748c 100644
--- a/src/mesa/drivers/dri/i915/Makefile
+++ b/src/mesa/drivers/dri/i915/Makefile
@@ -16,6 +16,7 @@ DRIVER_SOURCES = \
intel_batchbuffer.c \
intel_clear.c \
intel_extensions.c \
+ intel_extensions_es2.c \
intel_mipmap_tree.c \
intel_tex_layout.c \
intel_tex_image.c \
diff --git a/src/mesa/drivers/dri/i915/i830_context.c b/src/mesa/drivers/dri/i915/i830_context.c
index ebe8b15ca73..d52ea9812f7 100644
--- a/src/mesa/drivers/dri/i915/i830_context.c
+++ b/src/mesa/drivers/dri/i915/i830_context.c
@@ -63,7 +63,7 @@ i830CreateContext(const __GLcontextModes * mesaVis,
i830InitVtbl(i830);
i830InitDriverFunctions(&functions);
- if (!intelInitContext(intel, mesaVis, driContextPriv,
+ if (!intelInitContext(intel, __DRI_API_OPENGL, mesaVis, driContextPriv,
sharedContextPrivate, &functions)) {
FREE(i830);
return GL_FALSE;
diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c
index 4d86aae87d9..b3fe1c05d66 100644
--- a/src/mesa/drivers/dri/i915/i915_context.c
+++ b/src/mesa/drivers/dri/i915/i915_context.c
@@ -94,7 +94,8 @@ i915InitDriverFunctions(struct dd_function_table *functions)
extern const struct tnl_pipeline_stage *intel_pipeline[];
GLboolean
-i915CreateContext(const __GLcontextModes * mesaVis,
+i915CreateContext(int api,
+ const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate)
{
@@ -114,7 +115,7 @@ i915CreateContext(const __GLcontextModes * mesaVis,
i915InitDriverFunctions(&functions);
- if (!intelInitContext(intel, mesaVis, driContextPriv,
+ if (!intelInitContext(intel, api, mesaVis, driContextPriv,
sharedContextPrivate, &functions)) {
FREE(i915);
return GL_FALSE;
diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h
index b5169280f6b..a7b9aae6f95 100644
--- a/src/mesa/drivers/dri/i915/i915_context.h
+++ b/src/mesa/drivers/dri/i915/i915_context.h
@@ -318,7 +318,8 @@ do { \
/*======================================================================
* i915_context.c
*/
-extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis,
+extern GLboolean i915CreateContext(int api,
+ const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/i915/intel_extensions_es2.c b/src/mesa/drivers/dri/i915/intel_extensions_es2.c
new file mode 120000
index 00000000000..0ec1ceee787
--- /dev/null
+++ b/src/mesa/drivers/dri/i915/intel_extensions_es2.c
@@ -0,0 +1 @@
+../intel/intel_extensions_es2.c \ No newline at end of file
diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile
index 842d4b7aa10..a0039e800d2 100644
--- a/src/mesa/drivers/dri/i965/Makefile
+++ b/src/mesa/drivers/dri/i965/Makefile
@@ -13,6 +13,7 @@ DRIVER_SOURCES = \
intel_context.c \
intel_decode.c \
intel_extensions.c \
+ intel_extensions_es2.c \
intel_fbo.c \
intel_mipmap_tree.c \
intel_regions.c \
diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 360fc12621a..523a11aea33 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -68,7 +68,8 @@ static void brwInitDriverFunctions( struct dd_function_table *functions )
functions->Viewport = intel_viewport;
}
-GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
+GLboolean brwCreateContext( int api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate)
{
@@ -85,7 +86,7 @@ GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
brwInitVtbl( brw );
brwInitDriverFunctions( &functions );
- if (!intelInitContext( intel, mesaVis, driContextPriv,
+ if (!intelInitContext( intel, api, mesaVis, driContextPriv,
sharedContextPrivate, &functions )) {
printf("%s: failed to init intel context\n", __FUNCTION__);
FREE(brw);
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 2855c93ea66..1f09651126b 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -687,7 +687,8 @@ void brwInitVtbl( struct brw_context *brw );
/*======================================================================
* brw_context.c
*/
-GLboolean brwCreateContext( const __GLcontextModes *mesaVis,
+GLboolean brwCreateContext( int api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/i965/intel_extensions_es2.c b/src/mesa/drivers/dri/i965/intel_extensions_es2.c
new file mode 120000
index 00000000000..0ec1ceee787
--- /dev/null
+++ b/src/mesa/drivers/dri/i965/intel_extensions_es2.c
@@ -0,0 +1 @@
+../intel/intel_extensions_es2.c \ No newline at end of file
diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c
index 2ccc12010ed..8ee9a292a1b 100644
--- a/src/mesa/drivers/dri/intel/intel_context.c
+++ b/src/mesa/drivers/dri/intel/intel_context.c
@@ -586,6 +586,7 @@ intelInitDriverFunctions(struct dd_function_table *functions)
GLboolean
intelInitContext(struct intel_context *intel,
+ int api,
const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate,
@@ -601,8 +602,8 @@ intelInitContext(struct intel_context *intel,
if (intelScreen->bufmgr == NULL)
return GL_FALSE;
- if (!_mesa_initialize_context(&intel->ctx, mesaVis, shareCtx,
- functions, (void *) intel)) {
+ if (!_mesa_initialize_context_for_api(&intel->ctx, api, mesaVis, shareCtx,
+ functions, (void *) intel)) {
printf("%s: failed to init mesa context\n", __FUNCTION__);
return GL_FALSE;
}
@@ -736,7 +737,16 @@ intelInitContext(struct intel_context *intel,
intel->RenderIndex = ~0;
- intelInitExtensions(ctx);
+ switch (ctx->API) {
+ case API_OPENGL:
+ intelInitExtensions(ctx);
+ break;
+ case API_OPENGLES:
+ break;
+ case API_OPENGLES2:
+ intelInitExtensionsES2(ctx);
+ break;
+ }
INTEL_DEBUG = driParseDebugString(getenv("INTEL_DEBUG"), debug_control);
if (INTEL_DEBUG & DEBUG_BUFMGR)
diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h
index 75dabc554c6..02bb4d0d640 100644
--- a/src/mesa/drivers/dri/intel/intel_context.h
+++ b/src/mesa/drivers/dri/intel/intel_context.h
@@ -364,6 +364,7 @@ extern int INTEL_DEBUG;
*/
extern GLboolean intelInitContext(struct intel_context *intel,
+ int api,
const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate,
diff --git a/src/mesa/drivers/dri/intel/intel_extensions.h b/src/mesa/drivers/dri/intel/intel_extensions.h
index e78e07356e7..236442a4d66 100644
--- a/src/mesa/drivers/dri/intel/intel_extensions.h
+++ b/src/mesa/drivers/dri/intel/intel_extensions.h
@@ -33,7 +33,7 @@ extern void
intelInitExtensions(GLcontext *ctx);
extern void
-intelFlushDrawable(__DRIdrawable *drawable);
+intelInitExtensionsES2(GLcontext *ctx);
#endif
diff --git a/src/mesa/drivers/dri/intel/intel_extensions_es2.c b/src/mesa/drivers/dri/intel/intel_extensions_es2.c
new file mode 100644
index 00000000000..baf8e130010
--- /dev/null
+++ b/src/mesa/drivers/dri/intel/intel_extensions_es2.c
@@ -0,0 +1,94 @@
+/**************************************************************************
+ *
+ * Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#include "main/extensions.h"
+
+#include "intel_extensions.h"
+#include "utils.h"
+
+static const char *es2_extensions[] = {
+ /* Used by mesa internally (cf all_mesa_extensions in ../common/utils.c) */
+ "GL_ARB_draw_buffers",
+ "GL_ARB_multisample",
+ "GL_ARB_texture_compression",
+ "GL_ARB_transpose_matrix",
+ "GL_ARB_vertex_buffer_object",
+ "GL_ARB_window_pos",
+ "GL_EXT_blend_func_separate",
+ "GL_EXT_compiled_vertex_array",
+ "GL_EXT_multi_draw_arrays",
+ "GL_EXT_polygon_offset",
+ "GL_EXT_texture_object",
+ "GL_EXT_vertex_array",
+ "GL_IBM_multimode_draw_arrays",
+ "GL_MESA_window_pos",
+ "GL_NV_vertex_program",
+
+ /* Required by GLES2 */
+ "GL_ARB_fragment_program",
+ "GL_ARB_fragment_shader",
+ "GL_ARB_multitexture",
+ "GL_ARB_shader_objects",
+ "GL_ARB_texture_cube_map",
+ "GL_ARB_texture_mirrored_repeat",
+ "GL_ARB_texture_non_power_of_two",
+ "GL_ARB_vertex_shader",
+ "GL_EXT_blend_color",
+ "GL_EXT_blend_equation_separate",
+ "GL_EXT_blend_minmax",
+ "GL_EXT_blend_subtract",
+ "GL_EXT_stencil_wrap",
+
+ /* Optional GLES2 */
+ "GL_ARB_framebuffer_object",
+ "GL_EXT_texture_filter_anisotropic",
+ "GL_ARB_depth_texture",
+ "GL_EXT_packed_depth_stencil",
+ "GL_EXT_framebuffer_object",
+
+#if FEATURE_OES_EGL_image
+ "GL_OES_EGL_image",
+#endif
+
+ NULL,
+};
+
+/**
+ * Initializes potential list of extensions if ctx == NULL, or actually enables
+ * extensions for a context.
+ */
+void
+intelInitExtensionsES2(GLcontext *ctx)
+{
+ int i;
+
+ /* Can't use driInitExtensions() since it uses extensions from
+ * main/remap_helper.h when called the first time. */
+
+ for (i = 0; es2_extensions[i]; i++)
+ _mesa_enable_extension(ctx, es2_extensions[i]);
+}
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index ea739a413e0..3aed253e240 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -357,15 +357,18 @@ extern GLboolean i830CreateContext(const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
-extern GLboolean i915CreateContext(const __GLcontextModes * mesaVis,
+extern GLboolean i915CreateContext(int api,
+ const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
-extern GLboolean brwCreateContext(const __GLcontextModes * mesaVis,
+extern GLboolean brwCreateContext(int api,
+ const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
static GLboolean
-intelCreateContext(const __GLcontextModes * mesaVis,
+intelCreateContext(gl_api api,
+ const __GLcontextModes * mesaVis,
__DRIcontext * driContextPriv,
void *sharedContextPrivate)
{
@@ -375,7 +378,7 @@ intelCreateContext(const __GLcontextModes * mesaVis,
#ifdef I915
if (IS_9XX(intelScreen->deviceID)) {
if (!IS_965(intelScreen->deviceID)) {
- return i915CreateContext(mesaVis, driContextPriv,
+ return i915CreateContext(api, mesaVis, driContextPriv,
sharedContextPrivate);
}
} else {
@@ -384,7 +387,8 @@ intelCreateContext(const __GLcontextModes * mesaVis,
}
#else
if (IS_965(intelScreen->deviceID))
- return brwCreateContext(mesaVis, driContextPriv, sharedContextPrivate);
+ return brwCreateContext(api, mesaVis,
+ driContextPriv, sharedContextPrivate);
#endif
fprintf(stderr, "Unrecognized deviceID %x\n", intelScreen->deviceID);
return GL_FALSE;
@@ -431,6 +435,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
struct intel_screen *intelScreen;
GLenum fb_format[3];
GLenum fb_type[3];
+ unsigned int api_mask;
static const GLenum back_buffer_modes[] = {
GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML
@@ -457,6 +462,17 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp)
&intelScreen->deviceID))
return GL_FALSE;
+ api_mask = (1 << __DRI_API_OPENGL);
+#if FEATURE_ES1
+ api_mask |= (1 << __DRI_API_GLES);
+#endif
+#if FEATURE_ES2
+ api_mask |= (1 << __DRI_API_GLES2);
+#endif
+
+ if (IS_9XX(intelScreen->deviceID) || IS_965(intelScreen->deviceID))
+ psp->api_mask = api_mask;
+
if (!intel_init_bufmgr(intelScreen))
return GL_FALSE;
diff --git a/src/mesa/drivers/dri/mach64/mach64_context.c b/src/mesa/drivers/dri/mach64/mach64_context.c
index 77e7e53ce04..72a44d96424 100644
--- a/src/mesa/drivers/dri/mach64/mach64_context.c
+++ b/src/mesa/drivers/dri/mach64/mach64_context.c
@@ -86,7 +86,8 @@ static const struct dri_extension card_extensions[] =
/* Create the device specific context.
*/
-GLboolean mach64CreateContext( const __GLcontextModes *glVisual,
+GLboolean mach64CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/mach64/mach64_context.h b/src/mesa/drivers/dri/mach64/mach64_context.h
index 18fc859d013..893fc8daee9 100644
--- a/src/mesa/drivers/dri/mach64/mach64_context.h
+++ b/src/mesa/drivers/dri/mach64/mach64_context.h
@@ -273,7 +273,8 @@ struct mach64_context {
#define MACH64_CONTEXT(ctx) ((mach64ContextPtr)(ctx->DriverCtx))
-extern GLboolean mach64CreateContext( const __GLcontextModes *glVisual,
+extern GLboolean mach64CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate );
diff --git a/src/mesa/drivers/dri/mga/mga_xmesa.c b/src/mesa/drivers/dri/mga/mga_xmesa.c
index 687412bca55..31007ccb1da 100644
--- a/src/mesa/drivers/dri/mga/mga_xmesa.c
+++ b/src/mesa/drivers/dri/mga/mga_xmesa.c
@@ -423,7 +423,8 @@ static const struct dri_debug_control debug_control[] =
static GLboolean
-mgaCreateContext( const __GLcontextModes *mesaVis,
+mgaCreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c
index 42bec659d73..f481161d468 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c
@@ -75,7 +75,8 @@ nouveau_channel_flush_notify(struct nouveau_channel *chan)
}
GLboolean
-nouveau_context_create(const __GLcontextModes *visual, __DRIcontext *dri_ctx,
+nouveau_context_create(gl_api api,
+ const __GLcontextModes *visual, __DRIcontext *dri_ctx,
void *share_ctx)
{
__DRIscreen *dri_screen = dri_ctx->driScreenPriv;
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.h b/src/mesa/drivers/dri/nouveau/nouveau_context.h
index fe64fec930b..3dbe72900a6 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_context.h
+++ b/src/mesa/drivers/dri/nouveau/nouveau_context.h
@@ -89,7 +89,8 @@ struct nouveau_context {
context_drv(ctx)->emit[NOUVEAU_STATE_##s](ctx, NOUVEAU_STATE_##s)
GLboolean
-nouveau_context_create(const __GLcontextModes *visual, __DRIcontext *dri_ctx,
+nouveau_context_create(gl_api api,
+ const __GLcontextModes *visual, __DRIcontext *dri_ctx,
void *share_ctx);
GLboolean
diff --git a/src/mesa/drivers/dri/r128/r128_context.c b/src/mesa/drivers/dri/r128/r128_context.c
index 67e92405057..78607083830 100644
--- a/src/mesa/drivers/dri/r128/r128_context.c
+++ b/src/mesa/drivers/dri/r128/r128_context.c
@@ -99,7 +99,8 @@ static const struct dri_debug_control debug_control[] =
/* Create the device specific context.
*/
-GLboolean r128CreateContext( const __GLcontextModes *glVisual,
+GLboolean r128CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/r128/r128_context.h b/src/mesa/drivers/dri/r128/r128_context.h
index 65f845c1159..65ddb3bd23b 100644
--- a/src/mesa/drivers/dri/r128/r128_context.h
+++ b/src/mesa/drivers/dri/r128/r128_context.h
@@ -224,7 +224,8 @@ struct r128_context {
(rmesa->r128Screen->chipset == R128_CARD_TYPE_R128_MOBILITY)
-extern GLboolean r128CreateContext( const __GLcontextModes *glVisual,
+extern GLboolean r128CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate );
diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c
index 36a29350ccc..5896296021f 100644
--- a/src/mesa/drivers/dri/r200/r200_context.c
+++ b/src/mesa/drivers/dri/r200/r200_context.c
@@ -271,7 +271,8 @@ static void r200_init_vtbl(radeonContextPtr radeon)
/* Create the device specific rendering context.
*/
-GLboolean r200CreateContext( const __GLcontextModes *glVisual,
+GLboolean r200CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate)
{
diff --git a/src/mesa/drivers/dri/r200/r200_context.h b/src/mesa/drivers/dri/r200/r200_context.h
index a9dce310ae1..305958f5d76 100644
--- a/src/mesa/drivers/dri/r200/r200_context.h
+++ b/src/mesa/drivers/dri/r200/r200_context.h
@@ -637,7 +637,8 @@ struct r200_context {
extern void r200DestroyContext( __DRIcontext *driContextPriv );
-extern GLboolean r200CreateContext( const __GLcontextModes *glVisual,
+extern GLboolean r200CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate);
extern GLboolean r200MakeCurrent( __DRIcontext *driContextPriv,
diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c
index 4dce454c3a7..6992ca59dbf 100644
--- a/src/mesa/drivers/dri/r300/r300_context.c
+++ b/src/mesa/drivers/dri/r300/r300_context.c
@@ -478,7 +478,8 @@ static void r300InitIoctlFuncs(struct dd_function_table *functions)
/* Create the device specific rendering context.
*/
-GLboolean r300CreateContext(const __GLcontextModes * glVisual,
+GLboolean r300CreateContext(gl_api api,
+ const __GLcontextModes * glVisual,
__DRIcontext * driContextPriv,
void *sharedContextPrivate)
{
diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h
index df7115e7dae..fbb609b9f61 100644
--- a/src/mesa/drivers/dri/r300/r300_context.h
+++ b/src/mesa/drivers/dri/r300/r300_context.h
@@ -543,7 +543,8 @@ struct r300_context {
#define R300_CONTEXT(ctx) ((r300ContextPtr)(ctx->DriverCtx))
extern void r300DestroyContext(__DRIcontext * driContextPriv);
-extern GLboolean r300CreateContext(const __GLcontextModes * glVisual,
+extern GLboolean r300CreateContext(gl_api api,
+ const __GLcontextModes * glVisual,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c
index ab6b6172352..f4aed4e87fd 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -353,7 +353,8 @@ static void r600InitGLExtensions(GLcontext *ctx)
/* Create the device specific rendering context.
*/
-GLboolean r600CreateContext(const __GLcontextModes * glVisual,
+GLboolean r600CreateContext(gl_api api,
+ const __GLcontextModes * glVisual,
__DRIcontext * driContextPriv,
void *sharedContextPrivate)
{
diff --git a/src/mesa/drivers/dri/r600/r600_context.h b/src/mesa/drivers/dri/r600/r600_context.h
index 72c8c869b70..063dd7c49a1 100644
--- a/src/mesa/drivers/dri/r600/r600_context.h
+++ b/src/mesa/drivers/dri/r600/r600_context.h
@@ -155,7 +155,8 @@ struct r600_context {
#define R700_CONTEXT(ctx) ((context_t *)(ctx->DriverCtx))
#define GL_CONTEXT(context) ((GLcontext *)(context->radeon.glCtx))
-extern GLboolean r600CreateContext(const __GLcontextModes * glVisual,
+extern GLboolean r600CreateContext(gl_api api,
+ const __GLcontextModes * glVisual,
__DRIcontext * driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c
index 56aba16e9e0..ee65d7ff3d0 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.c
+++ b/src/mesa/drivers/dri/radeon/radeon_context.c
@@ -206,9 +206,10 @@ static void r100_init_vtbl(radeonContextPtr radeon)
/* Create the device specific context.
*/
GLboolean
-r100CreateContext( const __GLcontextModes *glVisual,
- __DRIcontext *driContextPriv,
- void *sharedContextPrivate)
+r100CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
+ __DRIcontext *driContextPriv,
+ void *sharedContextPrivate)
{
__DRIscreen *sPriv = driContextPriv->driScreenPriv;
radeonScreenPtr screen = (radeonScreenPtr)(sPriv->private);
diff --git a/src/mesa/drivers/dri/radeon/radeon_context.h b/src/mesa/drivers/dri/radeon/radeon_context.h
index d84760bf74f..c4bfbfdaeb3 100644
--- a/src/mesa/drivers/dri/radeon/radeon_context.h
+++ b/src/mesa/drivers/dri/radeon/radeon_context.h
@@ -450,7 +450,8 @@ struct r100_context {
#define RADEON_OLD_PACKETS 1
-extern GLboolean r100CreateContext( const __GLcontextModes *glVisual,
+extern GLboolean r100CreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/drivers/dri/savage/savage_xmesa.c b/src/mesa/drivers/dri/savage/savage_xmesa.c
index c3a53ea5e25..cbdc9c87eeb 100644
--- a/src/mesa/drivers/dri/savage/savage_xmesa.c
+++ b/src/mesa/drivers/dri/savage/savage_xmesa.c
@@ -288,7 +288,8 @@ savageDestroyScreen(__DRIscreen *sPriv)
}
static GLboolean
-savageCreateContext( const __GLcontextModes *mesaVis,
+savageCreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/sis/sis_context.c b/src/mesa/drivers/dri/sis/sis_context.c
index 400681a04ab..85f26a08b7f 100644
--- a/src/mesa/drivers/dri/sis/sis_context.c
+++ b/src/mesa/drivers/dri/sis/sis_context.c
@@ -158,7 +158,8 @@ void sisReAllocateBuffers(GLcontext *ctx, GLframebuffer *drawbuffer,
}
GLboolean
-sisCreateContext( const __GLcontextModes *glVisual,
+sisCreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/sis/sis_context.h b/src/mesa/drivers/dri/sis/sis_context.h
index 4179ee081a7..132cee33ee3 100644
--- a/src/mesa/drivers/dri/sis/sis_context.h
+++ b/src/mesa/drivers/dri/sis/sis_context.h
@@ -438,7 +438,8 @@ enum _sis_verbose {
VERBOSE_SIS_MEMORY = 0x2
};
-extern GLboolean sisCreateContext( const __GLcontextModes *glVisual,
+extern GLboolean sisCreateContext( gl_api api,
+ const __GLcontextModes *glVisual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate );
extern void sisDestroyContext( __DRIcontext * );
diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c
index 6f54981eba1..7fa7e2192ff 100644
--- a/src/mesa/drivers/dri/swrast/swrast.c
+++ b/src/mesa/drivers/dri/swrast/swrast.c
@@ -501,7 +501,8 @@ swrast_init_driver_functions(struct dd_function_table *driver)
*/
static GLboolean
-dri_create_context(const __GLcontextModes * visual,
+dri_create_context(gl_api api,
+ const __GLcontextModes * visual,
__DRIcontext * cPriv, void *sharedContextPrivate)
{
struct dri_context *ctx = NULL;
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.c b/src/mesa/drivers/dri/tdfx/tdfx_context.c
index edb1875f767..c30fcf3a6f7 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_context.c
+++ b/src/mesa/drivers/dri/tdfx/tdfx_context.c
@@ -164,7 +164,8 @@ static const struct dri_debug_control debug_control[] =
{ NULL, 0 }
};
-GLboolean tdfxCreateContext( const __GLcontextModes *mesaVis,
+GLboolean tdfxCreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate )
{
diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h
index 6e25cac3015..29b0876f9f9 100644
--- a/src/mesa/drivers/dri/tdfx/tdfx_context.h
+++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h
@@ -937,7 +937,8 @@ struct tdfx_context {
extern GLboolean
-tdfxCreateContext( const __GLcontextModes *mesaVis,
+tdfxCreateContext( gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate );
diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c
index 9da96bdd45a..4298c948551 100644
--- a/src/mesa/drivers/dri/unichrome/via_context.c
+++ b/src/mesa/drivers/dri/unichrome/via_context.c
@@ -456,7 +456,8 @@ FreeBuffer(struct via_context *vmesa)
GLboolean
-viaCreateContext(const __GLcontextModes *visual,
+viaCreateContext(gl_api api,
+ const __GLcontextModes *visual,
__DRIcontext *driContextPriv,
void *sharedContextPrivate)
{
diff --git a/src/mesa/drivers/dri/unichrome/via_screen.h b/src/mesa/drivers/dri/unichrome/via_screen.h
index aa662e01c04..51df0ce4eb4 100644
--- a/src/mesa/drivers/dri/unichrome/via_screen.h
+++ b/src/mesa/drivers/dri/unichrome/via_screen.h
@@ -76,7 +76,8 @@ typedef struct {
extern GLboolean
-viaCreateContext(const __GLcontextModes *mesaVis,
+viaCreateContext(gl_api api,
+ const __GLcontextModes *mesaVis,
__DRIcontext *driContextPriv,
void *sharedContextPrivate);
diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile
index 8b484853afe..5498b086aab 100644
--- a/src/mesa/es/Makefile
+++ b/src/mesa/es/Makefile
@@ -82,24 +82,6 @@ libes1api.a: $(ES1_API_OBJECTS)
libes2api.a: $(ES2_API_OBJECTS)
@$(MKLIB) -o es2api -static $(ES2_API_OBJECTS)
-GENERATED_SOURCES := \
- main/api_exec_es1.c \
- main/api_exec_es2.c \
- main/get_es1.c \
- main/get_es2.c
-
-main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
- $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
-
-main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
- $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@
-
-main/get_es1.c: main/get_gen.py
- $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@
-
-main/get_es2.c: main/get_gen.py
- $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@
-
.PHONY: clean
clean:
-rm -f $(ES1_LIBS) $(ES2_LIBS)
diff --git a/src/mesa/es/glapi/Makefile b/src/mesa/es/glapi/Makefile
index e8a9afab7c5..fea55594fda 100644
--- a/src/mesa/es/glapi/Makefile
+++ b/src/mesa/es/glapi/Makefile
@@ -11,7 +11,6 @@ OUTPUTS := \
sparc/glapi_sparc.S \
x86-64/glapi_x86-64.S \
x86/glapi_x86.S \
- main/enums.c \
main/remap_helper.h
COMMON = gl_XML.py glX_XML.py license.py typeexpr.py
@@ -30,7 +29,10 @@ ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \
ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/, $(OUTPUTS))
ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/, $(OUTPUTS))
-all: $(ES1_OUTPUTS) $(ES2_OUTPUTS)
+all: es1 es2
+
+es1: $(ES1_OUTPUTS)
+es2: $(ES2_OUTPUTS)
$(ES1_OUTPUTS): APIXML := $(ES1_APIXML)
$(ES2_OUTPUTS): APIXML := $(ES2_APIXML)
@@ -66,9 +68,6 @@ endef
%/x86/glapi_x86.S: $(GLAPI)/gl_x86_asm.py $(COMMON)
$(call gen-glapi)
-%/main/enums.c: $(GLAPI)/gl_enums.py $(COMMON)
- $(call gen-glapi)
-
%/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON)
$(call gen-glapi)
diff --git a/src/mesa/es/main/es_enable.c b/src/mesa/es/main/es_enable.c
deleted file mode 100644
index 351caacd776..00000000000
--- a/src/mesa/es/main/es_enable.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2009 Chia-I Wu <[email protected]>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "GLES/gl.h"
-#include "GLES/glext.h"
-
-#include "main/compiler.h" /* for ASSERT */
-
-
-#ifndef GL_TEXTURE_GEN_S
-#define GL_TEXTURE_GEN_S 0x0C60
-#define GL_TEXTURE_GEN_T 0x0C61
-#define GL_TEXTURE_GEN_R 0x0C62
-#endif
-
-
-extern void GL_APIENTRY _es_Disable(GLenum cap);
-extern void GL_APIENTRY _es_Enable(GLenum cap);
-extern GLboolean GL_APIENTRY _es_IsEnabled(GLenum cap);
-
-extern void GL_APIENTRY _mesa_Disable(GLenum cap);
-extern void GL_APIENTRY _mesa_Enable(GLenum cap);
-extern GLboolean GL_APIENTRY _mesa_IsEnabled(GLenum cap);
-
-
-void GL_APIENTRY
-_es_Disable(GLenum cap)
-{
- switch (cap) {
- case GL_TEXTURE_GEN_STR_OES:
- /* disable S, T, and R at the same time */
- _mesa_Disable(GL_TEXTURE_GEN_S);
- _mesa_Disable(GL_TEXTURE_GEN_T);
- _mesa_Disable(GL_TEXTURE_GEN_R);
- break;
- default:
- _mesa_Disable(cap);
- break;
- }
-}
-
-
-void GL_APIENTRY
-_es_Enable(GLenum cap)
-{
- switch (cap) {
- case GL_TEXTURE_GEN_STR_OES:
- /* enable S, T, and R at the same time */
- _mesa_Enable(GL_TEXTURE_GEN_S);
- _mesa_Enable(GL_TEXTURE_GEN_T);
- _mesa_Enable(GL_TEXTURE_GEN_R);
- break;
- default:
- _mesa_Enable(cap);
- break;
- }
-}
-
-
-GLboolean GL_APIENTRY
-_es_IsEnabled(GLenum cap)
-{
- switch (cap) {
- case GL_TEXTURE_GEN_STR_OES:
- cap = GL_TEXTURE_GEN_S;
- default:
- break;
- }
-
- return _mesa_IsEnabled(cap);
-}
diff --git a/src/mesa/es/main/es_fbo.c b/src/mesa/es/main/es_fbo.c
deleted file mode 100644
index 18036378304..00000000000
--- a/src/mesa/es/main/es_fbo.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- **************************************************************************/
-
-
-#include "GLES2/gl2.h"
-#include "GLES2/gl2ext.h"
-
-
-#ifndef GL_RGB5
-#define GL_RGB5 0x8050
-#endif
-
-
-extern void GL_APIENTRY _es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
-
-extern void GL_APIENTRY _mesa_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
-
-
-void GL_APIENTRY
-_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat,
- GLsizei width, GLsizei height)
-{
- switch (internalFormat) {
- case GL_RGB565:
- /* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
- /* choose a closest format */
- internalFormat = GL_RGB5;
- break;
- default:
- break;
- }
- _mesa_RenderbufferStorageEXT(target, internalFormat, width, height);
-}
diff --git a/src/mesa/es/main/es_texgen.c b/src/mesa/es/main/es_texgen.c
deleted file mode 100644
index c29a0a7f138..00000000000
--- a/src/mesa/es/main/es_texgen.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2009 Chia-I Wu <[email protected]>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "GLES/gl.h"
-#include "GLES/glext.h"
-
-#include "main/compiler.h" /* for ASSERT */
-
-
-#ifndef GL_S
-#define GL_S 0x2000
-#define GL_T 0x2001
-#define GL_R 0x2002
-#endif
-
-
-extern void GL_APIENTRY _es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params);
-extern void GL_APIENTRY _es_TexGenf(GLenum coord, GLenum pname, GLfloat param);
-extern void GL_APIENTRY _es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params);
-
-extern void GL_APIENTRY _mesa_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params);
-extern void GL_APIENTRY _mesa_TexGenf(GLenum coord, GLenum pname, GLfloat param);
-extern void GL_APIENTRY _mesa_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params);
-
-
-void GL_APIENTRY
-_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- _mesa_GetTexGenfv(GL_S, pname, params);
-}
-
-
-void GL_APIENTRY
-_es_TexGenf(GLenum coord, GLenum pname, GLfloat param)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- /* set S, T, and R at the same time */
- _mesa_TexGenf(GL_S, pname, param);
- _mesa_TexGenf(GL_T, pname, param);
- _mesa_TexGenf(GL_R, pname, param);
-}
-
-
-void GL_APIENTRY
-_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
-{
- ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
- /* set S, T, and R at the same time */
- _mesa_TexGenfv(GL_S, pname, params);
- _mesa_TexGenfv(GL_T, pname, params);
- _mesa_TexGenfv(GL_R, pname, params);
-}
diff --git a/src/mesa/es/main/specials_es1.c b/src/mesa/es/main/specials_es1.c
deleted file mode 100644
index 92e24a03fe5..00000000000
--- a/src/mesa/es/main/specials_es1.c
+++ /dev/null
@@ -1,218 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- **************************************************************************/
-
-
-#include "main/mtypes.h"
-#include "main/context.h"
-#include "main/imports.h"
-#include "main/get.h"
-
-
-extern const GLubyte * GLAPIENTRY _es_GetString(GLenum name);
-
-
-static const GLubyte *
-compute_es_version(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- static const char es_1_0[] = "OpenGL ES-CM 1.0";
- static const char es_1_1[] = "OpenGL ES-CM 1.1";
- /* OpenGL ES 1.0 is derived from OpenGL 1.3 */
- const GLboolean ver_1_0 = (ctx->Extensions.ARB_multisample &&
- ctx->Extensions.ARB_multitexture &&
- ctx->Extensions.ARB_texture_compression &&
- ctx->Extensions.EXT_texture_env_add &&
- ctx->Extensions.ARB_texture_env_combine &&
- ctx->Extensions.ARB_texture_env_dot3);
- /* OpenGL ES 1.1 is derived from OpenGL 1.5 */
- const GLboolean ver_1_1 = (ver_1_0 &&
- ctx->Extensions.EXT_point_parameters &&
- ctx->Extensions.SGIS_generate_mipmap &&
- ctx->Extensions.ARB_vertex_buffer_object);
- if (ver_1_1)
- return (const GLubyte *) es_1_1;
-
- if (!ver_1_0)
- _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support.");
- return (const GLubyte *) es_1_0;
-}
-
-
-static size_t
-append_extension(char **str, const char *ext)
-{
- char *s = *str;
- size_t len = strlen(ext);
-
- if (s) {
- memcpy(s, ext, len);
- s[len++] = ' ';
- s[len] = '\0';
-
- *str += len;
- }
- else {
- len++;
- }
-
- return len;
-}
-
-
-static size_t
-make_extension_string(const GLcontext *ctx, char *str)
-{
- size_t len = 0;
-
- /* Core additions */
- len += append_extension(&str, "GL_OES_byte_coordinates");
- len += append_extension(&str, "GL_OES_fixed_point");
- len += append_extension(&str, "GL_OES_single_precision");
- len += append_extension(&str, "GL_OES_matrix_get");
-
- /* 1.1 required extensions */
- len += append_extension(&str, "GL_OES_read_format");
- len += append_extension(&str, "GL_OES_compressed_paletted_texture");
- len += append_extension(&str, "GL_OES_point_size_array");
- len += append_extension(&str, "GL_OES_point_sprite");
-
- /* 1.1 deprecated extensions */
- len += append_extension(&str, "GL_OES_query_matrix");
-
-#if FEATURE_OES_draw_texture
- if (ctx->Extensions.OES_draw_texture)
- len += append_extension(&str, "GL_OES_draw_texture");
-#endif
-
- if (ctx->Extensions.EXT_blend_equation_separate)
- len += append_extension(&str, "GL_OES_blend_equation_separate");
- if (ctx->Extensions.EXT_blend_func_separate)
- len += append_extension(&str, "GL_OES_blend_func_separate");
- if (ctx->Extensions.EXT_blend_subtract)
- len += append_extension(&str, "GL_OES_blend_subtract");
-
- if (ctx->Extensions.EXT_stencil_wrap)
- len += append_extension(&str, "GL_OES_stencil_wrap");
-
- if (ctx->Extensions.ARB_texture_cube_map)
- len += append_extension(&str, "GL_OES_texture_cube_map");
- if (ctx->Extensions.ARB_texture_env_crossbar)
- len += append_extension(&str, "GL_OES_texture_env_crossbar");
- if (ctx->Extensions.ARB_texture_mirrored_repeat)
- len += append_extension(&str, "GL_OES_texture_mirrored_repeat");
-
- if (ctx->Extensions.ARB_framebuffer_object) {
- len += append_extension(&str, "GL_OES_framebuffer_object");
- len += append_extension(&str, "GL_OES_depth24");
- len += append_extension(&str, "GL_OES_depth32");
- len += append_extension(&str, "GL_OES_fbo_render_mipmap");
- len += append_extension(&str, "GL_OES_rgb8_rgba8");
- len += append_extension(&str, "GL_OES_stencil1");
- len += append_extension(&str, "GL_OES_stencil4");
- len += append_extension(&str, "GL_OES_stencil8");
- }
-
- if (ctx->Extensions.EXT_vertex_array)
- len += append_extension(&str, "GL_OES_element_index_uint");
- if (ctx->Extensions.ARB_vertex_buffer_object)
- len += append_extension(&str, "GL_OES_mapbuffer");
- if (ctx->Extensions.EXT_texture_filter_anisotropic)
- len += append_extension(&str, "GL_EXT_texture_filter_anisotropic");
-
- /* some applications check this for NPOT support */
- if (ctx->Extensions.ARB_texture_non_power_of_two)
- len += append_extension(&str, "GL_ARB_texture_non_power_of_two");
-
- if (ctx->Extensions.EXT_texture_compression_s3tc)
- len += append_extension(&str, "GL_EXT_texture_compression_dxt1");
- if (ctx->Extensions.EXT_texture_lod_bias)
- len += append_extension(&str, "GL_EXT_texture_lod_bias");
- if (ctx->Extensions.EXT_blend_minmax)
- len += append_extension(&str, "GL_EXT_blend_minmax");
- if (ctx->Extensions.EXT_multi_draw_arrays)
- len += append_extension(&str, "GL_EXT_multi_draw_arrays");
-
-#if FEATURE_OES_EGL_image
- if (ctx->Extensions.OES_EGL_image)
- len += append_extension(&str, "GL_OES_EGL_image");
-#endif
-
- return len;
-}
-
-
-static const GLubyte *
-compute_es_extensions(void)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (!ctx->Extensions.String) {
- char *s;
- unsigned int len;
-
- len = make_extension_string(ctx, NULL);
- s = (char *) malloc(len + 1);
- if (!s)
- return NULL;
- make_extension_string(ctx, s);
- ctx->Extensions.String = (const GLubyte *) s;
- }
-
- return ctx->Extensions.String;
-}
-
-
-const GLubyte * GLAPIENTRY
-_es_GetString(GLenum name)
-{
- switch (name) {
- case GL_VERSION:
- return compute_es_version();
- case GL_EXTENSIONS:
- return compute_es_extensions();
- default:
- return _mesa_GetString(name);
- }
-}
-
-
-void
-_mesa_initialize_context_extra(GLcontext *ctx)
-{
- GLuint i;
-
- /**
- * GL_OES_texture_cube_map says
- * "Initially all texture generation modes are set to REFLECTION_MAP_OES"
- */
- for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
- struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
- texUnit->GenS.Mode = GL_REFLECTION_MAP_NV;
- texUnit->GenT.Mode = GL_REFLECTION_MAP_NV;
- texUnit->GenR.Mode = GL_REFLECTION_MAP_NV;
- texUnit->GenS._ModeBit = TEXGEN_REFLECTION_MAP_NV;
- texUnit->GenT._ModeBit = TEXGEN_REFLECTION_MAP_NV;
- texUnit->GenR._ModeBit = TEXGEN_REFLECTION_MAP_NV;
- }
-}
diff --git a/src/mesa/es/main/specials_es2.c b/src/mesa/es/main/specials_es2.c
deleted file mode 100644
index 046cda6fc18..00000000000
--- a/src/mesa/es/main/specials_es2.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- **************************************************************************/
-
-
-#include "main/mtypes.h"
-#include "main/context.h"
-#include "main/imports.h"
-#include "main/get.h"
-
-
-const GLubyte * GLAPIENTRY _es_GetString(GLenum name);
-
-
-static const GLubyte *
-compute_es_version(void)
-{
- GET_CURRENT_CONTEXT(ctx);
- static const char es_2_0[] = "OpenGL ES 2.0";
- /* OpenGL ES 2.0 is derived from OpenGL 2.0 */
- const GLboolean ver_2_0 = (ctx->Extensions.ARB_multisample &&
- ctx->Extensions.ARB_multitexture &&
- ctx->Extensions.ARB_texture_compression &&
- ctx->Extensions.ARB_texture_cube_map &&
- ctx->Extensions.ARB_texture_mirrored_repeat &&
- ctx->Extensions.EXT_blend_color &&
- ctx->Extensions.EXT_blend_func_separate &&
- ctx->Extensions.EXT_blend_minmax &&
- ctx->Extensions.EXT_blend_subtract &&
- ctx->Extensions.EXT_stencil_wrap &&
- ctx->Extensions.ARB_vertex_buffer_object &&
- ctx->Extensions.ARB_shader_objects &&
- ctx->Extensions.ARB_vertex_shader &&
- ctx->Extensions.ARB_fragment_shader &&
- ctx->Extensions.ARB_texture_non_power_of_two &&
- ctx->Extensions.EXT_blend_equation_separate);
- if (!ver_2_0)
- _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support.");
- return (const GLubyte *) es_2_0;
-}
-
-
-static size_t
-append_extension(char **str, const char *ext)
-{
- char *s = *str;
- size_t len = strlen(ext);
-
- if (s) {
- memcpy(s, ext, len);
- s[len++] = ' ';
- s[len] = '\0';
-
- *str += len;
- }
- else {
- len++;
- }
-
- return len;
-}
-
-
-static size_t
-make_extension_string(const GLcontext *ctx, char *str)
-{
- size_t len = 0;
-
- len += append_extension(&str, "GL_OES_compressed_paletted_texture");
-
- if (ctx->Extensions.ARB_framebuffer_object) {
- len += append_extension(&str, "GL_OES_depth24");
- len += append_extension(&str, "GL_OES_depth32");
- len += append_extension(&str, "GL_OES_fbo_render_mipmap");
- len += append_extension(&str, "GL_OES_rgb8_rgba8");
- len += append_extension(&str, "GL_OES_stencil1");
- len += append_extension(&str, "GL_OES_stencil4");
- }
-
- if (ctx->Extensions.EXT_vertex_array)
- len += append_extension(&str, "GL_OES_element_index_uint");
- if (ctx->Extensions.ARB_vertex_buffer_object)
- len += append_extension(&str, "GL_OES_mapbuffer");
-
- if (ctx->Extensions.EXT_texture3D)
- len += append_extension(&str, "GL_OES_texture_3D");
- if (ctx->Extensions.ARB_texture_non_power_of_two)
- len += append_extension(&str, "GL_OES_texture_npot");
- if (ctx->Extensions.EXT_texture_filter_anisotropic)
- len += append_extension(&str, "GL_EXT_texture_filter_anisotropic");
-
- len += append_extension(&str, "GL_EXT_texture_type_2_10_10_10_REV");
- if (ctx->Extensions.ARB_depth_texture)
- len += append_extension(&str, "GL_OES_depth_texture");
- if (ctx->Extensions.EXT_packed_depth_stencil)
- len += append_extension(&str, "GL_OES_packed_depth_stencil");
- if (ctx->Extensions.ARB_fragment_shader)
- len += append_extension(&str, "GL_OES_standard_derivatives");
-
- if (ctx->Extensions.EXT_texture_compression_s3tc)
- len += append_extension(&str, "GL_EXT_texture_compression_dxt1");
- if (ctx->Extensions.EXT_blend_minmax)
- len += append_extension(&str, "GL_EXT_blend_minmax");
- if (ctx->Extensions.EXT_multi_draw_arrays)
- len += append_extension(&str, "GL_EXT_multi_draw_arrays");
-
-#if FEATURE_OES_EGL_image
- if (ctx->Extensions.OES_EGL_image)
- len += append_extension(&str, "GL_OES_EGL_image");
-#endif
-
- return len;
-}
-
-
-static const GLubyte *
-compute_es_extensions(void)
-{
- GET_CURRENT_CONTEXT(ctx);
-
- if (!ctx->Extensions.String) {
- char *s;
- unsigned int len;
-
- len = make_extension_string(ctx, NULL);
- s = (char *) malloc(len + 1);
- if (!s)
- return NULL;
- make_extension_string(ctx, s);
- ctx->Extensions.String = (const GLubyte *) s;
- }
-
- return ctx->Extensions.String;
-}
-
-const GLubyte * GLAPIENTRY
-_es_GetString(GLenum name)
-{
- switch (name) {
- case GL_VERSION:
- return compute_es_version();
- case GL_SHADING_LANGUAGE_VERSION:
- return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16";
- case GL_EXTENSIONS:
- return compute_es_extensions();
- default:
- return _mesa_GetString(name);
- }
-}
-
-
-void
-_mesa_initialize_context_extra(GLcontext *ctx)
-{
- ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
- ctx->VertexProgram._MaintainTnlProgram = GL_TRUE;
-
- ctx->Point.PointSprite = GL_TRUE; /* always on for ES 2.x */
-}
diff --git a/src/mesa/es/main/stubs.c b/src/mesa/es/main/stubs.c
deleted file mode 100644
index b829543cc01..00000000000
--- a/src/mesa/es/main/stubs.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * TUNGSTEN GRAPHICS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- **************************************************************************/
-
-
-/**
- * Temporary stubs for "missing" mesa functions.
- */
-
-
-#include "main/mtypes.h"
-#include "main/imports.h"
-#include "vbo/vbo.h"
-
-#define NEED_IMPLEMENT() do { \
- GET_CURRENT_CONTEXT(ctx); \
- _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); \
- } while (0)
-
-
-/* silence compiler warnings */
-extern void GLAPIENTRY _vbo_Materialf(GLenum face, GLenum pname, GLfloat param);
-extern void GLAPIENTRY _mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
-extern void GLAPIENTRY _mesa_ReleaseShaderCompiler(void);
-extern void GLAPIENTRY _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLint length);
-extern void GLAPIENTRY _vbo_VertexAttrib1f(GLuint indx, GLfloat x);
-extern void GLAPIENTRY _vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values);
-extern void GLAPIENTRY _vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);
-extern void GLAPIENTRY _vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values);
-extern void GLAPIENTRY _vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
-extern void GLAPIENTRY _vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values);
-extern void GLAPIENTRY _vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values);
-
-
-void GLAPIENTRY
-_vbo_Materialf(GLenum face, GLenum pname, GLfloat param)
-{
- _vbo_Materialfv(face, pname, &param);
-}
-
-
-void GLAPIENTRY
-_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype,
- GLint* range, GLint* precision)
-{
- NEED_IMPLEMENT();
-}
-
-
-void GLAPIENTRY
-_mesa_ReleaseShaderCompiler(void)
-{
- NEED_IMPLEMENT();
-}
-
-
-void GLAPIENTRY
-_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,
- const void* binary, GLint length)
-{
- NEED_IMPLEMENT();
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib1f(GLuint indx, GLfloat x)
-{
- _vbo_VertexAttrib4f(indx, x, 0.0, 0.0, 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values)
-{
- _vbo_VertexAttrib4f(indx, values[0], 0.0, 0.0, 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
-{
- _vbo_VertexAttrib4f(indx, x, y, 0.0, 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values)
-{
- _vbo_VertexAttrib4f(indx, values[0], values[1], 0.0, 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
-{
- _vbo_VertexAttrib4f(indx, x, y, z, 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values)
-{
- _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], 1.0f);
-}
-
-
-void GLAPIENTRY
-_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values)
-{
- _vbo_VertexAttrib4f(indx, values[0], values[1], values[2], values[3]);
-}
diff --git a/src/mesa/es/sources.mak b/src/mesa/es/sources.mak
index 55bb31b80dd..9bb7a6ff38c 100644
--- a/src/mesa/es/sources.mak
+++ b/src/mesa/es/sources.mak
@@ -1,45 +1,13 @@
include $(MESA)/sources.mak
-# LOCAL sources
-
-LOCAL_ES1_SOURCES := \
- main/api_exec_es1.c \
- main/get_es1.c \
- main/specials_es1.c \
- main/drawtex.c \
- main/es_cpaltex.c \
- main/es_enable.c \
- main/es_fbo.c \
- main/es_query_matrix.c \
- main/es_texgen.c \
- main/stubs.c \
- glapi/glapi-es1/main/enums.c
-
-LOCAL_ES1_GALLIUM_SOURCES := \
- $(LOCAL_ES1_SOURCES) \
- state_tracker/st_cb_drawtex.c
-
# always use local version of GLAPI_ASM_SOURCES
LOCAL_ES1_API_ASM := $(addprefix glapi/glapi-es1/, $(GLAPI_ASM_SOURCES))
LOCAL_ES1_INCLUDES := \
-I. \
-I./glapi/glapi-es1 \
- -I./state_tracker \
-I$(MESA)/state_tracker
-LOCAL_ES2_SOURCES := \
- main/api_exec_es2.c \
- main/get_es2.c \
- main/specials_es2.c \
- main/es_cpaltex.c \
- main/es_fbo.c \
- main/stubs.c \
- glapi/glapi-es2/main/enums.c
-
-LOCAL_ES2_GALLIUM_SOURCES := \
- $(LOCAL_ES2_SOURCES)
-
LOCAL_ES2_API_ASM := $(subst es1,es2, $(LOCAL_ES1_API_ASM))
LOCAL_ES2_INCLUDES := $(subst es1,es2, $(LOCAL_ES1_INCLUDES))
@@ -50,7 +18,6 @@ MAIN_OMITTED := \
main/api_exec.c \
main/condrender.c \
main/dlopen.c \
- main/enums.c \
main/get.c
MAIN_SOURCES := $(filter-out $(MAIN_OMITTED), $(MAIN_SOURCES))
@@ -101,10 +68,6 @@ MESA_ES1_API_SOURCES := \
MESA_ES1_INCLUDES := $(INCLUDE_DIRS)
-# remove LOCAL sources from MESA sources
-MESA_ES1_SOURCES := $(filter-out $(LOCAL_ES1_SOURCES), $(MESA_ES1_SOURCES))
-MESA_ES1_GALLIUM_SOURCES := $(filter-out $(LOCAL_ES1_GALLIUM_SOURCES), $(MESA_ES1_GALLIUM_SOURCES))
-
# right now es2 and es1 share MESA sources
MESA_ES2_SOURCES := $(MESA_ES1_SOURCES)
MESA_ES2_GALLIUM_SOURCES := $(MESA_ES1_GALLIUM_SOURCES)
@@ -116,12 +79,12 @@ MESA_ES2_INCLUDES := $(MESA_ES1_INCLUDES)
MESA_ES_ASM := $(MESA_ASM_SOURCES)
# collect sources, adjust the pathes
-ES1_SOURCES := $(LOCAL_ES1_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_SOURCES))
-ES1_GALLIUM_SOURCES := $(LOCAL_ES1_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES))
+ES1_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_SOURCES))
+ES1_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES))
ES1_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_API_SOURCES))
-ES2_SOURCES := $(LOCAL_ES2_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_SOURCES))
-ES2_GALLIUM_SOURCES := $(LOCAL_ES2_GALLIUM_SOURCES) $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES))
+ES2_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_SOURCES))
+ES2_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES))
ES2_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_API_SOURCES))
# collect includes
@@ -130,12 +93,10 @@ ES2_INCLUDES := $(LOCAL_ES2_INCLUDES) $(MESA_ES2_INCLUDES)
# collect objects, including asm
ES1_OBJECTS := \
- $(LOCAL_ES1_SOURCES:.c=.o) \
$(MESA_ES1_SOURCES:.c=.o) \
$(MESA_ES_ASM:.S=.o)
ES1_GALLIUM_OBJECTS := \
- $(LOCAL_ES1_GALLIUM_SOURCES:.c=.o) \
$(MESA_ES1_GALLIUM_SOURCES:.c=.o) \
$(MESA_ES_ASM:.S=.o)
@@ -144,12 +105,10 @@ ES1_API_OBJECTS := \
$(MESA_ES1_API_SOURCES:.c=.o)
ES2_OBJECTS := \
- $(LOCAL_ES2_SOURCES:.c=.o) \
$(MESA_ES2_SOURCES:.c=.o) \
$(MESA_ES_ASM:.S=.o)
ES2_GALLIUM_OBJECTS := \
- $(LOCAL_ES2_GALLIUM_SOURCES:.c=.o) \
$(MESA_ES2_GALLIUM_SOURCES:.c=.o) \
$(MESA_ES_ASM:.S=.o)
diff --git a/src/mesa/glapi/gen/Makefile b/src/mesa/glapi/gen/Makefile
index 84600bdd980..10998b2ce23 100644
--- a/src/mesa/glapi/gen/Makefile
+++ b/src/mesa/glapi/gen/Makefile
@@ -151,8 +151,10 @@ $(MESA_DIR)/sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
######################################################################
-$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON)
- $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
+ $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
+ -f $(MESA_DIR)/es/glapi/es1_API.xml \
+ -f $(MESA_DIR)/es/glapi/es2_API.xml > $@
$(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
$(PYTHON2) $(PYTHON_FLAGS) $< > $@
diff --git a/src/mesa/glapi/gen/gl_enums.py b/src/mesa/glapi/gen/gl_enums.py
index 3a9ea3c86c7..644e0855229 100644
--- a/src/mesa/glapi/gen/gl_enums.py
+++ b/src/mesa/glapi/gen/gl_enums.py
@@ -151,8 +151,10 @@ int _mesa_lookup_enum_by_name( const char *symbol )
return
- def printBody(self, api):
- self.process_enums( api )
+ def printBody(self, api_list):
+ self.enum_table = {}
+ for api in api_list:
+ self.process_enums( api )
keys = self.enum_table.keys()
keys.sort()
@@ -209,16 +211,20 @@ int _mesa_lookup_enum_by_name( const char *symbol )
def process_enums(self, api):
- self.enum_table = {}
-
for obj in api.enumIterateByName():
if obj.value not in self.enum_table:
self.enum_table[ obj.value ] = []
+ enum = self.enum_table[ obj.value ]
name = "GL_" + obj.name
priority = obj.priority()
- self.enum_table[ obj.value ].append( [name, priority] )
+ already_in = False;
+ for n, p in enum:
+ if n == name:
+ already_in = True
+ if not already_in:
+ enum.append( [name, priority] )
def show_usage():
@@ -226,18 +232,16 @@ def show_usage():
sys.exit(1)
if __name__ == '__main__':
- file_name = "gl_API.xml"
-
try:
(args, trail) = getopt.getopt(sys.argv[1:], "f:")
except Exception,e:
show_usage()
+ api_list = []
for (arg,val) in args:
if arg == "-f":
- file_name = val
-
- api = gl_XML.parse_GL_API( file_name )
+ api = gl_XML.parse_GL_API( val )
+ api_list.append(api);
printer = PrintGlEnums()
- printer.Print( api )
+ printer.Print( api_list )
diff --git a/src/mesa/glapi/gen/remap_helper.py b/src/mesa/glapi/gen/remap_helper.py
index 8b50526d2b0..69b8e5e9d02 100644
--- a/src/mesa/glapi/gen/remap_helper.py
+++ b/src/mesa/glapi/gen/remap_helper.py
@@ -65,17 +65,12 @@ class PrintGlRemap(gl_XML.gl_print_base):
def printRealHeader(self):
print '#include "main/dispatch.h"'
+ print '#include "main/remap.h"'
print ''
return
def printBody(self, api):
- print 'struct gl_function_remap {'
- print ' GLint func_index;'
- print ' GLint dispatch_offset; /* for sanity check */'
- print '};'
- print ''
-
pool_indices = {}
print '/* this is internal to remap.c */'
@@ -108,10 +103,7 @@ class PrintGlRemap(gl_XML.gl_print_base):
print ''
print '/* these functions need to be remapped */'
- print 'static const struct {'
- print ' GLint pool_index;'
- print ' GLint remap_index;'
- print '} MESA_remap_table_functions[] = {'
+ print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {'
# output all functions that need to be remapped
# iterate by offsets so that they are sorted by remap indices
for f in api.functionIterateByOffset():
diff --git a/src/mesa/glesv1_cm.pc.in b/src/mesa/glesv1_cm.pc.in
new file mode 100644
index 00000000000..e9c22222041
--- /dev/null
+++ b/src/mesa/glesv1_cm.pc.in
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: glesv1_cm
+Description: Mesa OpenGL ES 1.0 CM library
+Requires.private: @GLESv1_CM_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@GLESv1_CM_LIB@
+Libs.private: @GLESv1_CM_PC_LIB_PRIV@
+Cflags: -I${includedir} @GLESv1_CM_PC_CFLAGS@
diff --git a/src/mesa/glesv2.pc.in b/src/mesa/glesv2.pc.in
new file mode 100644
index 00000000000..3b747cbee77
--- /dev/null
+++ b/src/mesa/glesv2.pc.in
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: glesv2
+Description: Mesa OpenGL ES 2.0 library
+Requires.private: @GLESv2_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@GLESv2_LIB@
+Libs.private: @GLESv2_PC_LIB_PRIV@
+Cflags: -I${includedir} @GLESv2_PC_CFLAGS@
diff --git a/src/mesa/es/main/APIspec.dtd b/src/mesa/main/APIspec.dtd
index efcfa31f10e..efcfa31f10e 100644
--- a/src/mesa/es/main/APIspec.dtd
+++ b/src/mesa/main/APIspec.dtd
diff --git a/src/mesa/es/main/APIspec.py b/src/mesa/main/APIspec.py
index 6947f7301cd..6947f7301cd 100644
--- a/src/mesa/es/main/APIspec.py
+++ b/src/mesa/main/APIspec.py
diff --git a/src/mesa/es/main/APIspec.xml b/src/mesa/main/APIspec.xml
index 17665d8df5b..268bd5d3db2 100644
--- a/src/mesa/es/main/APIspec.xml
+++ b/src/mesa/main/APIspec.xml
@@ -3921,8 +3921,8 @@
<function name="ColorMask" template="ColorMask"/>
<function name="DepthMask" template="DepthMask"/>
- <function name="Disable" external="true" template="Disable"/>
- <function name="Enable" external="true" template="Enable"/>
+ <function name="Disable" template="Disable"/>
+ <function name="Enable" template="Enable"/>
<function name="Finish" template="Finish"/>
<function name="Flush" template="Flush"/>
@@ -3939,15 +3939,15 @@
<function name="PixelStorei" template="PixelStore" gltype="GLint"/>
<function name="ReadPixels" template="ReadPixels"/>
- <function name="GetBooleanv" template="GetState" gltype="GLboolean"/>
+ <function name="GetBooleanv" default_prefix="_es1_" template="GetState" gltype="GLboolean"/>
<function name="GetClipPlanef" template="GetClipPlane" gltype="GLfloat"/>
<function name="GetClipPlanex" template="GetClipPlane" gltype="GLfixed"/>
<function name="GetError" template="GetError"/>
- <function name="GetFloatv" template="GetState" gltype="GLfloat"/>
- <function name="GetFixedv" template="GetState" gltype="GLfixed"/>
- <function name="GetIntegerv" template="GetState" gltype="GLint"/>
+ <function name="GetFloatv" default_prefix="_es1_" template="GetState" gltype="GLfloat"/>
+ <function name="GetFixedv" default_prefix="_es1_" template="GetState" gltype="GLfixed"/>
+ <function name="GetIntegerv" default_prefix="_es1_" template="GetState" gltype="GLint"/>
<function name="GetLightfv" template="GetLight" gltype="GLfloat"/>
<function name="GetLightxv" template="GetLight" gltype="GLfixed"/>
@@ -3955,7 +3955,7 @@
<function name="GetMaterialfv" template="GetMaterial" gltype="GLfloat"/>
<function name="GetMaterialxv" template="GetMaterial" gltype="GLfixed"/>
- <function name="GetString" external="true" template="GetString"/>
+ <function name="GetString" template="GetString"/>
<function name="GetTexEnvfv" template="GetTexEnv" gltype="GLfloat"/>
<function name="GetTexEnviv" template="GetTexEnv" gltype="GLint"/>
@@ -3969,7 +3969,7 @@
<function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/>
<function name="GetTexParameterxv" template="GetTexParameter" gltype="GLfixed"/>
- <function name="IsEnabled" external="true" template="IsEnabled"/>
+ <function name="IsEnabled" template="IsEnabled"/>
<function name="DepthRangef" template="DepthRange" gltype="GLclampf"/>
<function name="DepthRangex" template="DepthRange" gltype="GLclampx"/>
@@ -4040,7 +4040,7 @@
<!-- CompressedTexImage2D calls out to two different functions based on
whether the image is a paletted image or not -->
- <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/>
+ <function name="CompressedTexImage2D" template="CompressedTexImage2D"/>
<function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
<function name="BlendFuncSeparateOES" template="BlendFuncSeparate"/>
@@ -4173,12 +4173,12 @@
<function name="PixelStorei" template="PixelStore" gltype="GLint"/>
<function name="ReadPixels" template="ReadPixels"/>
- <function name="GetBooleanv" template="GetState" gltype="GLboolean"/>
+ <function name="GetBooleanv" default_prefix="_es2_" template="GetState" gltype="GLboolean"/>
<function name="GetError" template="GetError"/>
- <function name="GetFloatv" template="GetState" gltype="GLfloat"/>
- <function name="GetIntegerv" template="GetState" gltype="GLint"/>
+ <function name="GetFloatv" default_prefix="_es2_" template="GetState" gltype="GLfloat"/>
+ <function name="GetIntegerv" default_prefix="_es2_" template="GetState" gltype="GLint"/>
- <function name="GetString" external="true" template="GetString"/>
+ <function name="GetString" template="GetString"/>
<function name="GetTexParameterfv" template="GetTexParameter" gltype="GLfloat"/>
<function name="GetTexParameteriv" template="GetTexParameter" gltype="GLint"/>
@@ -4217,7 +4217,7 @@
<function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/>
- <function name="CompressedTexImage2D" external="true" template="CompressedTexImage2D"/>
+ <function name="CompressedTexImage2D" template="CompressedTexImage2D"/>
<function name="CompressedTexSubImage2D" template="CompressedTexSubImage2D"/>
<function name="BlendFuncSeparate" template="BlendFuncSeparate"/>
diff --git a/src/mesa/es/main/APIspecutil.py b/src/mesa/main/APIspecutil.py
index 27a8fe8a6d4..9e604bb84b3 100644
--- a/src/mesa/es/main/APIspecutil.py
+++ b/src/mesa/main/APIspecutil.py
@@ -222,6 +222,13 @@ def Parameters(funcname):
return params
+def FunctionPrefix(funcname):
+ """Return function specific prefix."""
+ func = __functions[funcname]
+
+ return func.prefix
+
+
def FindParamIndex(params, paramname):
"""Find the index of a named parameter."""
for i in xrange(len(params)):
diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c
index 1e1aa416118..f838561aef3 100644
--- a/src/mesa/main/api_exec.c
+++ b/src/mesa/main/api_exec.c
@@ -107,6 +107,44 @@
#endif
#include "main/dispatch.h"
+#ifdef _GLAPI_USE_REMAP_TABLE
+
+#define need_MESA_remap_table
+#include "main/remap.h"
+#include "main/remap_helper.h"
+
+/* This is shared across all APIs but We define this here since
+ * desktop GL has the biggest remap table. */
+int driDispatchRemapTable[driDispatchRemapTable_size];
+
+/**
+ * Map the functions which are already static.
+ *
+ * When a extension function are incorporated into the ABI, the
+ * extension suffix is usually stripped. Mapping such functions
+ * makes sure the alternative names are available.
+ *
+ * Note that functions mapped by _mesa_init_remap_table() are
+ * excluded.
+ */
+void
+_mesa_map_static_functions(void)
+{
+ /* Remap static functions which have alternative names and are in the ABI.
+ * This is to be on the safe side. glapi should have defined those names.
+ */
+ _mesa_map_function_array(MESA_alt_functions);
+}
+
+void
+_mesa_init_remap_table(void)
+{
+ _mesa_do_init_remap_table(_mesa_function_pool,
+ driDispatchRemapTable_size,
+ MESA_remap_table_functions);
+}
+
+#endif /* _GLAPI_USE_REMAP_TABLE */
/**
@@ -119,9 +157,15 @@
* \param ctx GL context to which \c exec belongs.
* \param exec dispatch table.
*/
-void
-_mesa_init_exec_table(struct _glapi_table *exec)
+struct _glapi_table *
+_mesa_create_exec_table(void)
{
+ struct _glapi_table *exec;
+
+ exec = _mesa_alloc_dispatch_table(sizeof *exec);
+ if (exec == NULL)
+ return NULL;
+
#if _HAVE_FULL_GL
_mesa_loopback_init_api_table( exec );
#endif
@@ -777,4 +821,6 @@ _mesa_init_exec_table(struct _glapi_table *exec)
SET_ObjectUnpurgeableAPPLE(exec, _mesa_ObjectUnpurgeableAPPLE);
SET_GetObjectParameterivAPPLE(exec, _mesa_GetObjectParameterivAPPLE);
#endif
+
+ return exec;
}
diff --git a/src/mesa/main/api_exec.h b/src/mesa/main/api_exec.h
index 4bd715053ab..29c953f31be 100644
--- a/src/mesa/main/api_exec.h
+++ b/src/mesa/main/api_exec.h
@@ -29,9 +29,17 @@
struct _glapi_table;
+extern struct _glapi_table *
+_mesa_alloc_dispatch_table(int size);
-extern void
-_mesa_init_exec_table(struct _glapi_table *exec);
+extern struct _glapi_table *
+_mesa_create_exec_table(void);
+
+extern struct _glapi_table *
+_mesa_create_exec_table_es1(void);
+
+extern struct _glapi_table *
+_mesa_create_exec_table_es2(void);
#endif
diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h
index 30b48e4bd08..84f7665fc07 100644
--- a/src/mesa/main/config.h
+++ b/src/mesa/main/config.h
@@ -250,7 +250,7 @@
/** For GL_ARB_draw_buffers */
/*@{*/
-#define MAX_DRAW_BUFFERS 4
+#define MAX_DRAW_BUFFERS 8
/*@}*/
diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
index 1707e229c91..4dd448a698d 100644
--- a/src/mesa/main/context.c
+++ b/src/mesa/main/context.c
@@ -129,8 +129,6 @@
#include "version.h"
#include "viewport.h"
#include "vtxfmt.h"
-#include "glapi/glthread.h"
-#include "glapi/glapitable.h"
#include "shader/program.h"
#include "shader/prog_print.h"
#include "shader/shader_api.h"
@@ -396,7 +394,25 @@ one_time_init( GLcontext *ctx )
_mesa_get_cpu_features();
- _mesa_init_remap_table();
+ switch (ctx->API) {
+#if FEATURE_GL
+ case API_OPENGL:
+ _mesa_init_remap_table();
+ break;
+#endif
+#if FEATURE_ES1
+ case API_OPENGLES:
+ _mesa_init_remap_table_es1();
+ break;
+#endif
+#if FEATURE_ES2
+ case API_OPENGLES2:
+ _mesa_init_remap_table_es2();
+ break;
+#endif
+ default:
+ break;
+ }
_mesa_init_sqrt_table();
@@ -636,6 +652,9 @@ check_context_limits(GLcontext *ctx)
assert(ctx->Const.MaxDrawBuffers <= MAX_DRAW_BUFFERS);
+ /* if this fails, add more enum values to gl_buffer_index */
+ assert(BUFFER_COLOR0 + MAX_DRAW_BUFFERS <= BUFFER_COUNT);
+
/* XXX probably add more tests */
}
@@ -749,8 +768,8 @@ generic_nop(void)
/**
* Allocate and initialize a new dispatch table.
*/
-static struct _glapi_table *
-alloc_dispatch_table(void)
+struct _glapi_table *
+_mesa_alloc_dispatch_table(int size)
{
/* Find the larger of Mesa's dispatch table and libGL's dispatch table.
* In practice, this'll be the same for stand-alone Mesa. But for DRI
@@ -758,7 +777,7 @@ alloc_dispatch_table(void)
* DRI drivers.
*/
GLint numEntries = MAX2(_glapi_get_dispatch_table_size(),
- sizeof(struct _glapi_table) / sizeof(_glapi_proc));
+ size / sizeof(_glapi_proc));
struct _glapi_table *table =
(struct _glapi_table *) malloc(numEntries * sizeof(_glapi_proc));
if (table) {
@@ -791,6 +810,7 @@ alloc_dispatch_table(void)
* for debug flags.
*
* \param ctx the context to initialize
+ * \param api the GL API type to create the context for
* \param visual describes the visual attributes for this context
* \param share_list points to context to share textures, display lists,
* etc with, or NULL
@@ -799,27 +819,30 @@ alloc_dispatch_table(void)
* \param driverContext pointer to driver-specific context data
*/
GLboolean
-_mesa_initialize_context(GLcontext *ctx,
- const GLvisual *visual,
- GLcontext *share_list,
- const struct dd_function_table *driverFunctions,
- void *driverContext)
+_mesa_initialize_context_for_api(GLcontext *ctx,
+ gl_api api,
+ const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext)
{
struct gl_shared_state *shared;
+ int i;
/*ASSERT(driverContext);*/
assert(driverFunctions->NewTextureObject);
assert(driverFunctions->FreeTexImageData);
- /* misc one-time initializations */
- one_time_init(ctx);
-
+ ctx->API = api;
ctx->Visual = *visual;
ctx->DrawBuffer = NULL;
ctx->ReadBuffer = NULL;
ctx->WinSysDrawBuffer = NULL;
ctx->WinSysReadBuffer = NULL;
+ /* misc one-time initializations */
+ one_time_init(ctx);
+
/* Plug in driver functions and context pointer here.
* This is important because when we call alloc_shared_state() below
* we'll call ctx->Driver.NewTextureObject() to create the default
@@ -849,30 +872,36 @@ _mesa_initialize_context(GLcontext *ctx,
return GL_FALSE;
}
+#if FEATURE_dispatch
/* setup the API dispatch tables */
- ctx->Exec = alloc_dispatch_table();
- ctx->Save = alloc_dispatch_table();
- if (!ctx->Exec || !ctx->Save) {
+ switch (ctx->API) {
+#if FEATURE_GL
+ case API_OPENGL:
+ ctx->Exec = _mesa_create_exec_table();
+ break;
+#endif
+#if FEATURE_ES1
+ case API_OPENGLES:
+ ctx->Exec = _mesa_create_exec_table_es1();
+ break;
+#endif
+#if FEATURE_ES2
+ case API_OPENGLES2:
+ ctx->Exec = _mesa_create_exec_table_es2();
+ break;
+#endif
+ default:
+ _mesa_problem(ctx, "unknown or unsupported API");
+ break;
+ }
+
+ if (!ctx->Exec) {
_mesa_release_shared_state(ctx, ctx->Shared);
- if (ctx->Exec)
- free(ctx->Exec);
return GL_FALSE;
}
-#if FEATURE_dispatch
- _mesa_init_exec_table(ctx->Exec);
#endif
ctx->CurrentDispatch = ctx->Exec;
-#if FEATURE_dlist
- _mesa_init_save_table(ctx->Save);
- _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt );
-#endif
-
- /* Neutral tnl module stuff */
- _mesa_init_exec_vtxfmt( ctx );
- ctx->TnlModule.Current = NULL;
- ctx->TnlModule.SwapCount = 0;
-
ctx->FragmentProgram._MaintainTexEnvProgram
= (_mesa_getenv("MESA_TEX_PROG") != NULL);
@@ -883,15 +912,65 @@ _mesa_initialize_context(GLcontext *ctx,
ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
}
-#if FEATURE_extra_context_init
- _mesa_initialize_context_extra(ctx);
+ switch (ctx->API) {
+ case API_OPENGL:
+ /* Neutral tnl module stuff */
+ _mesa_init_exec_vtxfmt( ctx );
+ ctx->TnlModule.Current = NULL;
+ ctx->TnlModule.SwapCount = 0;
+
+#if FEATURE_dlist
+ ctx->Save = _mesa_create_save_table();
+ if (!ctx->Save) {
+ _mesa_release_shared_state(ctx, ctx->Shared);
+ free(ctx->Exec);
+ return GL_FALSE;
+ }
+
+ _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt );
#endif
+ break;
+ case API_OPENGLES:
+ /**
+ * GL_OES_texture_cube_map says
+ * "Initially all texture generation modes are set to REFLECTION_MAP_OES"
+ */
+ for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
+ struct gl_texture_unit *texUnit = &ctx->Texture.Unit[i];
+ texUnit->GenS.Mode = GL_REFLECTION_MAP_NV;
+ texUnit->GenT.Mode = GL_REFLECTION_MAP_NV;
+ texUnit->GenR.Mode = GL_REFLECTION_MAP_NV;
+ texUnit->GenS._ModeBit = TEXGEN_REFLECTION_MAP_NV;
+ texUnit->GenT._ModeBit = TEXGEN_REFLECTION_MAP_NV;
+ texUnit->GenR._ModeBit = TEXGEN_REFLECTION_MAP_NV;
+ }
+ break;
+ case API_OPENGLES2:
+ ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
+ ctx->VertexProgram._MaintainTnlProgram = GL_TRUE;
+ ctx->Point.PointSprite = GL_TRUE; /* always on for ES 2.x */
+ break;
+ }
ctx->FirstTimeCurrent = GL_TRUE;
return GL_TRUE;
}
+GLboolean
+_mesa_initialize_context(GLcontext *ctx,
+ const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext)
+{
+ return _mesa_initialize_context_for_api(ctx,
+ API_OPENGL,
+ visual,
+ share_list,
+ driverFunctions,
+ driverContext);
+}
/**
* Allocate and initialize a GLcontext structure.
@@ -899,6 +978,7 @@ _mesa_initialize_context(GLcontext *ctx,
* we need to at least call driverFunctions->NewTextureObject to initialize
* the rendering context.
*
+ * \param api the GL API type to create the context for
* \param visual a GLvisual pointer (we copy the struct contents)
* \param share_list another context to share display lists with or NULL
* \param driverFunctions points to the dd_function_table into which the
@@ -908,10 +988,11 @@ _mesa_initialize_context(GLcontext *ctx,
* \return pointer to a new __GLcontextRec or NULL if error.
*/
GLcontext *
-_mesa_create_context(const GLvisual *visual,
- GLcontext *share_list,
- const struct dd_function_table *driverFunctions,
- void *driverContext)
+_mesa_create_context_for_api(gl_api api,
+ const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext)
{
GLcontext *ctx;
@@ -922,8 +1003,8 @@ _mesa_create_context(const GLvisual *visual,
if (!ctx)
return NULL;
- if (_mesa_initialize_context(ctx, visual, share_list,
- driverFunctions, driverContext)) {
+ if (_mesa_initialize_context_for_api(ctx, api, visual, share_list,
+ driverFunctions, driverContext)) {
return ctx;
}
else {
@@ -932,6 +1013,17 @@ _mesa_create_context(const GLvisual *visual,
}
}
+GLcontext *
+_mesa_create_context(const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext)
+{
+ return _mesa_create_context_for_api(API_OPENGL, visual,
+ share_list,
+ driverFunctions,
+ driverContext);
+}
/**
* Free the data associated with the given context.
diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
index 09bf1777dab..c9f4d433a57 100644
--- a/src/mesa/main/context.h
+++ b/src/mesa/main/context.h
@@ -112,8 +112,20 @@ _mesa_initialize_context( GLcontext *ctx,
const struct dd_function_table *driverFunctions,
void *driverContext );
-extern void
-_mesa_initialize_context_extra(GLcontext *ctx);
+extern GLcontext *
+_mesa_create_context_for_api(gl_api api,
+ const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext);
+
+extern GLboolean
+_mesa_initialize_context_for_api(GLcontext *ctx,
+ gl_api api,
+ const GLvisual *visual,
+ GLcontext *share_list,
+ const struct dd_function_table *driverFunctions,
+ void *driverContext);
extern void
_mesa_free_context_data( GLcontext *ctx );
diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 9bcfc1008a8..526145aeccf 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -315,7 +315,7 @@ write_texture_image(struct gl_texture_object *texObj,
buffer, texObj, img);
/* make filename */
- sprintf(s, "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face);
+ _mesa_snprintf(s, sizeof(s), "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face);
printf(" Writing image level %u to %s\n", level, s);
write_ppm(s, buffer, img->Width, img->Height, 4, 0, 1, 2, GL_FALSE);
@@ -357,7 +357,7 @@ write_renderbuffer_image(const struct gl_renderbuffer *rb)
format, type, &ctx->DefaultPacking, buffer);
/* make filename */
- sprintf(s, "/tmp/renderbuffer%u.ppm", rb->Name);
+ _mesa_snprintf(s, sizeof(s), "/tmp/renderbuffer%u.ppm", rb->Name);
printf(" Writing renderbuffer image to %s\n", s);
write_ppm(s, buffer, rb->Width, rb->Height, 4, 0, 1, 2, GL_TRUE);
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index f869a585d6b..0c162f081aa 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -32,6 +32,7 @@
#include "glheader.h"
#include "imports.h"
#include "api_arrayelt.h"
+#include "api_exec.h"
#include "api_loopback.h"
#include "config.h"
#include "mfeatures.h"
@@ -7725,7 +7726,7 @@ execute_list(GLcontext *ctx, GLuint list)
default:
{
char msg[1000];
- sprintf(msg, "Error in execute_list: opcode=%d",
+ _mesa_snprintf(msg, sizeof(msg), "Error in execute_list: opcode=%d",
(int) opcode);
_mesa_problem(ctx, msg);
}
@@ -8747,9 +8748,15 @@ exec_MultiModeDrawElementsIBM(const GLenum * mode,
* initialized from _mesa_init_api_defaults and from the active vtxfmt
* struct.
*/
-void
-_mesa_init_save_table(struct _glapi_table *table)
+struct _glapi_table *
+_mesa_create_save_table(void)
{
+ struct _glapi_table *table;
+
+ table = _mesa_alloc_dispatch_table(sizeof *table);
+ if (table == NULL)
+ return NULL;
+
_mesa_loopback_init_api_table(table);
/* GL 1.0 */
@@ -9349,6 +9356,8 @@ _mesa_init_save_table(struct _glapi_table *table)
(void) save_ClearBufferfv;
(void) save_ClearBufferfi;
#endif
+
+ return table;
}
diff --git a/src/mesa/main/dlist.h b/src/mesa/main/dlist.h
index f37a93a7f4b..f8255facc5e 100644
--- a/src/mesa/main/dlist.h
+++ b/src/mesa/main/dlist.h
@@ -72,7 +72,7 @@ extern void _mesa_delete_list(GLcontext *ctx, struct gl_display_list *dlist);
extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt );
-extern void _mesa_init_save_table( struct _glapi_table *table );
+extern struct _glapi_table *_mesa_create_save_table(void);
extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp,
const GLvertexformat *vfmt);
diff --git a/src/mesa/es/main/drawtex.c b/src/mesa/main/drawtex.c
index 42f44093972..86d5b555e0f 100644
--- a/src/mesa/es/main/drawtex.c
+++ b/src/mesa/main/drawtex.c
@@ -21,7 +21,7 @@
* DEALINGS IN THE SOFTWARE.
*/
-#include "drawtex.h"
+#include "main/drawtex.h"
#include "main/state.h"
#include "main/imports.h"
@@ -130,19 +130,4 @@ _mesa_DrawTexxv(const GLfixed *coords)
(GLfloat) coords[4] / 65536.0f);
}
-
-void
-_mesa_init_drawtex_dispatch(struct _glapi_table *disp)
-{
- SET_DrawTexfOES(disp, _mesa_DrawTexf);
- SET_DrawTexfvOES(disp, _mesa_DrawTexfv);
- SET_DrawTexiOES(disp, _mesa_DrawTexi);
- SET_DrawTexivOES(disp, _mesa_DrawTexiv);
- SET_DrawTexsOES(disp, _mesa_DrawTexs);
- SET_DrawTexsvOES(disp, _mesa_DrawTexsv);
- SET_DrawTexxOES(disp, _mesa_DrawTexx);
- SET_DrawTexxvOES(disp, _mesa_DrawTexxv);
-}
-
-
#endif /* FEATURE_OES_draw_texture */
diff --git a/src/mesa/es/main/drawtex.h b/src/mesa/main/drawtex.h
index 0f3bac38c77..95f4ac86f07 100644
--- a/src/mesa/es/main/drawtex.h
+++ b/src/mesa/main/drawtex.h
@@ -59,18 +59,10 @@ _mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
extern void GLAPIENTRY
_mesa_DrawTexxv(const GLfixed *coords);
-extern void
-_mesa_init_drawtex_dispatch(struct _glapi_table *disp);
-
#else /* FEATURE_OES_draw_texture */
#define _MESA_INIT_DRAWTEX_FUNCTIONS(driver, impl) do { } while (0)
-static INLINE void
-_mesa_init_drawtex_dispatch(struct _glapi_table *disp)
-{
-}
-
#endif /* FEATURE_OES_draw_texture */
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
index 72787226dc4..db30123c0fb 100644
--- a/src/mesa/main/enable.c
+++ b/src/mesa/main/enable.c
@@ -682,6 +682,25 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state)
}
break;
+#if FEATURE_ES1
+ case GL_TEXTURE_GEN_STR_OES:
+ /* disable S, T, and R at the same time */
+ {
+ struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
+ if (texUnit) {
+ GLuint newenabled =
+ texUnit->TexGenEnabled & ~STR_BITS;
+ if (state)
+ newenabled |= STR_BITS;
+ if (texUnit->TexGenEnabled == newenabled)
+ return;
+ FLUSH_VERTICES(ctx, _NEW_TEXTURE);
+ texUnit->TexGenEnabled = newenabled;
+ }
+ }
+ break;
+#endif
+
/*
* CLIENT STATE!!!
*/
@@ -1301,6 +1320,15 @@ _mesa_IsEnabled( GLenum cap )
}
}
return GL_FALSE;
+#if FEATURE_ES1
+ case GL_TEXTURE_GEN_STR_OES:
+ {
+ const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx);
+ if (texUnit) {
+ return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS ? GL_TRUE : GL_FALSE;
+ }
+ }
+#endif
/*
* CLIENT STATE!!!
diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c
index 45f6a64356a..13705b9f671 100644
--- a/src/mesa/main/enums.c
+++ b/src/mesa/main/enums.c
@@ -109,6 +109,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_BACK_RIGHT\0"
"GL_BGR\0"
"GL_BGRA\0"
+ "GL_BGRA_EXT\0"
"GL_BITMAP\0"
"GL_BITMAP_TOKEN\0"
"GL_BLEND\0"
@@ -116,16 +117,23 @@ LONGSTRING static const char enum_string_table[] =
"GL_BLEND_COLOR_EXT\0"
"GL_BLEND_DST\0"
"GL_BLEND_DST_ALPHA\0"
+ "GL_BLEND_DST_ALPHA_OES\0"
"GL_BLEND_DST_RGB\0"
+ "GL_BLEND_DST_RGB_OES\0"
"GL_BLEND_EQUATION\0"
"GL_BLEND_EQUATION_ALPHA\0"
"GL_BLEND_EQUATION_ALPHA_EXT\0"
+ "GL_BLEND_EQUATION_ALPHA_OES\0"
"GL_BLEND_EQUATION_EXT\0"
+ "GL_BLEND_EQUATION_OES\0"
"GL_BLEND_EQUATION_RGB\0"
"GL_BLEND_EQUATION_RGB_EXT\0"
+ "GL_BLEND_EQUATION_RGB_OES\0"
"GL_BLEND_SRC\0"
"GL_BLEND_SRC_ALPHA\0"
+ "GL_BLEND_SRC_ALPHA_OES\0"
"GL_BLEND_SRC_RGB\0"
+ "GL_BLEND_SRC_RGB_OES\0"
"GL_BLUE\0"
"GL_BLUE_BIAS\0"
"GL_BLUE_BITS\0"
@@ -140,11 +148,14 @@ LONGSTRING static const char enum_string_table[] =
"GL_BOOL_VEC4_ARB\0"
"GL_BUFFER_ACCESS\0"
"GL_BUFFER_ACCESS_ARB\0"
+ "GL_BUFFER_ACCESS_OES\0"
"GL_BUFFER_FLUSHING_UNMAP_APPLE\0"
"GL_BUFFER_MAPPED\0"
"GL_BUFFER_MAPPED_ARB\0"
+ "GL_BUFFER_MAPPED_OES\0"
"GL_BUFFER_MAP_POINTER\0"
"GL_BUFFER_MAP_POINTER_ARB\0"
+ "GL_BUFFER_MAP_POINTER_OES\0"
"GL_BUFFER_OBJECT_APPLE\0"
"GL_BUFFER_SERIALIZED_MODIFY_APPLE\0"
"GL_BUFFER_SIZE\0"
@@ -194,6 +205,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_COLOR_ARRAY_TYPE\0"
"GL_COLOR_ATTACHMENT0\0"
"GL_COLOR_ATTACHMENT0_EXT\0"
+ "GL_COLOR_ATTACHMENT0_OES\0"
"GL_COLOR_ATTACHMENT1\0"
"GL_COLOR_ATTACHMENT10\0"
"GL_COLOR_ATTACHMENT10_EXT\0"
@@ -336,6 +348,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_COORD_REPLACE\0"
"GL_COORD_REPLACE_ARB\0"
"GL_COORD_REPLACE_NV\0"
+ "GL_COORD_REPLACE_OES\0"
"GL_COPY\0"
"GL_COPY_INVERTED\0"
"GL_COPY_PIXEL_TOKEN\0"
@@ -359,6 +372,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_CURRENT_MATRIX_STACK_DEPTH_NV\0"
"GL_CURRENT_NORMAL\0"
"GL_CURRENT_PALETTE_MATRIX_ARB\0"
+ "GL_CURRENT_PALETTE_MATRIX_OES\0"
"GL_CURRENT_PROGRAM\0"
"GL_CURRENT_QUERY\0"
"GL_CURRENT_QUERY_ARB\0"
@@ -386,8 +400,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_DEPTH\0"
"GL_DEPTH24_STENCIL8\0"
"GL_DEPTH24_STENCIL8_EXT\0"
+ "GL_DEPTH24_STENCIL8_OES\0"
"GL_DEPTH_ATTACHMENT\0"
"GL_DEPTH_ATTACHMENT_EXT\0"
+ "GL_DEPTH_ATTACHMENT_OES\0"
"GL_DEPTH_BIAS\0"
"GL_DEPTH_BITS\0"
"GL_DEPTH_BOUNDS_EXT\0"
@@ -399,12 +415,15 @@ LONGSTRING static const char enum_string_table[] =
"GL_DEPTH_COMPONENT\0"
"GL_DEPTH_COMPONENT16\0"
"GL_DEPTH_COMPONENT16_ARB\0"
+ "GL_DEPTH_COMPONENT16_OES\0"
"GL_DEPTH_COMPONENT16_SGIX\0"
"GL_DEPTH_COMPONENT24\0"
"GL_DEPTH_COMPONENT24_ARB\0"
+ "GL_DEPTH_COMPONENT24_OES\0"
"GL_DEPTH_COMPONENT24_SGIX\0"
"GL_DEPTH_COMPONENT32\0"
"GL_DEPTH_COMPONENT32_ARB\0"
+ "GL_DEPTH_COMPONENT32_OES\0"
"GL_DEPTH_COMPONENT32_SGIX\0"
"GL_DEPTH_FUNC\0"
"GL_DEPTH_RANGE\0"
@@ -413,6 +432,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_DEPTH_STENCIL_ATTACHMENT\0"
"GL_DEPTH_STENCIL_EXT\0"
"GL_DEPTH_STENCIL_NV\0"
+ "GL_DEPTH_STENCIL_OES\0"
"GL_DEPTH_STENCIL_TO_BGRA_NV\0"
"GL_DEPTH_STENCIL_TO_RGBA_NV\0"
"GL_DEPTH_TEST\0"
@@ -525,6 +545,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_FILL\0"
"GL_FIRST_VERTEX_CONVENTION\0"
"GL_FIRST_VERTEX_CONVENTION_EXT\0"
+ "GL_FIXED\0"
+ "GL_FIXED_OES\0"
"GL_FLAT\0"
"GL_FLOAT\0"
"GL_FLOAT_MAT2\0"
@@ -577,6 +599,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_FRAGMENT_SHADER\0"
"GL_FRAGMENT_SHADER_ARB\0"
"GL_FRAGMENT_SHADER_DERIVATIVE_HINT\0"
+ "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES\0"
"GL_FRAMEBUFFER\0"
"GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE\0"
"GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE\0"
@@ -586,40 +609,56 @@ LONGSTRING static const char enum_string_table[] =
"GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE\0"
"GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES\0"
"GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE\0"
"GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL\0"
"GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT\0"
+ "GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES\0"
"GL_FRAMEBUFFER_BINDING\0"
"GL_FRAMEBUFFER_BINDING_EXT\0"
+ "GL_FRAMEBUFFER_BINDING_OES\0"
"GL_FRAMEBUFFER_COMPLETE\0"
"GL_FRAMEBUFFER_COMPLETE_EXT\0"
+ "GL_FRAMEBUFFER_COMPLETE_OES\0"
"GL_FRAMEBUFFER_DEFAULT\0"
"GL_FRAMEBUFFER_EXT\0"
"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT\0"
"GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS\0"
"GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES\0"
"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER\0"
"GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES\0"
"GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT\0"
"GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES\0"
"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\0"
"GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES\0"
"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\0"
"GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT\0"
"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER\0"
"GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\0"
+ "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES\0"
+ "GL_FRAMEBUFFER_OES\0"
"GL_FRAMEBUFFER_STATUS_ERROR_EXT\0"
"GL_FRAMEBUFFER_UNDEFINED\0"
"GL_FRAMEBUFFER_UNSUPPORTED\0"
"GL_FRAMEBUFFER_UNSUPPORTED_EXT\0"
+ "GL_FRAMEBUFFER_UNSUPPORTED_OES\0"
"GL_FRONT\0"
"GL_FRONT_AND_BACK\0"
"GL_FRONT_FACE\0"
@@ -627,10 +666,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_FRONT_RIGHT\0"
"GL_FUNC_ADD\0"
"GL_FUNC_ADD_EXT\0"
+ "GL_FUNC_ADD_OES\0"
"GL_FUNC_REVERSE_SUBTRACT\0"
"GL_FUNC_REVERSE_SUBTRACT_EXT\0"
+ "GL_FUNC_REVERSE_SUBTRACT_OES\0"
"GL_FUNC_SUBTRACT\0"
"GL_FUNC_SUBTRACT_EXT\0"
+ "GL_FUNC_SUBTRACT_OES\0"
"GL_GENERATE_MIPMAP\0"
"GL_GENERATE_MIPMAP_HINT\0"
"GL_GENERATE_MIPMAP_HINT_SGIS\0"
@@ -642,6 +684,9 @@ LONGSTRING static const char enum_string_table[] =
"GL_GREEN_BITS\0"
"GL_GREEN_SCALE\0"
"GL_HALF_FLOAT\0"
+ "GL_HALF_FLOAT_OES\0"
+ "GL_HIGH_FLOAT\0"
+ "GL_HIGH_INT\0"
"GL_HINT_BIT\0"
"GL_HISTOGRAM\0"
"GL_HISTOGRAM_ALPHA_SIZE\0"
@@ -663,7 +708,9 @@ LONGSTRING static const char enum_string_table[] =
"GL_HISTOGRAM_WIDTH_EXT\0"
"GL_IDENTITY_NV\0"
"GL_IGNORE_BORDER_HP\0"
+ "GL_IMPLEMENTATION_COLOR_READ_FORMAT\0"
"GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES\0"
+ "GL_IMPLEMENTATION_COLOR_READ_TYPE\0"
"GL_IMPLEMENTATION_COLOR_READ_TYPE_OES\0"
"GL_INCR\0"
"GL_INCR_WRAP\0"
@@ -698,6 +745,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_INTERPOLATE\0"
"GL_INTERPOLATE_ARB\0"
"GL_INTERPOLATE_EXT\0"
+ "GL_INT_10_10_10_2_OES\0"
"GL_INT_VEC2\0"
"GL_INT_VEC2_ARB\0"
"GL_INT_VEC3\0"
@@ -707,6 +755,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_INVALID_ENUM\0"
"GL_INVALID_FRAMEBUFFER_OPERATION\0"
"GL_INVALID_FRAMEBUFFER_OPERATION_EXT\0"
+ "GL_INVALID_FRAMEBUFFER_OPERATION_OES\0"
"GL_INVALID_OPERATION\0"
"GL_INVALID_VALUE\0"
"GL_INVERSE_NV\0"
@@ -763,6 +812,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_LOGIC_OP\0"
"GL_LOGIC_OP_MODE\0"
"GL_LOWER_LEFT\0"
+ "GL_LOW_FLOAT\0"
+ "GL_LOW_INT\0"
"GL_LUMINANCE\0"
"GL_LUMINANCE12\0"
"GL_LUMINANCE12_ALPHA12\0"
@@ -888,14 +939,22 @@ LONGSTRING static const char enum_string_table[] =
"GL_MATRIX8_ARB\0"
"GL_MATRIX9_ARB\0"
"GL_MATRIX_INDEX_ARRAY_ARB\0"
+ "GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES\0"
+ "GL_MATRIX_INDEX_ARRAY_OES\0"
"GL_MATRIX_INDEX_ARRAY_POINTER_ARB\0"
+ "GL_MATRIX_INDEX_ARRAY_POINTER_OES\0"
"GL_MATRIX_INDEX_ARRAY_SIZE_ARB\0"
+ "GL_MATRIX_INDEX_ARRAY_SIZE_OES\0"
"GL_MATRIX_INDEX_ARRAY_STRIDE_ARB\0"
+ "GL_MATRIX_INDEX_ARRAY_STRIDE_OES\0"
"GL_MATRIX_INDEX_ARRAY_TYPE_ARB\0"
+ "GL_MATRIX_INDEX_ARRAY_TYPE_OES\0"
"GL_MATRIX_MODE\0"
"GL_MATRIX_PALETTE_ARB\0"
+ "GL_MATRIX_PALETTE_OES\0"
"GL_MAX\0"
"GL_MAX_3D_TEXTURE_SIZE\0"
+ "GL_MAX_3D_TEXTURE_SIZE_OES\0"
"GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0"
"GL_MAX_ATTRIB_STACK_DEPTH\0"
"GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0"
@@ -914,6 +973,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_CONVOLUTION_WIDTH_EXT\0"
"GL_MAX_CUBE_MAP_TEXTURE_SIZE\0"
"GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB\0"
+ "GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES\0"
"GL_MAX_DRAW_BUFFERS\0"
"GL_MAX_DRAW_BUFFERS_ARB\0"
"GL_MAX_DRAW_BUFFERS_ATI\0"
@@ -923,12 +983,14 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_EXT\0"
"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0"
"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0"
+ "GL_MAX_FRAGMENT_UNIFORM_VECTORS\0"
"GL_MAX_LIGHTS\0"
"GL_MAX_LIST_NESTING\0"
"GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB\0"
"GL_MAX_MODELVIEW_STACK_DEPTH\0"
"GL_MAX_NAME_STACK_DEPTH\0"
"GL_MAX_PALETTE_MATRICES_ARB\0"
+ "GL_MAX_PALETTE_MATRICES_OES\0"
"GL_MAX_PIXEL_MAP_TABLE\0"
"GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB\0"
"GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
@@ -960,6 +1022,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0"
"GL_MAX_RENDERBUFFER_SIZE\0"
"GL_MAX_RENDERBUFFER_SIZE_EXT\0"
+ "GL_MAX_RENDERBUFFER_SIZE_OES\0"
"GL_MAX_SAMPLES\0"
"GL_MAX_SAMPLES_EXT\0"
"GL_MAX_SERVER_WAIT_TIMEOUT\0"
@@ -970,6 +1033,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_TEXTURE_IMAGE_UNITS\0"
"GL_MAX_TEXTURE_IMAGE_UNITS_ARB\0"
"GL_MAX_TEXTURE_LOD_BIAS\0"
+ "GL_MAX_TEXTURE_LOD_BIAS_EXT\0"
"GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT\0"
"GL_MAX_TEXTURE_SIZE\0"
"GL_MAX_TEXTURE_STACK_DEPTH\0"
@@ -982,14 +1046,19 @@ LONGSTRING static const char enum_string_table[] =
"GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT\0"
"GL_MAX_VARYING_FLOATS\0"
"GL_MAX_VARYING_FLOATS_ARB\0"
+ "GL_MAX_VARYING_VECTORS\0"
"GL_MAX_VERTEX_ATTRIBS\0"
"GL_MAX_VERTEX_ATTRIBS_ARB\0"
"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0"
"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0"
"GL_MAX_VERTEX_UNIFORM_COMPONENTS\0"
"GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB\0"
+ "GL_MAX_VERTEX_UNIFORM_VECTORS\0"
"GL_MAX_VERTEX_UNITS_ARB\0"
+ "GL_MAX_VERTEX_UNITS_OES\0"
"GL_MAX_VIEWPORT_DIMS\0"
+ "GL_MEDIUM_FLOAT\0"
+ "GL_MEDIUM_INT\0"
"GL_MIN\0"
"GL_MINMAX\0"
"GL_MINMAX_EXT\0"
@@ -1040,6 +1109,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_MODELVIEW8_ARB\0"
"GL_MODELVIEW9_ARB\0"
"GL_MODELVIEW_MATRIX\0"
+ "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES\0"
"GL_MODELVIEW_PROJECTION_NV\0"
"GL_MODELVIEW_STACK_DEPTH\0"
"GL_MODULATE\0"
@@ -1065,6 +1135,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_NEVER\0"
"GL_NICEST\0"
"GL_NONE\0"
+ "GL_NONE_OES\0"
"GL_NOOP\0"
"GL_NOR\0"
"GL_NORMALIZE\0"
@@ -1077,10 +1148,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_NORMAL_MAP\0"
"GL_NORMAL_MAP_ARB\0"
"GL_NORMAL_MAP_NV\0"
+ "GL_NORMAL_MAP_OES\0"
"GL_NOTEQUAL\0"
"GL_NO_ERROR\0"
"GL_NUM_COMPRESSED_TEXTURE_FORMATS\0"
"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0"
+ "GL_NUM_PROGRAM_BINARY_FORMATS_OES\0"
+ "GL_NUM_SHADER_BINARY_FORMATS\0"
"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0"
"GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB\0"
"GL_OBJECT_ACTIVE_UNIFORMS_ARB\0"
@@ -1195,6 +1269,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_POINT_FADE_THRESHOLD_SIZE_EXT\0"
"GL_POINT_FADE_THRESHOLD_SIZE_SGIS\0"
"GL_POINT_SIZE\0"
+ "GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES\0"
+ "GL_POINT_SIZE_ARRAY_OES\0"
+ "GL_POINT_SIZE_ARRAY_POINTER_OES\0"
+ "GL_POINT_SIZE_ARRAY_STRIDE_OES\0"
+ "GL_POINT_SIZE_ARRAY_TYPE_OES\0"
"GL_POINT_SIZE_GRANULARITY\0"
"GL_POINT_SIZE_MAX\0"
"GL_POINT_SIZE_MAX_ARB\0"
@@ -1211,6 +1290,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_POINT_SPRITE_ARB\0"
"GL_POINT_SPRITE_COORD_ORIGIN\0"
"GL_POINT_SPRITE_NV\0"
+ "GL_POINT_SPRITE_OES\0"
"GL_POINT_SPRITE_R_MODE_NV\0"
"GL_POINT_TOKEN\0"
"GL_POLYGON\0"
@@ -1276,6 +1356,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_PROGRAM_ADDRESS_REGISTERS_ARB\0"
"GL_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
"GL_PROGRAM_ATTRIBS_ARB\0"
+ "GL_PROGRAM_BINARY_FORMATS_OES\0"
+ "GL_PROGRAM_BINARY_LENGTH_OES\0"
"GL_PROGRAM_BINDING_ARB\0"
"GL_PROGRAM_ERROR_POSITION_ARB\0"
"GL_PROGRAM_ERROR_POSITION_NV\0"
@@ -1306,6 +1388,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB\0"
"GL_PROJECTION\0"
"GL_PROJECTION_MATRIX\0"
+ "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES\0"
"GL_PROJECTION_STACK_DEPTH\0"
"GL_PROVOKING_VERTEX\0"
"GL_PROVOKING_VERTEX_EXT\0"
@@ -1366,26 +1449,38 @@ LONGSTRING static const char enum_string_table[] =
"GL_REFLECTION_MAP\0"
"GL_REFLECTION_MAP_ARB\0"
"GL_REFLECTION_MAP_NV\0"
+ "GL_REFLECTION_MAP_OES\0"
"GL_RELEASED_APPLE\0"
"GL_RENDER\0"
"GL_RENDERBUFFER\0"
"GL_RENDERBUFFER_ALPHA_SIZE\0"
+ "GL_RENDERBUFFER_ALPHA_SIZE_OES\0"
"GL_RENDERBUFFER_BINDING\0"
"GL_RENDERBUFFER_BINDING_EXT\0"
+ "GL_RENDERBUFFER_BINDING_OES\0"
"GL_RENDERBUFFER_BLUE_SIZE\0"
+ "GL_RENDERBUFFER_BLUE_SIZE_OES\0"
"GL_RENDERBUFFER_DEPTH_SIZE\0"
+ "GL_RENDERBUFFER_DEPTH_SIZE_OES\0"
"GL_RENDERBUFFER_EXT\0"
"GL_RENDERBUFFER_GREEN_SIZE\0"
+ "GL_RENDERBUFFER_GREEN_SIZE_OES\0"
"GL_RENDERBUFFER_HEIGHT\0"
"GL_RENDERBUFFER_HEIGHT_EXT\0"
+ "GL_RENDERBUFFER_HEIGHT_OES\0"
"GL_RENDERBUFFER_INTERNAL_FORMAT\0"
"GL_RENDERBUFFER_INTERNAL_FORMAT_EXT\0"
+ "GL_RENDERBUFFER_INTERNAL_FORMAT_OES\0"
+ "GL_RENDERBUFFER_OES\0"
"GL_RENDERBUFFER_RED_SIZE\0"
+ "GL_RENDERBUFFER_RED_SIZE_OES\0"
"GL_RENDERBUFFER_SAMPLES\0"
"GL_RENDERBUFFER_SAMPLES_EXT\0"
"GL_RENDERBUFFER_STENCIL_SIZE\0"
+ "GL_RENDERBUFFER_STENCIL_SIZE_OES\0"
"GL_RENDERBUFFER_WIDTH\0"
"GL_RENDERBUFFER_WIDTH_EXT\0"
+ "GL_RENDERBUFFER_WIDTH_OES\0"
"GL_RENDERER\0"
"GL_RENDER_MODE\0"
"GL_REPEAT\0"
@@ -1410,11 +1505,15 @@ LONGSTRING static const char enum_string_table[] =
"GL_RGB4_EXT\0"
"GL_RGB4_S3TC\0"
"GL_RGB5\0"
+ "GL_RGB565\0"
+ "GL_RGB565_OES\0"
"GL_RGB5_A1\0"
"GL_RGB5_A1_EXT\0"
+ "GL_RGB5_A1_OES\0"
"GL_RGB5_EXT\0"
"GL_RGB8\0"
"GL_RGB8_EXT\0"
+ "GL_RGB8_OES\0"
"GL_RGBA\0"
"GL_RGBA12\0"
"GL_RGBA12_EXT\0"
@@ -1425,9 +1524,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_RGBA4\0"
"GL_RGBA4_DXT5_S3TC\0"
"GL_RGBA4_EXT\0"
+ "GL_RGBA4_OES\0"
"GL_RGBA4_S3TC\0"
"GL_RGBA8\0"
"GL_RGBA8_EXT\0"
+ "GL_RGBA8_OES\0"
"GL_RGBA8_SNORM\0"
"GL_RGBA_DXT5_S3TC\0"
"GL_RGBA_MODE\0"
@@ -1444,6 +1545,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_SAMPLER_2D\0"
"GL_SAMPLER_2D_SHADOW\0"
"GL_SAMPLER_3D\0"
+ "GL_SAMPLER_3D_OES\0"
"GL_SAMPLER_CUBE\0"
"GL_SAMPLES\0"
"GL_SAMPLES_3DFX\0"
@@ -1481,6 +1583,8 @@ LONGSTRING static const char enum_string_table[] =
"GL_SEPARATE_SPECULAR_COLOR\0"
"GL_SEPARATE_SPECULAR_COLOR_EXT\0"
"GL_SET\0"
+ "GL_SHADER_BINARY_FORMATS\0"
+ "GL_SHADER_COMPILER\0"
"GL_SHADER_OBJECT_ARB\0"
"GL_SHADER_SOURCE_LENGTH\0"
"GL_SHADER_TYPE\0"
@@ -1553,6 +1657,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_STENCIL\0"
"GL_STENCIL_ATTACHMENT\0"
"GL_STENCIL_ATTACHMENT_EXT\0"
+ "GL_STENCIL_ATTACHMENT_OES\0"
"GL_STENCIL_BACK_FAIL\0"
"GL_STENCIL_BACK_FAIL_ATI\0"
"GL_STENCIL_BACK_FUNC\0"
@@ -1574,10 +1679,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_STENCIL_INDEX16\0"
"GL_STENCIL_INDEX16_EXT\0"
"GL_STENCIL_INDEX1_EXT\0"
+ "GL_STENCIL_INDEX1_OES\0"
"GL_STENCIL_INDEX4\0"
"GL_STENCIL_INDEX4_EXT\0"
+ "GL_STENCIL_INDEX4_OES\0"
"GL_STENCIL_INDEX8\0"
"GL_STENCIL_INDEX8_EXT\0"
+ "GL_STENCIL_INDEX8_OES\0"
"GL_STENCIL_INDEX_EXT\0"
"GL_STENCIL_PASS_DEPTH_FAIL\0"
"GL_STENCIL_PASS_DEPTH_PASS\0"
@@ -1684,6 +1792,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_2D\0"
"GL_TEXTURE_2D_ARRAY_EXT\0"
"GL_TEXTURE_3D\0"
+ "GL_TEXTURE_3D_OES\0"
"GL_TEXTURE_ALPHA_SIZE\0"
"GL_TEXTURE_ALPHA_SIZE_EXT\0"
"GL_TEXTURE_BASE_LEVEL\0"
@@ -1692,8 +1801,10 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_BINDING_2D\0"
"GL_TEXTURE_BINDING_2D_ARRAY_EXT\0"
"GL_TEXTURE_BINDING_3D\0"
+ "GL_TEXTURE_BINDING_3D_OES\0"
"GL_TEXTURE_BINDING_CUBE_MAP\0"
"GL_TEXTURE_BINDING_CUBE_MAP_ARB\0"
+ "GL_TEXTURE_BINDING_CUBE_MAP_OES\0"
"GL_TEXTURE_BINDING_RECTANGLE_ARB\0"
"GL_TEXTURE_BINDING_RECTANGLE_NV\0"
"GL_TEXTURE_BIT\0"
@@ -1731,20 +1842,28 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_COORD_ARRAY_SIZE\0"
"GL_TEXTURE_COORD_ARRAY_STRIDE\0"
"GL_TEXTURE_COORD_ARRAY_TYPE\0"
+ "GL_TEXTURE_CROP_RECT_OES\0"
"GL_TEXTURE_CUBE_MAP\0"
"GL_TEXTURE_CUBE_MAP_ARB\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_X\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z\0"
"GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES\0"
+ "GL_TEXTURE_CUBE_MAP_OES\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_X\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_Y\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_Z\0"
"GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB\0"
+ "GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES\0"
"GL_TEXTURE_CUBE_MAP_SEAMLESS\0"
"GL_TEXTURE_DEPTH\0"
"GL_TEXTURE_DEPTH_SIZE\0"
@@ -1753,10 +1872,13 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_ENV_COLOR\0"
"GL_TEXTURE_ENV_MODE\0"
"GL_TEXTURE_FILTER_CONTROL\0"
+ "GL_TEXTURE_FILTER_CONTROL_EXT\0"
"GL_TEXTURE_GEN_MODE\0"
+ "GL_TEXTURE_GEN_MODE_OES\0"
"GL_TEXTURE_GEN_Q\0"
"GL_TEXTURE_GEN_R\0"
"GL_TEXTURE_GEN_S\0"
+ "GL_TEXTURE_GEN_STR_OES\0"
"GL_TEXTURE_GEN_T\0"
"GL_TEXTURE_GEQUAL_R_SGIX\0"
"GL_TEXTURE_GREEN_SIZE\0"
@@ -1776,6 +1898,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_LUMINANCE_SIZE_EXT\0"
"GL_TEXTURE_MAG_FILTER\0"
"GL_TEXTURE_MATRIX\0"
+ "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES\0"
"GL_TEXTURE_MAX_ANISOTROPY_EXT\0"
"GL_TEXTURE_MAX_CLAMP_R_SGIX\0"
"GL_TEXTURE_MAX_CLAMP_S_SGIX\0"
@@ -1800,6 +1923,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_TEXTURE_UNSIGNED_REMAP_MODE_NV\0"
"GL_TEXTURE_WIDTH\0"
"GL_TEXTURE_WRAP_R\0"
+ "GL_TEXTURE_WRAP_R_OES\0"
"GL_TEXTURE_WRAP_S\0"
"GL_TEXTURE_WRAP_T\0"
"GL_TIMEOUT_EXPIRED\0"
@@ -1845,17 +1969,22 @@ LONGSTRING static const char enum_string_table[] =
"GL_UNSIGNED_BYTE_3_3_2\0"
"GL_UNSIGNED_INT\0"
"GL_UNSIGNED_INT_10_10_10_2\0"
+ "GL_UNSIGNED_INT_10_10_10_2_OES\0"
"GL_UNSIGNED_INT_24_8\0"
"GL_UNSIGNED_INT_24_8_EXT\0"
"GL_UNSIGNED_INT_24_8_NV\0"
+ "GL_UNSIGNED_INT_24_8_OES\0"
"GL_UNSIGNED_INT_2_10_10_10_REV\0"
+ "GL_UNSIGNED_INT_2_10_10_10_REV_EXT\0"
"GL_UNSIGNED_INT_8_8_8_8\0"
"GL_UNSIGNED_INT_8_8_8_8_REV\0"
"GL_UNSIGNED_NORMALIZED\0"
"GL_UNSIGNED_SHORT\0"
"GL_UNSIGNED_SHORT_1_5_5_5_REV\0"
+ "GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT\0"
"GL_UNSIGNED_SHORT_4_4_4_4\0"
"GL_UNSIGNED_SHORT_4_4_4_4_REV\0"
+ "GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT\0"
"GL_UNSIGNED_SHORT_5_5_5_1\0"
"GL_UNSIGNED_SHORT_5_6_5\0"
"GL_UNSIGNED_SHORT_5_6_5_REV\0"
@@ -1928,14 +2057,21 @@ LONGSTRING static const char enum_string_table[] =
"GL_WEIGHT_ARRAY_ARB\0"
"GL_WEIGHT_ARRAY_BUFFER_BINDING\0"
"GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB\0"
+ "GL_WEIGHT_ARRAY_BUFFER_BINDING_OES\0"
+ "GL_WEIGHT_ARRAY_OES\0"
"GL_WEIGHT_ARRAY_POINTER_ARB\0"
+ "GL_WEIGHT_ARRAY_POINTER_OES\0"
"GL_WEIGHT_ARRAY_SIZE_ARB\0"
+ "GL_WEIGHT_ARRAY_SIZE_OES\0"
"GL_WEIGHT_ARRAY_STRIDE_ARB\0"
+ "GL_WEIGHT_ARRAY_STRIDE_OES\0"
"GL_WEIGHT_ARRAY_TYPE_ARB\0"
+ "GL_WEIGHT_ARRAY_TYPE_OES\0"
"GL_WEIGHT_SUM_UNITY_ARB\0"
"GL_WRAP_BORDER_SUN\0"
"GL_WRITE_ONLY\0"
"GL_WRITE_ONLY_ARB\0"
+ "GL_WRITE_ONLY_OES\0"
"GL_XOR\0"
"GL_YCBCR_422_APPLE\0"
"GL_YCBCR_MESA\0"
@@ -1944,7 +2080,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ZOOM_Y\0"
;
-static const enum_elt all_enums[1906] =
+static const enum_elt all_enums[2042] =
{
{ 0, 0x00000600 }, /* GL_2D */
{ 6, 0x00001407 }, /* GL_2_BYTES */
@@ -2019,3214 +2155,3380 @@ static const enum_elt all_enums[1906] =
{ 1175, 0x00000403 }, /* GL_BACK_RIGHT */
{ 1189, 0x000080E0 }, /* GL_BGR */
{ 1196, 0x000080E1 }, /* GL_BGRA */
- { 1204, 0x00001A00 }, /* GL_BITMAP */
- { 1214, 0x00000704 }, /* GL_BITMAP_TOKEN */
- { 1230, 0x00000BE2 }, /* GL_BLEND */
- { 1239, 0x00008005 }, /* GL_BLEND_COLOR */
- { 1254, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
- { 1273, 0x00000BE0 }, /* GL_BLEND_DST */
- { 1286, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
- { 1305, 0x000080C8 }, /* GL_BLEND_DST_RGB */
- { 1322, 0x00008009 }, /* GL_BLEND_EQUATION */
- { 1340, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
- { 1364, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
- { 1392, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
- { 1414, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */
- { 1436, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
- { 1462, 0x00000BE1 }, /* GL_BLEND_SRC */
- { 1475, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
- { 1494, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
- { 1511, 0x00001905 }, /* GL_BLUE */
- { 1519, 0x00000D1B }, /* GL_BLUE_BIAS */
- { 1532, 0x00000D54 }, /* GL_BLUE_BITS */
- { 1545, 0x00000D1A }, /* GL_BLUE_SCALE */
- { 1559, 0x00008B56 }, /* GL_BOOL */
- { 1567, 0x00008B56 }, /* GL_BOOL_ARB */
- { 1579, 0x00008B57 }, /* GL_BOOL_VEC2 */
- { 1592, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
- { 1609, 0x00008B58 }, /* GL_BOOL_VEC3 */
- { 1622, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
- { 1639, 0x00008B59 }, /* GL_BOOL_VEC4 */
- { 1652, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
- { 1669, 0x000088BB }, /* GL_BUFFER_ACCESS */
- { 1686, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
- { 1707, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- { 1738, 0x000088BC }, /* GL_BUFFER_MAPPED */
- { 1755, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
- { 1776, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
- { 1798, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
- { 1824, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */
- { 1847, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
- { 1881, 0x00008764 }, /* GL_BUFFER_SIZE */
- { 1896, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
- { 1915, 0x00008765 }, /* GL_BUFFER_USAGE */
- { 1931, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
- { 1951, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */
- { 1970, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */
- { 1996, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */
- { 2019, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
- { 2047, 0x0000877C }, /* GL_BUMP_TARGET_ATI */
- { 2066, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */
- { 2088, 0x00001400 }, /* GL_BYTE */
- { 2096, 0x00002A24 }, /* GL_C3F_V3F */
- { 2107, 0x00002A26 }, /* GL_C4F_N3F_V3F */
- { 2122, 0x00002A22 }, /* GL_C4UB_V2F */
- { 2134, 0x00002A23 }, /* GL_C4UB_V3F */
- { 2146, 0x00000901 }, /* GL_CCW */
- { 2153, 0x00002900 }, /* GL_CLAMP */
- { 2162, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
- { 2181, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
- { 2204, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
- { 2228, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
- { 2245, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
- { 2267, 0x00001500 }, /* GL_CLEAR */
- { 2276, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
- { 2301, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
- { 2330, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
- { 2356, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
- { 2385, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
- { 2411, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
- { 2438, 0x00003000 }, /* GL_CLIP_PLANE0 */
- { 2453, 0x00003001 }, /* GL_CLIP_PLANE1 */
- { 2468, 0x00003002 }, /* GL_CLIP_PLANE2 */
- { 2483, 0x00003003 }, /* GL_CLIP_PLANE3 */
- { 2498, 0x00003004 }, /* GL_CLIP_PLANE4 */
- { 2513, 0x00003005 }, /* GL_CLIP_PLANE5 */
- { 2528, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- { 2561, 0x00000A00 }, /* GL_COEFF */
- { 2570, 0x00001800 }, /* GL_COLOR */
- { 2579, 0x00008076 }, /* GL_COLOR_ARRAY */
- { 2594, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- { 2624, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 2658, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
- { 2681, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
- { 2701, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
- { 2723, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
- { 2743, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
- { 2764, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
- { 2789, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
- { 2810, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
- { 2832, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
- { 2858, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
- { 2880, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
- { 2906, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
- { 2928, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
- { 2954, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
- { 2976, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
- { 3002, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
- { 3024, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
- { 3050, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
- { 3072, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
- { 3098, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
- { 3123, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
- { 3144, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
- { 3169, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
- { 3190, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
- { 3215, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
- { 3236, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
- { 3261, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
- { 3282, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
- { 3307, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
- { 3328, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
- { 3353, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
- { 3374, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
- { 3399, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
- { 3420, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
- { 3445, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
- { 3466, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
- { 3491, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
- { 3511, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
- { 3532, 0x00001900 }, /* GL_COLOR_INDEX */
- { 3547, 0x00001603 }, /* GL_COLOR_INDEXES */
- { 3564, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
- { 3582, 0x00000B57 }, /* GL_COLOR_MATERIAL */
- { 3600, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
- { 3623, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
- { 3651, 0x000080B1 }, /* GL_COLOR_MATRIX */
- { 3667, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
- { 3687, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
- { 3715, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 3747, 0x00008458 }, /* GL_COLOR_SUM */
- { 3760, 0x00008458 }, /* GL_COLOR_SUM_ARB */
- { 3777, 0x000080D0 }, /* GL_COLOR_TABLE */
- { 3792, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
- { 3818, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
- { 3848, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
- { 3878, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
- { 3898, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
- { 3922, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
- { 3947, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
- { 3976, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
- { 4005, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
- { 4027, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
- { 4053, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
- { 4079, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
- { 4105, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
- { 4135, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
- { 4165, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
- { 4195, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
- { 4229, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
- { 4263, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- { 4293, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
- { 4327, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
- { 4361, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
- { 4385, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
- { 4413, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
- { 4441, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
- { 4462, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
- { 4487, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
- { 4508, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
- { 4533, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
- { 4558, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
- { 4577, 0x00008570 }, /* GL_COMBINE */
- { 4588, 0x00008503 }, /* GL_COMBINE4 */
- { 4600, 0x00008572 }, /* GL_COMBINE_ALPHA */
- { 4617, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
- { 4638, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
- { 4659, 0x00008570 }, /* GL_COMBINE_ARB */
- { 4674, 0x00008570 }, /* GL_COMBINE_EXT */
- { 4689, 0x00008571 }, /* GL_COMBINE_RGB */
- { 4704, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
- { 4723, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
- { 4742, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
- { 4778, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
- { 4802, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
- { 4830, 0x00001300 }, /* GL_COMPILE */
- { 4841, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
- { 4864, 0x00008B81 }, /* GL_COMPILE_STATUS */
- { 4882, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
- { 4902, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
- { 4926, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
- { 4950, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
- { 4978, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
- { 5002, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- { 5032, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
- { 5066, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
- { 5094, 0x000084ED }, /* GL_COMPRESSED_RGB */
- { 5112, 0x000084EE }, /* GL_COMPRESSED_RGBA */
- { 5131, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
- { 5154, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- { 5183, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- { 5216, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- { 5249, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- { 5282, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
- { 5304, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- { 5332, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- { 5364, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
- { 5389, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- { 5420, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
- { 5439, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
- { 5464, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
- { 5494, 0x0000911C }, /* GL_CONDITION_SATISFIED */
- { 5517, 0x00008576 }, /* GL_CONSTANT */
- { 5529, 0x00008003 }, /* GL_CONSTANT_ALPHA */
- { 5547, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
- { 5569, 0x00008576 }, /* GL_CONSTANT_ARB */
- { 5585, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
- { 5609, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
- { 5631, 0x00008001 }, /* GL_CONSTANT_COLOR */
- { 5649, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
- { 5671, 0x00008576 }, /* GL_CONSTANT_EXT */
- { 5687, 0x00008010 }, /* GL_CONVOLUTION_1D */
- { 5705, 0x00008011 }, /* GL_CONVOLUTION_2D */
- { 5723, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
- { 5751, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
- { 5782, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
- { 5809, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
- { 5840, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
- { 5867, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
- { 5898, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
- { 5926, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
- { 5958, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
- { 5980, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
- { 6006, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
- { 6028, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
- { 6054, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
- { 6075, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
- { 6100, 0x00008862 }, /* GL_COORD_REPLACE */
- { 6117, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
- { 6138, 0x00008862 }, /* GL_COORD_REPLACE_NV */
- { 6158, 0x00001503 }, /* GL_COPY */
- { 6166, 0x0000150C }, /* GL_COPY_INVERTED */
- { 6183, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
- { 6203, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
- { 6223, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
- { 6244, 0x00000B44 }, /* GL_CULL_FACE */
- { 6257, 0x00000B45 }, /* GL_CULL_FACE_MODE */
- { 6275, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
- { 6294, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- { 6326, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- { 6361, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
- { 6382, 0x00000001 }, /* GL_CURRENT_BIT */
- { 6397, 0x00000B00 }, /* GL_CURRENT_COLOR */
- { 6414, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
- { 6435, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
- { 6461, 0x00000B01 }, /* GL_CURRENT_INDEX */
- { 6478, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
- { 6500, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
- { 6528, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
- { 6549, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- { 6583, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
- { 6616, 0x00000B02 }, /* GL_CURRENT_NORMAL */
- { 6634, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- { 6664, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
- { 6683, 0x00008865 }, /* GL_CURRENT_QUERY */
- { 6700, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
- { 6721, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
- { 6745, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
- { 6772, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
- { 6796, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
- { 6823, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
- { 6856, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
- { 6890, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- { 6923, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
- { 6950, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
- { 6976, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
- { 7001, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
- { 7030, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
- { 7052, 0x00000900 }, /* GL_CW */
- { 7058, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
- { 7079, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
- { 7100, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
- { 7120, 0x00002101 }, /* GL_DECAL */
- { 7129, 0x00001E03 }, /* GL_DECR */
- { 7137, 0x00008508 }, /* GL_DECR_WRAP */
- { 7150, 0x00008508 }, /* GL_DECR_WRAP_EXT */
- { 7167, 0x00008B80 }, /* GL_DELETE_STATUS */
- { 7184, 0x00001801 }, /* GL_DEPTH */
- { 7193, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
- { 7213, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
- { 7237, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
- { 7257, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
- { 7281, 0x00000D1F }, /* GL_DEPTH_BIAS */
- { 7295, 0x00000D56 }, /* GL_DEPTH_BITS */
- { 7309, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
- { 7329, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
- { 7354, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
- { 7374, 0x0000864F }, /* GL_DEPTH_CLAMP */
- { 7389, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
- { 7407, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
- { 7428, 0x00001902 }, /* GL_DEPTH_COMPONENT */
- { 7447, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
- { 7468, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
- { 7493, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
- { 7519, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
- { 7540, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
- { 7565, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
- { 7591, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
- { 7612, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
- { 7637, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
- { 7663, 0x00000B74 }, /* GL_DEPTH_FUNC */
- { 7677, 0x00000B70 }, /* GL_DEPTH_RANGE */
- { 7692, 0x00000D1E }, /* GL_DEPTH_SCALE */
- { 7707, 0x000084F9 }, /* GL_DEPTH_STENCIL */
- { 7724, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
- { 7752, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
- { 7773, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
- { 7793, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- { 7821, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- { 7849, 0x00000B71 }, /* GL_DEPTH_TEST */
- { 7863, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
- { 7885, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
- { 7911, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
- { 7930, 0x00001201 }, /* GL_DIFFUSE */
- { 7941, 0x00000BD0 }, /* GL_DITHER */
- { 7951, 0x00000A02 }, /* GL_DOMAIN */
- { 7961, 0x00001100 }, /* GL_DONT_CARE */
- { 7974, 0x000086AE }, /* GL_DOT3_RGB */
- { 7986, 0x000086AF }, /* GL_DOT3_RGBA */
- { 7999, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
- { 8016, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
- { 8033, 0x000086AE }, /* GL_DOT3_RGB_ARB */
- { 8049, 0x00008740 }, /* GL_DOT3_RGB_EXT */
- { 8065, 0x0000140A }, /* GL_DOUBLE */
- { 8075, 0x00000C32 }, /* GL_DOUBLEBUFFER */
- { 8091, 0x00000C01 }, /* GL_DRAW_BUFFER */
- { 8106, 0x00008825 }, /* GL_DRAW_BUFFER0 */
- { 8122, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
- { 8142, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
- { 8162, 0x00008826 }, /* GL_DRAW_BUFFER1 */
- { 8178, 0x0000882F }, /* GL_DRAW_BUFFER10 */
- { 8195, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
- { 8216, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
- { 8237, 0x00008830 }, /* GL_DRAW_BUFFER11 */
- { 8254, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
- { 8275, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
- { 8296, 0x00008831 }, /* GL_DRAW_BUFFER12 */
- { 8313, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
- { 8334, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
- { 8355, 0x00008832 }, /* GL_DRAW_BUFFER13 */
- { 8372, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
- { 8393, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
- { 8414, 0x00008833 }, /* GL_DRAW_BUFFER14 */
- { 8431, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
- { 8452, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
- { 8473, 0x00008834 }, /* GL_DRAW_BUFFER15 */
- { 8490, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
- { 8511, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
- { 8532, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
- { 8552, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
- { 8572, 0x00008827 }, /* GL_DRAW_BUFFER2 */
- { 8588, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
- { 8608, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
- { 8628, 0x00008828 }, /* GL_DRAW_BUFFER3 */
- { 8644, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
- { 8664, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
- { 8684, 0x00008829 }, /* GL_DRAW_BUFFER4 */
- { 8700, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
- { 8720, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
- { 8740, 0x0000882A }, /* GL_DRAW_BUFFER5 */
- { 8756, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
- { 8776, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
- { 8796, 0x0000882B }, /* GL_DRAW_BUFFER6 */
- { 8812, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
- { 8832, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
- { 8852, 0x0000882C }, /* GL_DRAW_BUFFER7 */
- { 8868, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
- { 8888, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
- { 8908, 0x0000882D }, /* GL_DRAW_BUFFER8 */
- { 8924, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
- { 8944, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
- { 8964, 0x0000882E }, /* GL_DRAW_BUFFER9 */
- { 8980, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
- { 9000, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
- { 9020, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
- { 9040, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
- { 9068, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
- { 9100, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
- { 9124, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
- { 9144, 0x00000304 }, /* GL_DST_ALPHA */
- { 9157, 0x00000306 }, /* GL_DST_COLOR */
- { 9170, 0x0000877A }, /* GL_DU8DV8_ATI */
- { 9184, 0x00008779 }, /* GL_DUDV_ATI */
- { 9196, 0x000088EA }, /* GL_DYNAMIC_COPY */
- { 9212, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
- { 9232, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
- { 9248, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
- { 9268, 0x000088E9 }, /* GL_DYNAMIC_READ */
- { 9284, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
- { 9304, 0x00000B43 }, /* GL_EDGE_FLAG */
- { 9317, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
- { 9336, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- { 9370, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
- { 9408, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
- { 9435, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- { 9461, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
- { 9485, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- { 9517, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
- { 9553, 0x00001600 }, /* GL_EMISSION */
- { 9565, 0x00002000 }, /* GL_ENABLE_BIT */
- { 9579, 0x00000202 }, /* GL_EQUAL */
- { 9588, 0x00001509 }, /* GL_EQUIV */
- { 9597, 0x00010000 }, /* GL_EVAL_BIT */
- { 9609, 0x00000800 }, /* GL_EXP */
- { 9616, 0x00000801 }, /* GL_EXP2 */
- { 9624, 0x00001F03 }, /* GL_EXTENSIONS */
- { 9638, 0x00002400 }, /* GL_EYE_LINEAR */
- { 9652, 0x00002502 }, /* GL_EYE_PLANE */
- { 9665, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
- { 9690, 0x0000855B }, /* GL_EYE_RADIAL_NV */
- { 9707, 0x00000000 }, /* GL_FALSE */
- { 9716, 0x00001101 }, /* GL_FASTEST */
- { 9727, 0x00001C01 }, /* GL_FEEDBACK */
- { 9739, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
- { 9766, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
- { 9790, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
- { 9814, 0x00001B02 }, /* GL_FILL */
- { 9822, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
- { 9849, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
- { 9880, 0x00001D00 }, /* GL_FLAT */
- { 9888, 0x00001406 }, /* GL_FLOAT */
- { 9897, 0x00008B5A }, /* GL_FLOAT_MAT2 */
- { 9911, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
- { 9929, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
- { 9945, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
- { 9961, 0x00008B5B }, /* GL_FLOAT_MAT3 */
- { 9975, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
- { 9993, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
- { 10009, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
- { 10025, 0x00008B5C }, /* GL_FLOAT_MAT4 */
- { 10039, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
- { 10057, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
- { 10073, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
- { 10089, 0x00008B50 }, /* GL_FLOAT_VEC2 */
- { 10103, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
- { 10121, 0x00008B51 }, /* GL_FLOAT_VEC3 */
- { 10135, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
- { 10153, 0x00008B52 }, /* GL_FLOAT_VEC4 */
- { 10167, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
- { 10185, 0x00000B60 }, /* GL_FOG */
- { 10192, 0x00000080 }, /* GL_FOG_BIT */
- { 10203, 0x00000B66 }, /* GL_FOG_COLOR */
- { 10216, 0x00008451 }, /* GL_FOG_COORD */
- { 10229, 0x00008451 }, /* GL_FOG_COORDINATE */
- { 10247, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
- { 10271, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- { 10310, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
- { 10353, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- { 10385, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- { 10416, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- { 10445, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
- { 10470, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
- { 10489, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
- { 10523, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
- { 10550, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
- { 10576, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
- { 10600, 0x00008450 }, /* GL_FOG_COORD_SRC */
- { 10617, 0x00000B62 }, /* GL_FOG_DENSITY */
- { 10632, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
- { 10656, 0x00000B64 }, /* GL_FOG_END */
- { 10667, 0x00000C54 }, /* GL_FOG_HINT */
- { 10679, 0x00000B61 }, /* GL_FOG_INDEX */
- { 10692, 0x00000B65 }, /* GL_FOG_MODE */
- { 10704, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
- { 10723, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
- { 10748, 0x00000B63 }, /* GL_FOG_START */
- { 10761, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
- { 10779, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
- { 10803, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
- { 10822, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
- { 10845, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- { 10880, 0x00008D40 }, /* GL_FRAMEBUFFER */
- { 10895, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- { 10932, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- { 10968, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- { 11009, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- { 11050, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- { 11087, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- { 11124, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- { 11162, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
- { 11204, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- { 11242, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
- { 11284, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- { 11319, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- { 11358, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
- { 11407, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- { 11455, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
- { 11507, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- { 11547, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
- { 11591, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- { 11631, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
- { 11675, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
- { 11698, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
- { 11725, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
- { 11749, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
- { 11777, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
- { 11800, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
- { 11819, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- { 11856, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
- { 11897, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- { 11938, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- { 11976, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
- { 12018, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- { 12069, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- { 12107, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- { 12152, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
- { 12201, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- { 12239, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
- { 12281, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- { 12319, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
- { 12361, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- { 12393, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
- { 12418, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
- { 12445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
- { 12476, 0x00000404 }, /* GL_FRONT */
- { 12485, 0x00000408 }, /* GL_FRONT_AND_BACK */
- { 12503, 0x00000B46 }, /* GL_FRONT_FACE */
- { 12517, 0x00000400 }, /* GL_FRONT_LEFT */
- { 12531, 0x00000401 }, /* GL_FRONT_RIGHT */
- { 12546, 0x00008006 }, /* GL_FUNC_ADD */
- { 12558, 0x00008006 }, /* GL_FUNC_ADD_EXT */
- { 12574, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
- { 12599, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
- { 12628, 0x0000800A }, /* GL_FUNC_SUBTRACT */
- { 12645, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
- { 12666, 0x00008191 }, /* GL_GENERATE_MIPMAP */
- { 12685, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
- { 12709, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
- { 12738, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
- { 12762, 0x00000206 }, /* GL_GEQUAL */
- { 12772, 0x00000204 }, /* GL_GREATER */
- { 12783, 0x00001904 }, /* GL_GREEN */
- { 12792, 0x00000D19 }, /* GL_GREEN_BIAS */
- { 12806, 0x00000D53 }, /* GL_GREEN_BITS */
- { 12820, 0x00000D18 }, /* GL_GREEN_SCALE */
- { 12835, 0x0000140B }, /* GL_HALF_FLOAT */
- { 12849, 0x00008000 }, /* GL_HINT_BIT */
- { 12861, 0x00008024 }, /* GL_HISTOGRAM */
- { 12874, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
- { 12898, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
- { 12926, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
- { 12949, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
- { 12976, 0x00008024 }, /* GL_HISTOGRAM_EXT */
- { 12993, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
- { 13013, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
- { 13037, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
- { 13061, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
- { 13089, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- { 13117, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
- { 13149, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
- { 13171, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
- { 13197, 0x0000802D }, /* GL_HISTOGRAM_SINK */
- { 13215, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
- { 13237, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
- { 13256, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
- { 13279, 0x0000862A }, /* GL_IDENTITY_NV */
- { 13294, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
- { 13314, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- { 13354, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- { 13392, 0x00001E02 }, /* GL_INCR */
- { 13400, 0x00008507 }, /* GL_INCR_WRAP */
- { 13413, 0x00008507 }, /* GL_INCR_WRAP_EXT */
- { 13430, 0x00008222 }, /* GL_INDEX */
- { 13439, 0x00008077 }, /* GL_INDEX_ARRAY */
- { 13454, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- { 13484, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
- { 13518, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
- { 13541, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
- { 13563, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
- { 13583, 0x00000D51 }, /* GL_INDEX_BITS */
- { 13597, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
- { 13618, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
- { 13636, 0x00000C30 }, /* GL_INDEX_MODE */
- { 13650, 0x00000D13 }, /* GL_INDEX_OFFSET */
- { 13666, 0x00000D12 }, /* GL_INDEX_SHIFT */
- { 13681, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
- { 13700, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
- { 13719, 0x00001404 }, /* GL_INT */
- { 13726, 0x00008049 }, /* GL_INTENSITY */
- { 13739, 0x0000804C }, /* GL_INTENSITY12 */
- { 13754, 0x0000804C }, /* GL_INTENSITY12_EXT */
- { 13773, 0x0000804D }, /* GL_INTENSITY16 */
- { 13788, 0x0000804D }, /* GL_INTENSITY16_EXT */
- { 13807, 0x0000804A }, /* GL_INTENSITY4 */
- { 13821, 0x0000804A }, /* GL_INTENSITY4_EXT */
- { 13839, 0x0000804B }, /* GL_INTENSITY8 */
- { 13853, 0x0000804B }, /* GL_INTENSITY8_EXT */
- { 13871, 0x00008049 }, /* GL_INTENSITY_EXT */
- { 13888, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
- { 13915, 0x00008575 }, /* GL_INTERPOLATE */
- { 13930, 0x00008575 }, /* GL_INTERPOLATE_ARB */
- { 13949, 0x00008575 }, /* GL_INTERPOLATE_EXT */
- { 13968, 0x00008B53 }, /* GL_INT_VEC2 */
- { 13980, 0x00008B53 }, /* GL_INT_VEC2_ARB */
- { 13996, 0x00008B54 }, /* GL_INT_VEC3 */
- { 14008, 0x00008B54 }, /* GL_INT_VEC3_ARB */
- { 14024, 0x00008B55 }, /* GL_INT_VEC4 */
- { 14036, 0x00008B55 }, /* GL_INT_VEC4_ARB */
- { 14052, 0x00000500 }, /* GL_INVALID_ENUM */
- { 14068, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
- { 14101, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
- { 14138, 0x00000502 }, /* GL_INVALID_OPERATION */
- { 14159, 0x00000501 }, /* GL_INVALID_VALUE */
- { 14176, 0x0000862B }, /* GL_INVERSE_NV */
- { 14190, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
- { 14214, 0x0000150A }, /* GL_INVERT */
- { 14224, 0x00001E00 }, /* GL_KEEP */
- { 14232, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
- { 14258, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
- { 14288, 0x00000406 }, /* GL_LEFT */
- { 14296, 0x00000203 }, /* GL_LEQUAL */
- { 14306, 0x00000201 }, /* GL_LESS */
- { 14314, 0x00004000 }, /* GL_LIGHT0 */
- { 14324, 0x00004001 }, /* GL_LIGHT1 */
- { 14334, 0x00004002 }, /* GL_LIGHT2 */
- { 14344, 0x00004003 }, /* GL_LIGHT3 */
- { 14354, 0x00004004 }, /* GL_LIGHT4 */
- { 14364, 0x00004005 }, /* GL_LIGHT5 */
- { 14374, 0x00004006 }, /* GL_LIGHT6 */
- { 14384, 0x00004007 }, /* GL_LIGHT7 */
- { 14394, 0x00000B50 }, /* GL_LIGHTING */
- { 14406, 0x00000040 }, /* GL_LIGHTING_BIT */
- { 14422, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
- { 14445, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- { 14474, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
- { 14507, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- { 14535, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
- { 14559, 0x00001B01 }, /* GL_LINE */
- { 14567, 0x00002601 }, /* GL_LINEAR */
- { 14577, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
- { 14599, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- { 14629, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- { 14660, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
- { 14684, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
- { 14709, 0x00000001 }, /* GL_LINES */
- { 14718, 0x00000004 }, /* GL_LINE_BIT */
- { 14730, 0x00000002 }, /* GL_LINE_LOOP */
- { 14743, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
- { 14763, 0x00000B20 }, /* GL_LINE_SMOOTH */
- { 14778, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
- { 14798, 0x00000B24 }, /* GL_LINE_STIPPLE */
- { 14814, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
- { 14838, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
- { 14861, 0x00000003 }, /* GL_LINE_STRIP */
- { 14875, 0x00000702 }, /* GL_LINE_TOKEN */
- { 14889, 0x00000B21 }, /* GL_LINE_WIDTH */
- { 14903, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
- { 14929, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
- { 14949, 0x00008B82 }, /* GL_LINK_STATUS */
- { 14964, 0x00000B32 }, /* GL_LIST_BASE */
- { 14977, 0x00020000 }, /* GL_LIST_BIT */
- { 14989, 0x00000B33 }, /* GL_LIST_INDEX */
- { 15003, 0x00000B30 }, /* GL_LIST_MODE */
- { 15016, 0x00000101 }, /* GL_LOAD */
- { 15024, 0x00000BF1 }, /* GL_LOGIC_OP */
- { 15036, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
- { 15053, 0x00008CA1 }, /* GL_LOWER_LEFT */
- { 15067, 0x00001909 }, /* GL_LUMINANCE */
- { 15080, 0x00008041 }, /* GL_LUMINANCE12 */
- { 15095, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
- { 15118, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
- { 15145, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
- { 15167, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
- { 15193, 0x00008041 }, /* GL_LUMINANCE12_EXT */
- { 15212, 0x00008042 }, /* GL_LUMINANCE16 */
- { 15227, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
- { 15250, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
- { 15277, 0x00008042 }, /* GL_LUMINANCE16_EXT */
- { 15296, 0x0000803F }, /* GL_LUMINANCE4 */
- { 15310, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
- { 15331, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
- { 15356, 0x0000803F }, /* GL_LUMINANCE4_EXT */
- { 15374, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
- { 15395, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
- { 15420, 0x00008040 }, /* GL_LUMINANCE8 */
- { 15434, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
- { 15455, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
- { 15480, 0x00008040 }, /* GL_LUMINANCE8_EXT */
- { 15498, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
- { 15517, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
- { 15533, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
- { 15553, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
- { 15575, 0x00000D91 }, /* GL_MAP1_INDEX */
- { 15589, 0x00000D92 }, /* GL_MAP1_NORMAL */
- { 15604, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
- { 15628, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
- { 15652, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
- { 15676, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
- { 15700, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
- { 15717, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
- { 15734, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- { 15762, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- { 15791, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- { 15820, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- { 15849, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- { 15878, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- { 15907, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- { 15936, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- { 15964, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- { 15992, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- { 16020, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- { 16048, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- { 16076, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- { 16104, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- { 16132, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- { 16160, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- { 16188, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
- { 16204, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
- { 16224, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
- { 16246, 0x00000DB1 }, /* GL_MAP2_INDEX */
- { 16260, 0x00000DB2 }, /* GL_MAP2_NORMAL */
- { 16275, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
- { 16299, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
- { 16323, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
- { 16347, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
- { 16371, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
- { 16388, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
- { 16405, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- { 16433, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- { 16462, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- { 16491, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- { 16520, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- { 16549, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- { 16578, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- { 16607, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- { 16635, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- { 16663, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- { 16691, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- { 16719, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- { 16747, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- { 16775, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
- { 16803, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- { 16831, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- { 16859, 0x00000D10 }, /* GL_MAP_COLOR */
- { 16872, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
- { 16898, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
- { 16927, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
- { 16955, 0x00000001 }, /* GL_MAP_READ_BIT */
- { 16971, 0x00000D11 }, /* GL_MAP_STENCIL */
- { 16986, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
- { 17012, 0x00000002 }, /* GL_MAP_WRITE_BIT */
- { 17029, 0x000088C0 }, /* GL_MATRIX0_ARB */
- { 17044, 0x00008630 }, /* GL_MATRIX0_NV */
- { 17058, 0x000088CA }, /* GL_MATRIX10_ARB */
- { 17074, 0x000088CB }, /* GL_MATRIX11_ARB */
- { 17090, 0x000088CC }, /* GL_MATRIX12_ARB */
- { 17106, 0x000088CD }, /* GL_MATRIX13_ARB */
- { 17122, 0x000088CE }, /* GL_MATRIX14_ARB */
- { 17138, 0x000088CF }, /* GL_MATRIX15_ARB */
- { 17154, 0x000088D0 }, /* GL_MATRIX16_ARB */
- { 17170, 0x000088D1 }, /* GL_MATRIX17_ARB */
- { 17186, 0x000088D2 }, /* GL_MATRIX18_ARB */
- { 17202, 0x000088D3 }, /* GL_MATRIX19_ARB */
- { 17218, 0x000088C1 }, /* GL_MATRIX1_ARB */
- { 17233, 0x00008631 }, /* GL_MATRIX1_NV */
- { 17247, 0x000088D4 }, /* GL_MATRIX20_ARB */
- { 17263, 0x000088D5 }, /* GL_MATRIX21_ARB */
- { 17279, 0x000088D6 }, /* GL_MATRIX22_ARB */
- { 17295, 0x000088D7 }, /* GL_MATRIX23_ARB */
- { 17311, 0x000088D8 }, /* GL_MATRIX24_ARB */
- { 17327, 0x000088D9 }, /* GL_MATRIX25_ARB */
- { 17343, 0x000088DA }, /* GL_MATRIX26_ARB */
- { 17359, 0x000088DB }, /* GL_MATRIX27_ARB */
- { 17375, 0x000088DC }, /* GL_MATRIX28_ARB */
- { 17391, 0x000088DD }, /* GL_MATRIX29_ARB */
- { 17407, 0x000088C2 }, /* GL_MATRIX2_ARB */
- { 17422, 0x00008632 }, /* GL_MATRIX2_NV */
- { 17436, 0x000088DE }, /* GL_MATRIX30_ARB */
- { 17452, 0x000088DF }, /* GL_MATRIX31_ARB */
- { 17468, 0x000088C3 }, /* GL_MATRIX3_ARB */
- { 17483, 0x00008633 }, /* GL_MATRIX3_NV */
- { 17497, 0x000088C4 }, /* GL_MATRIX4_ARB */
- { 17512, 0x00008634 }, /* GL_MATRIX4_NV */
- { 17526, 0x000088C5 }, /* GL_MATRIX5_ARB */
- { 17541, 0x00008635 }, /* GL_MATRIX5_NV */
- { 17555, 0x000088C6 }, /* GL_MATRIX6_ARB */
- { 17570, 0x00008636 }, /* GL_MATRIX6_NV */
- { 17584, 0x000088C7 }, /* GL_MATRIX7_ARB */
- { 17599, 0x00008637 }, /* GL_MATRIX7_NV */
- { 17613, 0x000088C8 }, /* GL_MATRIX8_ARB */
- { 17628, 0x000088C9 }, /* GL_MATRIX9_ARB */
- { 17643, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
- { 17669, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- { 17703, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- { 17734, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- { 17767, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- { 17798, 0x00000BA0 }, /* GL_MATRIX_MODE */
- { 17813, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
- { 17835, 0x00008008 }, /* GL_MAX */
- { 17842, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
- { 17865, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- { 17897, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
- { 17923, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- { 17956, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- { 17982, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 18016, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
- { 18035, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
- { 18060, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
- { 18089, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- { 18121, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
- { 18157, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- { 18193, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
- { 18233, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
- { 18259, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
- { 18289, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
- { 18314, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
- { 18343, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- { 18372, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
- { 18405, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
- { 18425, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
- { 18449, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
- { 18473, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
- { 18497, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
- { 18522, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
- { 18540, 0x00008008 }, /* GL_MAX_EXT */
- { 18551, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- { 18586, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
- { 18625, 0x00000D31 }, /* GL_MAX_LIGHTS */
- { 18639, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
- { 18659, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- { 18697, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- { 18726, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
- { 18750, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
- { 18778, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
- { 18801, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 18838, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 18874, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- { 18901, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- { 18930, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- { 18964, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
- { 19000, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- { 19027, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- { 19059, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- { 19095, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- { 19124, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- { 19153, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
- { 19181, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- { 19219, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 19263, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 19306, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 19340, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 19379, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 19416, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 19454, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 19497, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 19540, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- { 19570, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- { 19601, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 19637, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 19673, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
- { 19703, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- { 19737, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
- { 19770, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
- { 19795, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
- { 19824, 0x00008D57 }, /* GL_MAX_SAMPLES */
- { 19839, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
- { 19858, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- { 19885, 0x00008504 }, /* GL_MAX_SHININESS_NV */
- { 19905, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
- { 19929, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
- { 19951, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
- { 19977, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- { 20004, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
- { 20035, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
- { 20059, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- { 20093, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
- { 20113, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
- { 20140, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
- { 20161, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
- { 20186, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
- { 20211, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
- { 20246, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- { 20299, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- { 20346, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- { 20396, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
- { 20418, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
- { 20444, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
- { 20466, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
- { 20492, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- { 20526, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
- { 20564, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- { 20597, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
- { 20634, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
- { 20658, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
- { 20679, 0x00008007 }, /* GL_MIN */
- { 20686, 0x0000802E }, /* GL_MINMAX */
- { 20696, 0x0000802E }, /* GL_MINMAX_EXT */
- { 20710, 0x0000802F }, /* GL_MINMAX_FORMAT */
- { 20727, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
- { 20748, 0x00008030 }, /* GL_MINMAX_SINK */
- { 20763, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
- { 20782, 0x00008007 }, /* GL_MIN_EXT */
- { 20793, 0x00008370 }, /* GL_MIRRORED_REPEAT */
- { 20812, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
- { 20835, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
- { 20858, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
- { 20878, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
- { 20898, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- { 20928, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
- { 20956, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- { 20984, 0x00001700 }, /* GL_MODELVIEW */
- { 20997, 0x00001700 }, /* GL_MODELVIEW0_ARB */
- { 21015, 0x0000872A }, /* GL_MODELVIEW10_ARB */
- { 21034, 0x0000872B }, /* GL_MODELVIEW11_ARB */
- { 21053, 0x0000872C }, /* GL_MODELVIEW12_ARB */
- { 21072, 0x0000872D }, /* GL_MODELVIEW13_ARB */
- { 21091, 0x0000872E }, /* GL_MODELVIEW14_ARB */
- { 21110, 0x0000872F }, /* GL_MODELVIEW15_ARB */
- { 21129, 0x00008730 }, /* GL_MODELVIEW16_ARB */
- { 21148, 0x00008731 }, /* GL_MODELVIEW17_ARB */
- { 21167, 0x00008732 }, /* GL_MODELVIEW18_ARB */
- { 21186, 0x00008733 }, /* GL_MODELVIEW19_ARB */
- { 21205, 0x0000850A }, /* GL_MODELVIEW1_ARB */
- { 21223, 0x00008734 }, /* GL_MODELVIEW20_ARB */
- { 21242, 0x00008735 }, /* GL_MODELVIEW21_ARB */
- { 21261, 0x00008736 }, /* GL_MODELVIEW22_ARB */
- { 21280, 0x00008737 }, /* GL_MODELVIEW23_ARB */
- { 21299, 0x00008738 }, /* GL_MODELVIEW24_ARB */
- { 21318, 0x00008739 }, /* GL_MODELVIEW25_ARB */
- { 21337, 0x0000873A }, /* GL_MODELVIEW26_ARB */
- { 21356, 0x0000873B }, /* GL_MODELVIEW27_ARB */
- { 21375, 0x0000873C }, /* GL_MODELVIEW28_ARB */
- { 21394, 0x0000873D }, /* GL_MODELVIEW29_ARB */
- { 21413, 0x00008722 }, /* GL_MODELVIEW2_ARB */
- { 21431, 0x0000873E }, /* GL_MODELVIEW30_ARB */
- { 21450, 0x0000873F }, /* GL_MODELVIEW31_ARB */
- { 21469, 0x00008723 }, /* GL_MODELVIEW3_ARB */
- { 21487, 0x00008724 }, /* GL_MODELVIEW4_ARB */
- { 21505, 0x00008725 }, /* GL_MODELVIEW5_ARB */
- { 21523, 0x00008726 }, /* GL_MODELVIEW6_ARB */
- { 21541, 0x00008727 }, /* GL_MODELVIEW7_ARB */
- { 21559, 0x00008728 }, /* GL_MODELVIEW8_ARB */
- { 21577, 0x00008729 }, /* GL_MODELVIEW9_ARB */
- { 21595, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
- { 21615, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
- { 21642, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
- { 21667, 0x00002100 }, /* GL_MODULATE */
- { 21679, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
- { 21699, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
- { 21726, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
- { 21751, 0x00000103 }, /* GL_MULT */
- { 21759, 0x0000809D }, /* GL_MULTISAMPLE */
- { 21774, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
- { 21794, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
- { 21813, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
- { 21832, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
- { 21856, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
- { 21879, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- { 21909, 0x00002A25 }, /* GL_N3F_V3F */
- { 21920, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
- { 21940, 0x0000150E }, /* GL_NAND */
- { 21948, 0x00002600 }, /* GL_NEAREST */
- { 21959, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- { 21990, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- { 22022, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
- { 22047, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
- { 22073, 0x00000200 }, /* GL_NEVER */
- { 22082, 0x00001102 }, /* GL_NICEST */
- { 22092, 0x00000000 }, /* GL_NONE */
- { 22100, 0x00001505 }, /* GL_NOOP */
- { 22108, 0x00001508 }, /* GL_NOR */
- { 22115, 0x00000BA1 }, /* GL_NORMALIZE */
- { 22128, 0x00008075 }, /* GL_NORMAL_ARRAY */
- { 22144, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- { 22175, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
- { 22210, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
- { 22234, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
- { 22257, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
- { 22278, 0x00008511 }, /* GL_NORMAL_MAP */
- { 22292, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
- { 22310, 0x00008511 }, /* GL_NORMAL_MAP_NV */
- { 22327, 0x00000205 }, /* GL_NOTEQUAL */
- { 22339, 0x00000000 }, /* GL_NO_ERROR */
- { 22351, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- { 22385, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
- { 22423, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
- { 22455, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
- { 22497, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
- { 22527, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
- { 22567, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
- { 22598, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
- { 22627, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
- { 22655, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
- { 22685, 0x00002401 }, /* GL_OBJECT_LINEAR */
- { 22702, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
- { 22728, 0x00002501 }, /* GL_OBJECT_PLANE */
- { 22744, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
- { 22779, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
- { 22801, 0x00009112 }, /* GL_OBJECT_TYPE */
- { 22816, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
- { 22835, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
- { 22865, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
- { 22886, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
- { 22914, 0x00000001 }, /* GL_ONE */
- { 22921, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- { 22949, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
- { 22981, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
- { 23009, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
- { 23041, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
- { 23064, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
- { 23087, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
- { 23110, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
- { 23133, 0x00008598 }, /* GL_OPERAND0_ALPHA */
- { 23151, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
- { 23173, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
- { 23195, 0x00008590 }, /* GL_OPERAND0_RGB */
- { 23211, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
- { 23231, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
- { 23251, 0x00008599 }, /* GL_OPERAND1_ALPHA */
- { 23269, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
- { 23291, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
- { 23313, 0x00008591 }, /* GL_OPERAND1_RGB */
- { 23329, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
- { 23349, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
- { 23369, 0x0000859A }, /* GL_OPERAND2_ALPHA */
- { 23387, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
- { 23409, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
- { 23431, 0x00008592 }, /* GL_OPERAND2_RGB */
- { 23447, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
- { 23467, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
- { 23487, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
- { 23508, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
- { 23527, 0x00001507 }, /* GL_OR */
- { 23533, 0x00000A01 }, /* GL_ORDER */
- { 23542, 0x0000150D }, /* GL_OR_INVERTED */
- { 23557, 0x0000150B }, /* GL_OR_REVERSE */
- { 23571, 0x00000505 }, /* GL_OUT_OF_MEMORY */
- { 23588, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
- { 23606, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
- { 23627, 0x00008758 }, /* GL_PACK_INVERT_MESA */
- { 23647, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
- { 23665, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
- { 23684, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
- { 23704, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
- { 23724, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
- { 23742, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
- { 23761, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
- { 23786, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
- { 23810, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
- { 23831, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
- { 23853, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
- { 23875, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
- { 23900, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
- { 23924, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
- { 23945, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
- { 23967, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
- { 23989, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
- { 24011, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
- { 24042, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
- { 24062, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- { 24087, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
- { 24107, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- { 24132, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
- { 24152, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- { 24177, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
- { 24197, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- { 24222, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
- { 24242, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- { 24267, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
- { 24287, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- { 24312, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
- { 24332, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- { 24357, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
- { 24377, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- { 24402, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
- { 24422, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- { 24447, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
- { 24467, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- { 24492, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
- { 24510, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
- { 24531, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
- { 24560, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
- { 24593, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
- { 24618, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
- { 24641, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- { 24672, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
- { 24707, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
- { 24734, 0x00001B00 }, /* GL_POINT */
- { 24743, 0x00000000 }, /* GL_POINTS */
- { 24753, 0x00000002 }, /* GL_POINT_BIT */
- { 24766, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
- { 24796, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
- { 24830, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
- { 24864, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
- { 24899, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
- { 24928, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
- { 24961, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
- { 24994, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
- { 25028, 0x00000B11 }, /* GL_POINT_SIZE */
- { 25042, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
- { 25068, 0x00008127 }, /* GL_POINT_SIZE_MAX */
- { 25086, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
- { 25108, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
- { 25130, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
- { 25153, 0x00008126 }, /* GL_POINT_SIZE_MIN */
- { 25171, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
- { 25193, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
- { 25215, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
- { 25238, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
- { 25258, 0x00000B10 }, /* GL_POINT_SMOOTH */
- { 25274, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
- { 25295, 0x00008861 }, /* GL_POINT_SPRITE */
- { 25311, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
- { 25331, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
- { 25360, 0x00008861 }, /* GL_POINT_SPRITE_NV */
- { 25379, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
- { 25405, 0x00000701 }, /* GL_POINT_TOKEN */
- { 25420, 0x00000009 }, /* GL_POLYGON */
- { 25431, 0x00000008 }, /* GL_POLYGON_BIT */
- { 25446, 0x00000B40 }, /* GL_POLYGON_MODE */
- { 25462, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
- { 25485, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
- { 25510, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
- { 25533, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
- { 25556, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
- { 25580, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
- { 25604, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
- { 25622, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
- { 25645, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
- { 25664, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
- { 25687, 0x00000703 }, /* GL_POLYGON_TOKEN */
- { 25704, 0x00001203 }, /* GL_POSITION */
- { 25716, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- { 25748, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
- { 25784, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- { 25817, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
- { 25854, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- { 25885, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
- { 25920, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- { 25952, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
- { 25988, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- { 26021, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- { 26053, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
- { 26089, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- { 26122, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
- { 26159, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- { 26189, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
- { 26223, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- { 26254, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
- { 26289, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- { 26320, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
- { 26355, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- { 26387, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
- { 26423, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- { 26453, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
- { 26487, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- { 26518, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
- { 26553, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- { 26585, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- { 26616, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
- { 26651, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- { 26683, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
- { 26719, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
- { 26748, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
- { 26781, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
- { 26811, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
- { 26845, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- { 26884, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- { 26917, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- { 26957, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- { 26991, 0x00008578 }, /* GL_PREVIOUS */
- { 27003, 0x00008578 }, /* GL_PREVIOUS_ARB */
- { 27019, 0x00008578 }, /* GL_PREVIOUS_EXT */
- { 27035, 0x00008577 }, /* GL_PRIMARY_COLOR */
- { 27052, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
- { 27073, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
- { 27094, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
- { 27122, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 27155, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 27187, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
- { 27210, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
- { 27233, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
- { 27263, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
- { 27292, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
- { 27320, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
- { 27342, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- { 27370, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- { 27398, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
- { 27420, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
- { 27441, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 27481, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 27520, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 27550, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 27585, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 27618, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 27652, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 27691, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 27730, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
- { 27752, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
- { 27778, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
- { 27802, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
- { 27825, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
- { 27847, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
- { 27868, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
- { 27889, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
- { 27916, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 27948, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 27980, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- { 28015, 0x00001701 }, /* GL_PROJECTION */
- { 28029, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
- { 28050, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
- { 28076, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
- { 28096, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
- { 28120, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
- { 28141, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
- { 28160, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
- { 28183, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- { 28222, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- { 28260, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
- { 28280, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- { 28310, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
- { 28334, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
- { 28354, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- { 28384, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
- { 28408, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
- { 28428, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- { 28461, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
- { 28487, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
- { 28517, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- { 28548, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
- { 28578, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
- { 28597, 0x00002003 }, /* GL_Q */
- { 28602, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
- { 28627, 0x00000007 }, /* GL_QUADS */
- { 28636, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- { 28680, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
- { 28728, 0x00008614 }, /* GL_QUAD_MESH_SUN */
- { 28745, 0x00000008 }, /* GL_QUAD_STRIP */
- { 28759, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- { 28789, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
- { 28816, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
- { 28838, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
- { 28864, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
- { 28884, 0x00008866 }, /* GL_QUERY_RESULT */
- { 28900, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
- { 28920, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
- { 28946, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
- { 28976, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
- { 28993, 0x00002002 }, /* GL_R */
- { 28998, 0x00002A10 }, /* GL_R3_G3_B2 */
- { 29010, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
- { 29036, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- { 29069, 0x00000C02 }, /* GL_READ_BUFFER */
- { 29084, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
- { 29104, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
- { 29132, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
- { 29164, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
- { 29188, 0x000088B8 }, /* GL_READ_ONLY */
- { 29201, 0x000088B8 }, /* GL_READ_ONLY_ARB */
- { 29218, 0x000088BA }, /* GL_READ_WRITE */
- { 29232, 0x000088BA }, /* GL_READ_WRITE_ARB */
- { 29250, 0x00001903 }, /* GL_RED */
- { 29257, 0x00008016 }, /* GL_REDUCE */
- { 29267, 0x00008016 }, /* GL_REDUCE_EXT */
- { 29281, 0x00000D15 }, /* GL_RED_BIAS */
- { 29293, 0x00000D52 }, /* GL_RED_BITS */
- { 29305, 0x00000D14 }, /* GL_RED_SCALE */
- { 29318, 0x00008512 }, /* GL_REFLECTION_MAP */
- { 29336, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
- { 29358, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
- { 29379, 0x00008A19 }, /* GL_RELEASED_APPLE */
- { 29397, 0x00001C00 }, /* GL_RENDER */
- { 29407, 0x00008D41 }, /* GL_RENDERBUFFER */
- { 29423, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
- { 29450, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
- { 29474, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
- { 29502, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
- { 29528, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
- { 29555, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
- { 29575, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
- { 29602, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
- { 29625, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
- { 29652, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- { 29684, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
- { 29720, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
- { 29745, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
- { 29769, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
- { 29797, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
- { 29826, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
- { 29848, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
- { 29874, 0x00001F01 }, /* GL_RENDERER */
- { 29886, 0x00000C40 }, /* GL_RENDER_MODE */
- { 29901, 0x00002901 }, /* GL_REPEAT */
- { 29911, 0x00001E01 }, /* GL_REPLACE */
- { 29922, 0x00008062 }, /* GL_REPLACE_EXT */
- { 29937, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
- { 29960, 0x0000803A }, /* GL_RESCALE_NORMAL */
- { 29978, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
- { 30000, 0x00008A1B }, /* GL_RETAINED_APPLE */
- { 30018, 0x00000102 }, /* GL_RETURN */
- { 30028, 0x00001907 }, /* GL_RGB */
- { 30035, 0x00008052 }, /* GL_RGB10 */
- { 30044, 0x00008059 }, /* GL_RGB10_A2 */
- { 30056, 0x00008059 }, /* GL_RGB10_A2_EXT */
- { 30072, 0x00008052 }, /* GL_RGB10_EXT */
- { 30085, 0x00008053 }, /* GL_RGB12 */
- { 30094, 0x00008053 }, /* GL_RGB12_EXT */
- { 30107, 0x00008054 }, /* GL_RGB16 */
- { 30116, 0x00008054 }, /* GL_RGB16_EXT */
- { 30129, 0x0000804E }, /* GL_RGB2_EXT */
- { 30141, 0x0000804F }, /* GL_RGB4 */
- { 30149, 0x0000804F }, /* GL_RGB4_EXT */
- { 30161, 0x000083A1 }, /* GL_RGB4_S3TC */
- { 30174, 0x00008050 }, /* GL_RGB5 */
- { 30182, 0x00008057 }, /* GL_RGB5_A1 */
- { 30193, 0x00008057 }, /* GL_RGB5_A1_EXT */
- { 30208, 0x00008050 }, /* GL_RGB5_EXT */
- { 30220, 0x00008051 }, /* GL_RGB8 */
- { 30228, 0x00008051 }, /* GL_RGB8_EXT */
- { 30240, 0x00001908 }, /* GL_RGBA */
- { 30248, 0x0000805A }, /* GL_RGBA12 */
- { 30258, 0x0000805A }, /* GL_RGBA12_EXT */
- { 30272, 0x0000805B }, /* GL_RGBA16 */
- { 30282, 0x0000805B }, /* GL_RGBA16_EXT */
- { 30296, 0x00008055 }, /* GL_RGBA2 */
- { 30305, 0x00008055 }, /* GL_RGBA2_EXT */
- { 30318, 0x00008056 }, /* GL_RGBA4 */
- { 30327, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
- { 30346, 0x00008056 }, /* GL_RGBA4_EXT */
- { 30359, 0x000083A3 }, /* GL_RGBA4_S3TC */
- { 30373, 0x00008058 }, /* GL_RGBA8 */
- { 30382, 0x00008058 }, /* GL_RGBA8_EXT */
- { 30395, 0x00008F97 }, /* GL_RGBA8_SNORM */
- { 30410, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
- { 30428, 0x00000C31 }, /* GL_RGBA_MODE */
- { 30441, 0x000083A2 }, /* GL_RGBA_S3TC */
- { 30454, 0x00008F93 }, /* GL_RGBA_SNORM */
- { 30468, 0x000083A0 }, /* GL_RGB_S3TC */
- { 30480, 0x00008573 }, /* GL_RGB_SCALE */
- { 30493, 0x00008573 }, /* GL_RGB_SCALE_ARB */
- { 30510, 0x00008573 }, /* GL_RGB_SCALE_EXT */
- { 30527, 0x00000407 }, /* GL_RIGHT */
- { 30536, 0x00002000 }, /* GL_S */
- { 30541, 0x00008B5D }, /* GL_SAMPLER_1D */
- { 30555, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
- { 30576, 0x00008B5E }, /* GL_SAMPLER_2D */
- { 30590, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
- { 30611, 0x00008B5F }, /* GL_SAMPLER_3D */
- { 30625, 0x00008B60 }, /* GL_SAMPLER_CUBE */
- { 30641, 0x000080A9 }, /* GL_SAMPLES */
- { 30652, 0x000086B4 }, /* GL_SAMPLES_3DFX */
- { 30668, 0x000080A9 }, /* GL_SAMPLES_ARB */
- { 30683, 0x00008914 }, /* GL_SAMPLES_PASSED */
- { 30701, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
- { 30723, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- { 30751, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
- { 30783, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
- { 30806, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
- { 30833, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
- { 30851, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
- { 30874, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
- { 30896, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
- { 30915, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
- { 30938, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
- { 30964, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
- { 30994, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
- { 31019, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
- { 31048, 0x00080000 }, /* GL_SCISSOR_BIT */
- { 31063, 0x00000C10 }, /* GL_SCISSOR_BOX */
- { 31078, 0x00000C11 }, /* GL_SCISSOR_TEST */
- { 31094, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
- { 31119, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- { 31159, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 31203, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- { 31236, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- { 31266, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- { 31298, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- { 31328, 0x00001C02 }, /* GL_SELECT */
- { 31338, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
- { 31366, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
- { 31391, 0x00008012 }, /* GL_SEPARABLE_2D */
- { 31407, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
- { 31431, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
- { 31458, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
- { 31489, 0x0000150F }, /* GL_SET */
- { 31496, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
- { 31517, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
- { 31541, 0x00008B4F }, /* GL_SHADER_TYPE */
- { 31556, 0x00000B54 }, /* GL_SHADE_MODEL */
- { 31571, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
- { 31599, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
- { 31622, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- { 31652, 0x00001601 }, /* GL_SHININESS */
- { 31665, 0x00001402 }, /* GL_SHORT */
- { 31674, 0x00009119 }, /* GL_SIGNALED */
- { 31686, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
- { 31707, 0x000081F9 }, /* GL_SINGLE_COLOR */
- { 31723, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
- { 31743, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
- { 31762, 0x00008C46 }, /* GL_SLUMINANCE */
- { 31776, 0x00008C47 }, /* GL_SLUMINANCE8 */
- { 31791, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
- { 31813, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
- { 31833, 0x00001D01 }, /* GL_SMOOTH */
- { 31843, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
- { 31876, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
- { 31903, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
- { 31936, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
- { 31963, 0x00008588 }, /* GL_SOURCE0_ALPHA */
- { 31980, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
- { 32001, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
- { 32022, 0x00008580 }, /* GL_SOURCE0_RGB */
- { 32037, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
- { 32056, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
- { 32075, 0x00008589 }, /* GL_SOURCE1_ALPHA */
- { 32092, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
- { 32113, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
- { 32134, 0x00008581 }, /* GL_SOURCE1_RGB */
- { 32149, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
- { 32168, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
- { 32187, 0x0000858A }, /* GL_SOURCE2_ALPHA */
- { 32204, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
- { 32225, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
- { 32246, 0x00008582 }, /* GL_SOURCE2_RGB */
- { 32261, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
- { 32280, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
- { 32299, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
- { 32319, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
- { 32337, 0x00001202 }, /* GL_SPECULAR */
- { 32349, 0x00002402 }, /* GL_SPHERE_MAP */
- { 32363, 0x00001206 }, /* GL_SPOT_CUTOFF */
- { 32378, 0x00001204 }, /* GL_SPOT_DIRECTION */
- { 32396, 0x00001205 }, /* GL_SPOT_EXPONENT */
- { 32413, 0x00008588 }, /* GL_SRC0_ALPHA */
- { 32427, 0x00008580 }, /* GL_SRC0_RGB */
- { 32439, 0x00008589 }, /* GL_SRC1_ALPHA */
- { 32453, 0x00008581 }, /* GL_SRC1_RGB */
- { 32465, 0x0000858A }, /* GL_SRC2_ALPHA */
- { 32479, 0x00008582 }, /* GL_SRC2_RGB */
- { 32491, 0x00000302 }, /* GL_SRC_ALPHA */
- { 32504, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
- { 32526, 0x00000300 }, /* GL_SRC_COLOR */
- { 32539, 0x00008C40 }, /* GL_SRGB */
- { 32547, 0x00008C41 }, /* GL_SRGB8 */
- { 32556, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
- { 32572, 0x00008C42 }, /* GL_SRGB_ALPHA */
- { 32586, 0x00000503 }, /* GL_STACK_OVERFLOW */
- { 32604, 0x00000504 }, /* GL_STACK_UNDERFLOW */
- { 32623, 0x000088E6 }, /* GL_STATIC_COPY */
- { 32638, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
- { 32657, 0x000088E4 }, /* GL_STATIC_DRAW */
- { 32672, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
- { 32691, 0x000088E5 }, /* GL_STATIC_READ */
- { 32706, 0x000088E5 }, /* GL_STATIC_READ_ARB */
- { 32725, 0x00001802 }, /* GL_STENCIL */
- { 32736, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
- { 32758, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
- { 32784, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
- { 32805, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
- { 32830, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
- { 32851, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
- { 32876, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- { 32908, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
- { 32944, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- { 32976, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
- { 33012, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
- { 33032, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
- { 33059, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
- { 33085, 0x00000D57 }, /* GL_STENCIL_BITS */
- { 33101, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
- { 33123, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
- { 33146, 0x00000B94 }, /* GL_STENCIL_FAIL */
- { 33162, 0x00000B92 }, /* GL_STENCIL_FUNC */
- { 33178, 0x00001901 }, /* GL_STENCIL_INDEX */
- { 33195, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
- { 33213, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
- { 33232, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
- { 33255, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
- { 33277, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
- { 33295, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
- { 33317, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
- { 33335, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
- { 33357, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
- { 33378, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
- { 33405, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
- { 33432, 0x00000B97 }, /* GL_STENCIL_REF */
- { 33447, 0x00000B90 }, /* GL_STENCIL_TEST */
- { 33463, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- { 33492, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
- { 33514, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
- { 33535, 0x00000C33 }, /* GL_STEREO */
- { 33545, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
- { 33569, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
- { 33594, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
- { 33618, 0x000088E2 }, /* GL_STREAM_COPY */
- { 33633, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
- { 33652, 0x000088E0 }, /* GL_STREAM_DRAW */
- { 33667, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
- { 33686, 0x000088E1 }, /* GL_STREAM_READ */
- { 33701, 0x000088E1 }, /* GL_STREAM_READ_ARB */
- { 33720, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
- { 33737, 0x000084E7 }, /* GL_SUBTRACT */
- { 33749, 0x000084E7 }, /* GL_SUBTRACT_ARB */
- { 33765, 0x00009113 }, /* GL_SYNC_CONDITION */
- { 33783, 0x00009116 }, /* GL_SYNC_FENCE */
- { 33797, 0x00009115 }, /* GL_SYNC_FLAGS */
- { 33811, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
- { 33838, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- { 33868, 0x00009114 }, /* GL_SYNC_STATUS */
- { 33883, 0x00002001 }, /* GL_T */
- { 33888, 0x00002A2A }, /* GL_T2F_C3F_V3F */
- { 33903, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
- { 33922, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
- { 33938, 0x00002A2B }, /* GL_T2F_N3F_V3F */
- { 33953, 0x00002A27 }, /* GL_T2F_V3F */
- { 33964, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
- { 33983, 0x00002A28 }, /* GL_T4F_V4F */
- { 33994, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
- { 34017, 0x00001702 }, /* GL_TEXTURE */
- { 34028, 0x000084C0 }, /* GL_TEXTURE0 */
- { 34040, 0x000084C0 }, /* GL_TEXTURE0_ARB */
- { 34056, 0x000084C1 }, /* GL_TEXTURE1 */
- { 34068, 0x000084CA }, /* GL_TEXTURE10 */
- { 34081, 0x000084CA }, /* GL_TEXTURE10_ARB */
- { 34098, 0x000084CB }, /* GL_TEXTURE11 */
- { 34111, 0x000084CB }, /* GL_TEXTURE11_ARB */
- { 34128, 0x000084CC }, /* GL_TEXTURE12 */
- { 34141, 0x000084CC }, /* GL_TEXTURE12_ARB */
- { 34158, 0x000084CD }, /* GL_TEXTURE13 */
- { 34171, 0x000084CD }, /* GL_TEXTURE13_ARB */
- { 34188, 0x000084CE }, /* GL_TEXTURE14 */
- { 34201, 0x000084CE }, /* GL_TEXTURE14_ARB */
- { 34218, 0x000084CF }, /* GL_TEXTURE15 */
- { 34231, 0x000084CF }, /* GL_TEXTURE15_ARB */
- { 34248, 0x000084D0 }, /* GL_TEXTURE16 */
- { 34261, 0x000084D0 }, /* GL_TEXTURE16_ARB */
- { 34278, 0x000084D1 }, /* GL_TEXTURE17 */
- { 34291, 0x000084D1 }, /* GL_TEXTURE17_ARB */
- { 34308, 0x000084D2 }, /* GL_TEXTURE18 */
- { 34321, 0x000084D2 }, /* GL_TEXTURE18_ARB */
- { 34338, 0x000084D3 }, /* GL_TEXTURE19 */
- { 34351, 0x000084D3 }, /* GL_TEXTURE19_ARB */
- { 34368, 0x000084C1 }, /* GL_TEXTURE1_ARB */
- { 34384, 0x000084C2 }, /* GL_TEXTURE2 */
- { 34396, 0x000084D4 }, /* GL_TEXTURE20 */
- { 34409, 0x000084D4 }, /* GL_TEXTURE20_ARB */
- { 34426, 0x000084D5 }, /* GL_TEXTURE21 */
- { 34439, 0x000084D5 }, /* GL_TEXTURE21_ARB */
- { 34456, 0x000084D6 }, /* GL_TEXTURE22 */
- { 34469, 0x000084D6 }, /* GL_TEXTURE22_ARB */
- { 34486, 0x000084D7 }, /* GL_TEXTURE23 */
- { 34499, 0x000084D7 }, /* GL_TEXTURE23_ARB */
- { 34516, 0x000084D8 }, /* GL_TEXTURE24 */
- { 34529, 0x000084D8 }, /* GL_TEXTURE24_ARB */
- { 34546, 0x000084D9 }, /* GL_TEXTURE25 */
- { 34559, 0x000084D9 }, /* GL_TEXTURE25_ARB */
- { 34576, 0x000084DA }, /* GL_TEXTURE26 */
- { 34589, 0x000084DA }, /* GL_TEXTURE26_ARB */
- { 34606, 0x000084DB }, /* GL_TEXTURE27 */
- { 34619, 0x000084DB }, /* GL_TEXTURE27_ARB */
- { 34636, 0x000084DC }, /* GL_TEXTURE28 */
- { 34649, 0x000084DC }, /* GL_TEXTURE28_ARB */
- { 34666, 0x000084DD }, /* GL_TEXTURE29 */
- { 34679, 0x000084DD }, /* GL_TEXTURE29_ARB */
- { 34696, 0x000084C2 }, /* GL_TEXTURE2_ARB */
- { 34712, 0x000084C3 }, /* GL_TEXTURE3 */
- { 34724, 0x000084DE }, /* GL_TEXTURE30 */
- { 34737, 0x000084DE }, /* GL_TEXTURE30_ARB */
- { 34754, 0x000084DF }, /* GL_TEXTURE31 */
- { 34767, 0x000084DF }, /* GL_TEXTURE31_ARB */
- { 34784, 0x000084C3 }, /* GL_TEXTURE3_ARB */
- { 34800, 0x000084C4 }, /* GL_TEXTURE4 */
- { 34812, 0x000084C4 }, /* GL_TEXTURE4_ARB */
- { 34828, 0x000084C5 }, /* GL_TEXTURE5 */
- { 34840, 0x000084C5 }, /* GL_TEXTURE5_ARB */
- { 34856, 0x000084C6 }, /* GL_TEXTURE6 */
- { 34868, 0x000084C6 }, /* GL_TEXTURE6_ARB */
- { 34884, 0x000084C7 }, /* GL_TEXTURE7 */
- { 34896, 0x000084C7 }, /* GL_TEXTURE7_ARB */
- { 34912, 0x000084C8 }, /* GL_TEXTURE8 */
- { 34924, 0x000084C8 }, /* GL_TEXTURE8_ARB */
- { 34940, 0x000084C9 }, /* GL_TEXTURE9 */
- { 34952, 0x000084C9 }, /* GL_TEXTURE9_ARB */
- { 34968, 0x00000DE0 }, /* GL_TEXTURE_1D */
- { 34982, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
- { 35006, 0x00000DE1 }, /* GL_TEXTURE_2D */
- { 35020, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
- { 35044, 0x0000806F }, /* GL_TEXTURE_3D */
- { 35058, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
- { 35080, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
- { 35106, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
- { 35128, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
- { 35150, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- { 35182, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
- { 35204, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- { 35236, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
- { 35258, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
- { 35286, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
- { 35318, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- { 35351, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
- { 35383, 0x00040000 }, /* GL_TEXTURE_BIT */
- { 35398, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
- { 35419, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
- { 35444, 0x00001005 }, /* GL_TEXTURE_BORDER */
- { 35462, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
- { 35486, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- { 35517, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- { 35547, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- { 35577, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- { 35612, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- { 35643, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 35681, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
- { 35708, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- { 35740, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- { 35774, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
- { 35798, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
- { 35826, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
- { 35850, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
- { 35878, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- { 35911, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
- { 35935, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
- { 35957, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
- { 35979, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
- { 36005, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
- { 36039, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- { 36072, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
- { 36109, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
- { 36137, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
- { 36169, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
- { 36192, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- { 36230, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
- { 36272, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- { 36303, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- { 36331, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- { 36361, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- { 36389, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
- { 36409, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
- { 36433, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- { 36464, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
- { 36499, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- { 36530, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
- { 36565, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- { 36596, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
- { 36631, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- { 36662, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
- { 36697, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- { 36728, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
- { 36763, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- { 36794, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
- { 36829, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- { 36858, 0x00008071 }, /* GL_TEXTURE_DEPTH */
- { 36875, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
- { 36897, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
- { 36923, 0x00002300 }, /* GL_TEXTURE_ENV */
- { 36938, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
- { 36959, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
- { 36979, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
- { 37005, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
- { 37025, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
- { 37042, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
- { 37059, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
- { 37076, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
- { 37093, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
- { 37118, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
- { 37140, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
- { 37166, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
- { 37184, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
- { 37210, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
- { 37236, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
- { 37266, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
- { 37293, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
- { 37318, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
- { 37338, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
- { 37362, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- { 37389, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- { 37416, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- { 37443, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
- { 37469, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
- { 37499, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
- { 37521, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
- { 37539, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- { 37569, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- { 37597, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- { 37625, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- { 37653, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
- { 37674, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
- { 37693, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
- { 37715, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
- { 37734, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
- { 37754, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- { 37784, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- { 37815, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
- { 37840, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
- { 37864, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
- { 37884, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
- { 37908, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
- { 37928, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
- { 37951, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
- { 37975, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
- { 38003, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- { 38033, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
- { 38058, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- { 38092, 0x00001000 }, /* GL_TEXTURE_WIDTH */
- { 38109, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
- { 38127, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
- { 38145, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
- { 38163, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
- { 38182, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
- { 38202, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
- { 38221, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- { 38250, 0x00001000 }, /* GL_TRANSFORM_BIT */
- { 38267, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- { 38308, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- { 38341, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- { 38379, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- { 38417, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- { 38456, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- { 38501, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- { 38536, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- { 38581, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
- { 38607, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
- { 38637, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- { 38669, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- { 38699, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
- { 38733, 0x0000862C }, /* GL_TRANSPOSE_NV */
- { 38749, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- { 38780, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
- { 38815, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- { 38843, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
- { 38875, 0x00000004 }, /* GL_TRIANGLES */
- { 38888, 0x00000006 }, /* GL_TRIANGLE_FAN */
- { 38904, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
- { 38925, 0x00000005 }, /* GL_TRIANGLE_STRIP */
- { 38943, 0x00000001 }, /* GL_TRUE */
- { 38951, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
- { 38970, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
- { 38990, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
- { 39013, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
- { 39033, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
- { 39054, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
- { 39076, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
- { 39098, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
- { 39118, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
- { 39139, 0x00009118 }, /* GL_UNSIGNALED */
- { 39153, 0x00001401 }, /* GL_UNSIGNED_BYTE */
- { 39170, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- { 39197, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
- { 39220, 0x00001405 }, /* GL_UNSIGNED_INT */
- { 39236, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
- { 39263, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
- { 39284, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
- { 39309, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
- { 39333, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- { 39364, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
- { 39388, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- { 39416, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
- { 39439, 0x00001403 }, /* GL_UNSIGNED_SHORT */
- { 39457, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- { 39487, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- { 39513, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- { 39543, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- { 39569, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
- { 39593, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- { 39621, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- { 39649, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
- { 39676, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- { 39708, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
- { 39739, 0x00008CA2 }, /* GL_UPPER_LEFT */
- { 39753, 0x00002A20 }, /* GL_V2F */
- { 39760, 0x00002A21 }, /* GL_V3F */
- { 39767, 0x00008B83 }, /* GL_VALIDATE_STATUS */
- { 39786, 0x00001F00 }, /* GL_VENDOR */
- { 39796, 0x00001F02 }, /* GL_VERSION */
- { 39807, 0x00008074 }, /* GL_VERTEX_ARRAY */
- { 39823, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
- { 39847, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
- { 39877, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- { 39908, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
- { 39943, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
- { 39967, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
- { 39988, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
- { 40011, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
- { 40032, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- { 40059, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- { 40087, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- { 40115, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- { 40143, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- { 40171, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- { 40199, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- { 40227, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- { 40254, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- { 40281, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- { 40308, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- { 40335, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- { 40362, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- { 40389, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- { 40416, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- { 40443, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- { 40470, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- { 40508, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
- { 40550, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- { 40581, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
- { 40616, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- { 40650, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
- { 40688, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- { 40719, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
- { 40754, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- { 40782, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
- { 40814, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- { 40844, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
- { 40878, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- { 40906, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
- { 40938, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
- { 40958, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
- { 40980, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
- { 41009, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
- { 41030, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- { 41059, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
- { 41092, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
- { 41124, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- { 41151, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
- { 41182, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
- { 41212, 0x00008B31 }, /* GL_VERTEX_SHADER */
- { 41229, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
- { 41250, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
- { 41277, 0x00000BA2 }, /* GL_VIEWPORT */
- { 41289, 0x00000800 }, /* GL_VIEWPORT_BIT */
- { 41305, 0x00008A1A }, /* GL_VOLATILE_APPLE */
- { 41323, 0x0000911D }, /* GL_WAIT_FAILED */
- { 41338, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
- { 41358, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- { 41389, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
- { 41424, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- { 41452, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- { 41477, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- { 41504, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- { 41529, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
- { 41553, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
- { 41572, 0x000088B9 }, /* GL_WRITE_ONLY */
- { 41586, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
- { 41604, 0x00001506 }, /* GL_XOR */
- { 41611, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
- { 41630, 0x00008757 }, /* GL_YCBCR_MESA */
- { 41644, 0x00000000 }, /* GL_ZERO */
- { 41652, 0x00000D16 }, /* GL_ZOOM_X */
- { 41662, 0x00000D17 }, /* GL_ZOOM_Y */
+ { 1204, 0x000080E1 }, /* GL_BGRA_EXT */
+ { 1216, 0x00001A00 }, /* GL_BITMAP */
+ { 1226, 0x00000704 }, /* GL_BITMAP_TOKEN */
+ { 1242, 0x00000BE2 }, /* GL_BLEND */
+ { 1251, 0x00008005 }, /* GL_BLEND_COLOR */
+ { 1266, 0x00008005 }, /* GL_BLEND_COLOR_EXT */
+ { 1285, 0x00000BE0 }, /* GL_BLEND_DST */
+ { 1298, 0x000080CA }, /* GL_BLEND_DST_ALPHA */
+ { 1317, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */
+ { 1340, 0x000080C8 }, /* GL_BLEND_DST_RGB */
+ { 1357, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */
+ { 1378, 0x00008009 }, /* GL_BLEND_EQUATION */
+ { 1396, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */
+ { 1420, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */
+ { 1448, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */
+ { 1476, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */
+ { 1498, 0x00008009 }, /* GL_BLEND_EQUATION_OES */
+ { 1520, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */
+ { 1542, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */
+ { 1568, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */
+ { 1594, 0x00000BE1 }, /* GL_BLEND_SRC */
+ { 1607, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */
+ { 1626, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */
+ { 1649, 0x000080C9 }, /* GL_BLEND_SRC_RGB */
+ { 1666, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */
+ { 1687, 0x00001905 }, /* GL_BLUE */
+ { 1695, 0x00000D1B }, /* GL_BLUE_BIAS */
+ { 1708, 0x00000D54 }, /* GL_BLUE_BITS */
+ { 1721, 0x00000D1A }, /* GL_BLUE_SCALE */
+ { 1735, 0x00008B56 }, /* GL_BOOL */
+ { 1743, 0x00008B56 }, /* GL_BOOL_ARB */
+ { 1755, 0x00008B57 }, /* GL_BOOL_VEC2 */
+ { 1768, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */
+ { 1785, 0x00008B58 }, /* GL_BOOL_VEC3 */
+ { 1798, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */
+ { 1815, 0x00008B59 }, /* GL_BOOL_VEC4 */
+ { 1828, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */
+ { 1845, 0x000088BB }, /* GL_BUFFER_ACCESS */
+ { 1862, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */
+ { 1883, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */
+ { 1904, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
+ { 1935, 0x000088BC }, /* GL_BUFFER_MAPPED */
+ { 1952, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */
+ { 1973, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */
+ { 1994, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */
+ { 2016, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */
+ { 2042, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */
+ { 2068, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */
+ { 2091, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
+ { 2125, 0x00008764 }, /* GL_BUFFER_SIZE */
+ { 2140, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */
+ { 2159, 0x00008765 }, /* GL_BUFFER_USAGE */
+ { 2175, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */
+ { 2195, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */
+ { 2214, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */
+ { 2240, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */
+ { 2263, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
+ { 2291, 0x0000877C }, /* GL_BUMP_TARGET_ATI */
+ { 2310, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */
+ { 2332, 0x00001400 }, /* GL_BYTE */
+ { 2340, 0x00002A24 }, /* GL_C3F_V3F */
+ { 2351, 0x00002A26 }, /* GL_C4F_N3F_V3F */
+ { 2366, 0x00002A22 }, /* GL_C4UB_V2F */
+ { 2378, 0x00002A23 }, /* GL_C4UB_V3F */
+ { 2390, 0x00000901 }, /* GL_CCW */
+ { 2397, 0x00002900 }, /* GL_CLAMP */
+ { 2406, 0x0000812D }, /* GL_CLAMP_TO_BORDER */
+ { 2425, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */
+ { 2448, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */
+ { 2472, 0x0000812F }, /* GL_CLAMP_TO_EDGE */
+ { 2489, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */
+ { 2511, 0x00001500 }, /* GL_CLEAR */
+ { 2520, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */
+ { 2545, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */
+ { 2574, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */
+ { 2600, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ { 2629, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */
+ { 2655, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */
+ { 2682, 0x00003000 }, /* GL_CLIP_PLANE0 */
+ { 2697, 0x00003001 }, /* GL_CLIP_PLANE1 */
+ { 2712, 0x00003002 }, /* GL_CLIP_PLANE2 */
+ { 2727, 0x00003003 }, /* GL_CLIP_PLANE3 */
+ { 2742, 0x00003004 }, /* GL_CLIP_PLANE4 */
+ { 2757, 0x00003005 }, /* GL_CLIP_PLANE5 */
+ { 2772, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ { 2805, 0x00000A00 }, /* GL_COEFF */
+ { 2814, 0x00001800 }, /* GL_COLOR */
+ { 2823, 0x00008076 }, /* GL_COLOR_ARRAY */
+ { 2838, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ { 2868, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 2902, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */
+ { 2925, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */
+ { 2945, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */
+ { 2967, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */
+ { 2987, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */
+ { 3008, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */
+ { 3033, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */
+ { 3058, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */
+ { 3079, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */
+ { 3101, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */
+ { 3127, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */
+ { 3149, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */
+ { 3175, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */
+ { 3197, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */
+ { 3223, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */
+ { 3245, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */
+ { 3271, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */
+ { 3293, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */
+ { 3319, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */
+ { 3341, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */
+ { 3367, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */
+ { 3392, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */
+ { 3413, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */
+ { 3438, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */
+ { 3459, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */
+ { 3484, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */
+ { 3505, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */
+ { 3530, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */
+ { 3551, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */
+ { 3576, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */
+ { 3597, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */
+ { 3622, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */
+ { 3643, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */
+ { 3668, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */
+ { 3689, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */
+ { 3714, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */
+ { 3735, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */
+ { 3760, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */
+ { 3780, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */
+ { 3801, 0x00001900 }, /* GL_COLOR_INDEX */
+ { 3816, 0x00001603 }, /* GL_COLOR_INDEXES */
+ { 3833, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */
+ { 3851, 0x00000B57 }, /* GL_COLOR_MATERIAL */
+ { 3869, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */
+ { 3892, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */
+ { 3920, 0x000080B1 }, /* GL_COLOR_MATRIX */
+ { 3936, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */
+ { 3956, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ { 3984, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 4016, 0x00008458 }, /* GL_COLOR_SUM */
+ { 4029, 0x00008458 }, /* GL_COLOR_SUM_ARB */
+ { 4046, 0x000080D0 }, /* GL_COLOR_TABLE */
+ { 4061, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ { 4087, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */
+ { 4117, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */
+ { 4147, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */
+ { 4167, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */
+ { 4191, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */
+ { 4216, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */
+ { 4245, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */
+ { 4274, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */
+ { 4296, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */
+ { 4322, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */
+ { 4348, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */
+ { 4374, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */
+ { 4404, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */
+ { 4434, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ { 4464, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */
+ { 4498, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */
+ { 4532, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ { 4562, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */
+ { 4596, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */
+ { 4630, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */
+ { 4654, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */
+ { 4682, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */
+ { 4710, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */
+ { 4731, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */
+ { 4756, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */
+ { 4777, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */
+ { 4802, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */
+ { 4827, 0x00000C23 }, /* GL_COLOR_WRITEMASK */
+ { 4846, 0x00008570 }, /* GL_COMBINE */
+ { 4857, 0x00008503 }, /* GL_COMBINE4 */
+ { 4869, 0x00008572 }, /* GL_COMBINE_ALPHA */
+ { 4886, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */
+ { 4907, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */
+ { 4928, 0x00008570 }, /* GL_COMBINE_ARB */
+ { 4943, 0x00008570 }, /* GL_COMBINE_EXT */
+ { 4958, 0x00008571 }, /* GL_COMBINE_RGB */
+ { 4973, 0x00008571 }, /* GL_COMBINE_RGB_ARB */
+ { 4992, 0x00008571 }, /* GL_COMBINE_RGB_EXT */
+ { 5011, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */
+ { 5047, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */
+ { 5071, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */
+ { 5099, 0x00001300 }, /* GL_COMPILE */
+ { 5110, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */
+ { 5133, 0x00008B81 }, /* GL_COMPILE_STATUS */
+ { 5151, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */
+ { 5171, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */
+ { 5195, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */
+ { 5219, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */
+ { 5247, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */
+ { 5271, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ { 5301, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */
+ { 5335, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */
+ { 5363, 0x000084ED }, /* GL_COMPRESSED_RGB */
+ { 5381, 0x000084EE }, /* GL_COMPRESSED_RGBA */
+ { 5400, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */
+ { 5423, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ { 5452, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ { 5485, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ { 5518, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ { 5551, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */
+ { 5573, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ { 5601, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ { 5633, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */
+ { 5658, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ { 5689, 0x00008C48 }, /* GL_COMPRESSED_SRGB */
+ { 5708, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */
+ { 5733, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ { 5763, 0x0000911C }, /* GL_CONDITION_SATISFIED */
+ { 5786, 0x00008576 }, /* GL_CONSTANT */
+ { 5798, 0x00008003 }, /* GL_CONSTANT_ALPHA */
+ { 5816, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */
+ { 5838, 0x00008576 }, /* GL_CONSTANT_ARB */
+ { 5854, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */
+ { 5878, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */
+ { 5900, 0x00008001 }, /* GL_CONSTANT_COLOR */
+ { 5918, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */
+ { 5940, 0x00008576 }, /* GL_CONSTANT_EXT */
+ { 5956, 0x00008010 }, /* GL_CONVOLUTION_1D */
+ { 5974, 0x00008011 }, /* GL_CONVOLUTION_2D */
+ { 5992, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */
+ { 6020, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */
+ { 6051, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */
+ { 6078, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */
+ { 6109, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */
+ { 6136, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */
+ { 6167, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */
+ { 6195, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */
+ { 6227, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */
+ { 6249, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */
+ { 6275, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */
+ { 6297, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */
+ { 6323, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */
+ { 6344, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */
+ { 6369, 0x00008862 }, /* GL_COORD_REPLACE */
+ { 6386, 0x00008862 }, /* GL_COORD_REPLACE_ARB */
+ { 6407, 0x00008862 }, /* GL_COORD_REPLACE_NV */
+ { 6427, 0x00008862 }, /* GL_COORD_REPLACE_OES */
+ { 6448, 0x00001503 }, /* GL_COPY */
+ { 6456, 0x0000150C }, /* GL_COPY_INVERTED */
+ { 6473, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */
+ { 6493, 0x00008F36 }, /* GL_COPY_READ_BUFFER */
+ { 6513, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */
+ { 6534, 0x00000B44 }, /* GL_CULL_FACE */
+ { 6547, 0x00000B45 }, /* GL_CULL_FACE_MODE */
+ { 6565, 0x000081AA }, /* GL_CULL_VERTEX_EXT */
+ { 6584, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ { 6616, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ { 6651, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */
+ { 6672, 0x00000001 }, /* GL_CURRENT_BIT */
+ { 6687, 0x00000B00 }, /* GL_CURRENT_COLOR */
+ { 6704, 0x00008453 }, /* GL_CURRENT_FOG_COORD */
+ { 6725, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */
+ { 6751, 0x00000B01 }, /* GL_CURRENT_INDEX */
+ { 6768, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */
+ { 6790, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ { 6818, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */
+ { 6839, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ { 6873, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */
+ { 6906, 0x00000B02 }, /* GL_CURRENT_NORMAL */
+ { 6924, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ { 6954, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */
+ { 6984, 0x00008B8D }, /* GL_CURRENT_PROGRAM */
+ { 7003, 0x00008865 }, /* GL_CURRENT_QUERY */
+ { 7020, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */
+ { 7041, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */
+ { 7065, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */
+ { 7092, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */
+ { 7116, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */
+ { 7143, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */
+ { 7176, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ { 7210, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ { 7243, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */
+ { 7270, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */
+ { 7296, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */
+ { 7321, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */
+ { 7350, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */
+ { 7372, 0x00000900 }, /* GL_CW */
+ { 7378, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */
+ { 7399, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */
+ { 7420, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */
+ { 7440, 0x00002101 }, /* GL_DECAL */
+ { 7449, 0x00001E03 }, /* GL_DECR */
+ { 7457, 0x00008508 }, /* GL_DECR_WRAP */
+ { 7470, 0x00008508 }, /* GL_DECR_WRAP_EXT */
+ { 7487, 0x00008B80 }, /* GL_DELETE_STATUS */
+ { 7504, 0x00001801 }, /* GL_DEPTH */
+ { 7513, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */
+ { 7533, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */
+ { 7557, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */
+ { 7581, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */
+ { 7601, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */
+ { 7625, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */
+ { 7649, 0x00000D1F }, /* GL_DEPTH_BIAS */
+ { 7663, 0x00000D56 }, /* GL_DEPTH_BITS */
+ { 7677, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */
+ { 7697, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ { 7722, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */
+ { 7742, 0x0000864F }, /* GL_DEPTH_CLAMP */
+ { 7757, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */
+ { 7775, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */
+ { 7796, 0x00001902 }, /* GL_DEPTH_COMPONENT */
+ { 7815, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */
+ { 7836, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */
+ { 7861, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */
+ { 7886, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */
+ { 7912, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */
+ { 7933, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */
+ { 7958, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */
+ { 7983, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */
+ { 8009, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */
+ { 8030, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */
+ { 8055, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */
+ { 8080, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */
+ { 8106, 0x00000B74 }, /* GL_DEPTH_FUNC */
+ { 8120, 0x00000B70 }, /* GL_DEPTH_RANGE */
+ { 8135, 0x00000D1E }, /* GL_DEPTH_SCALE */
+ { 8150, 0x000084F9 }, /* GL_DEPTH_STENCIL */
+ { 8167, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ { 8195, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */
+ { 8216, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */
+ { 8236, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */
+ { 8257, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ { 8285, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ { 8313, 0x00000B71 }, /* GL_DEPTH_TEST */
+ { 8327, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */
+ { 8349, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */
+ { 8375, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */
+ { 8394, 0x00001201 }, /* GL_DIFFUSE */
+ { 8405, 0x00000BD0 }, /* GL_DITHER */
+ { 8415, 0x00000A02 }, /* GL_DOMAIN */
+ { 8425, 0x00001100 }, /* GL_DONT_CARE */
+ { 8438, 0x000086AE }, /* GL_DOT3_RGB */
+ { 8450, 0x000086AF }, /* GL_DOT3_RGBA */
+ { 8463, 0x000086AF }, /* GL_DOT3_RGBA_ARB */
+ { 8480, 0x00008741 }, /* GL_DOT3_RGBA_EXT */
+ { 8497, 0x000086AE }, /* GL_DOT3_RGB_ARB */
+ { 8513, 0x00008740 }, /* GL_DOT3_RGB_EXT */
+ { 8529, 0x0000140A }, /* GL_DOUBLE */
+ { 8539, 0x00000C32 }, /* GL_DOUBLEBUFFER */
+ { 8555, 0x00000C01 }, /* GL_DRAW_BUFFER */
+ { 8570, 0x00008825 }, /* GL_DRAW_BUFFER0 */
+ { 8586, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */
+ { 8606, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */
+ { 8626, 0x00008826 }, /* GL_DRAW_BUFFER1 */
+ { 8642, 0x0000882F }, /* GL_DRAW_BUFFER10 */
+ { 8659, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */
+ { 8680, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */
+ { 8701, 0x00008830 }, /* GL_DRAW_BUFFER11 */
+ { 8718, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */
+ { 8739, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */
+ { 8760, 0x00008831 }, /* GL_DRAW_BUFFER12 */
+ { 8777, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */
+ { 8798, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */
+ { 8819, 0x00008832 }, /* GL_DRAW_BUFFER13 */
+ { 8836, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */
+ { 8857, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */
+ { 8878, 0x00008833 }, /* GL_DRAW_BUFFER14 */
+ { 8895, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */
+ { 8916, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */
+ { 8937, 0x00008834 }, /* GL_DRAW_BUFFER15 */
+ { 8954, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */
+ { 8975, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */
+ { 8996, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */
+ { 9016, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */
+ { 9036, 0x00008827 }, /* GL_DRAW_BUFFER2 */
+ { 9052, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */
+ { 9072, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */
+ { 9092, 0x00008828 }, /* GL_DRAW_BUFFER3 */
+ { 9108, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */
+ { 9128, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */
+ { 9148, 0x00008829 }, /* GL_DRAW_BUFFER4 */
+ { 9164, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */
+ { 9184, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */
+ { 9204, 0x0000882A }, /* GL_DRAW_BUFFER5 */
+ { 9220, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */
+ { 9240, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */
+ { 9260, 0x0000882B }, /* GL_DRAW_BUFFER6 */
+ { 9276, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */
+ { 9296, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */
+ { 9316, 0x0000882C }, /* GL_DRAW_BUFFER7 */
+ { 9332, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */
+ { 9352, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */
+ { 9372, 0x0000882D }, /* GL_DRAW_BUFFER8 */
+ { 9388, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */
+ { 9408, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */
+ { 9428, 0x0000882E }, /* GL_DRAW_BUFFER9 */
+ { 9444, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */
+ { 9464, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */
+ { 9484, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */
+ { 9504, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ { 9532, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */
+ { 9564, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */
+ { 9588, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */
+ { 9608, 0x00000304 }, /* GL_DST_ALPHA */
+ { 9621, 0x00000306 }, /* GL_DST_COLOR */
+ { 9634, 0x0000877A }, /* GL_DU8DV8_ATI */
+ { 9648, 0x00008779 }, /* GL_DUDV_ATI */
+ { 9660, 0x000088EA }, /* GL_DYNAMIC_COPY */
+ { 9676, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */
+ { 9696, 0x000088E8 }, /* GL_DYNAMIC_DRAW */
+ { 9712, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */
+ { 9732, 0x000088E9 }, /* GL_DYNAMIC_READ */
+ { 9748, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */
+ { 9768, 0x00000B43 }, /* GL_EDGE_FLAG */
+ { 9781, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */
+ { 9800, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ { 9834, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */
+ { 9872, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ { 9899, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ { 9925, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */
+ { 9949, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ { 9981, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */
+ { 10017, 0x00001600 }, /* GL_EMISSION */
+ { 10029, 0x00002000 }, /* GL_ENABLE_BIT */
+ { 10043, 0x00000202 }, /* GL_EQUAL */
+ { 10052, 0x00001509 }, /* GL_EQUIV */
+ { 10061, 0x00010000 }, /* GL_EVAL_BIT */
+ { 10073, 0x00000800 }, /* GL_EXP */
+ { 10080, 0x00000801 }, /* GL_EXP2 */
+ { 10088, 0x00001F03 }, /* GL_EXTENSIONS */
+ { 10102, 0x00002400 }, /* GL_EYE_LINEAR */
+ { 10116, 0x00002502 }, /* GL_EYE_PLANE */
+ { 10129, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ { 10154, 0x0000855B }, /* GL_EYE_RADIAL_NV */
+ { 10171, 0x00000000 }, /* GL_FALSE */
+ { 10180, 0x00001101 }, /* GL_FASTEST */
+ { 10191, 0x00001C01 }, /* GL_FEEDBACK */
+ { 10203, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */
+ { 10230, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */
+ { 10254, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */
+ { 10278, 0x00001B02 }, /* GL_FILL */
+ { 10286, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */
+ { 10313, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */
+ { 10344, 0x0000140C }, /* GL_FIXED */
+ { 10353, 0x0000140C }, /* GL_FIXED_OES */
+ { 10366, 0x00001D00 }, /* GL_FLAT */
+ { 10374, 0x00001406 }, /* GL_FLOAT */
+ { 10383, 0x00008B5A }, /* GL_FLOAT_MAT2 */
+ { 10397, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */
+ { 10415, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */
+ { 10431, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */
+ { 10447, 0x00008B5B }, /* GL_FLOAT_MAT3 */
+ { 10461, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */
+ { 10479, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */
+ { 10495, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */
+ { 10511, 0x00008B5C }, /* GL_FLOAT_MAT4 */
+ { 10525, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */
+ { 10543, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */
+ { 10559, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */
+ { 10575, 0x00008B50 }, /* GL_FLOAT_VEC2 */
+ { 10589, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */
+ { 10607, 0x00008B51 }, /* GL_FLOAT_VEC3 */
+ { 10621, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */
+ { 10639, 0x00008B52 }, /* GL_FLOAT_VEC4 */
+ { 10653, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */
+ { 10671, 0x00000B60 }, /* GL_FOG */
+ { 10678, 0x00000080 }, /* GL_FOG_BIT */
+ { 10689, 0x00000B66 }, /* GL_FOG_COLOR */
+ { 10702, 0x00008451 }, /* GL_FOG_COORD */
+ { 10715, 0x00008451 }, /* GL_FOG_COORDINATE */
+ { 10733, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */
+ { 10757, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ { 10796, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */
+ { 10839, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ { 10871, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ { 10902, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ { 10931, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */
+ { 10956, 0x00008457 }, /* GL_FOG_COORD_ARRAY */
+ { 10975, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */
+ { 11009, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */
+ { 11036, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */
+ { 11062, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */
+ { 11086, 0x00008450 }, /* GL_FOG_COORD_SRC */
+ { 11103, 0x00000B62 }, /* GL_FOG_DENSITY */
+ { 11118, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */
+ { 11142, 0x00000B64 }, /* GL_FOG_END */
+ { 11153, 0x00000C54 }, /* GL_FOG_HINT */
+ { 11165, 0x00000B61 }, /* GL_FOG_INDEX */
+ { 11178, 0x00000B65 }, /* GL_FOG_MODE */
+ { 11190, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */
+ { 11209, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */
+ { 11234, 0x00000B63 }, /* GL_FOG_START */
+ { 11247, 0x00008452 }, /* GL_FRAGMENT_DEPTH */
+ { 11265, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */
+ { 11289, 0x00008B30 }, /* GL_FRAGMENT_SHADER */
+ { 11308, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */
+ { 11331, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ { 11366, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */
+ { 11405, 0x00008D40 }, /* GL_FRAMEBUFFER */
+ { 11420, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ { 11457, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ { 11493, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ { 11534, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ { 11575, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ { 11612, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ { 11649, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ { 11687, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */
+ { 11729, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */
+ { 11771, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ { 11809, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */
+ { 11851, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */
+ { 11893, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ { 11928, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ { 11967, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */
+ { 12016, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */
+ { 12065, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ { 12113, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */
+ { 12165, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */
+ { 12217, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ { 12257, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */
+ { 12301, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ { 12341, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */
+ { 12385, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */
+ { 12429, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */
+ { 12452, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */
+ { 12479, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */
+ { 12506, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */
+ { 12530, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */
+ { 12558, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */
+ { 12586, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */
+ { 12609, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */
+ { 12628, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ { 12665, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */
+ { 12706, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */
+ { 12747, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */
+ { 12784, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ { 12825, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */
+ { 12866, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ { 12904, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */
+ { 12946, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */
+ { 12988, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ { 13039, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ { 13077, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */
+ { 13115, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ { 13160, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */
+ { 13209, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */
+ { 13258, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ { 13296, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */
+ { 13338, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ { 13376, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */
+ { 13418, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */
+ { 13460, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */
+ { 13479, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ { 13511, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */
+ { 13536, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ { 13563, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */
+ { 13594, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */
+ { 13625, 0x00000404 }, /* GL_FRONT */
+ { 13634, 0x00000408 }, /* GL_FRONT_AND_BACK */
+ { 13652, 0x00000B46 }, /* GL_FRONT_FACE */
+ { 13666, 0x00000400 }, /* GL_FRONT_LEFT */
+ { 13680, 0x00000401 }, /* GL_FRONT_RIGHT */
+ { 13695, 0x00008006 }, /* GL_FUNC_ADD */
+ { 13707, 0x00008006 }, /* GL_FUNC_ADD_EXT */
+ { 13723, 0x00008006 }, /* GL_FUNC_ADD_OES */
+ { 13739, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */
+ { 13764, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */
+ { 13793, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */
+ { 13822, 0x0000800A }, /* GL_FUNC_SUBTRACT */
+ { 13839, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */
+ { 13860, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */
+ { 13881, 0x00008191 }, /* GL_GENERATE_MIPMAP */
+ { 13900, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */
+ { 13924, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */
+ { 13953, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */
+ { 13977, 0x00000206 }, /* GL_GEQUAL */
+ { 13987, 0x00000204 }, /* GL_GREATER */
+ { 13998, 0x00001904 }, /* GL_GREEN */
+ { 14007, 0x00000D19 }, /* GL_GREEN_BIAS */
+ { 14021, 0x00000D53 }, /* GL_GREEN_BITS */
+ { 14035, 0x00000D18 }, /* GL_GREEN_SCALE */
+ { 14050, 0x0000140B }, /* GL_HALF_FLOAT */
+ { 14064, 0x00008D61 }, /* GL_HALF_FLOAT_OES */
+ { 14082, 0x00008DF2 }, /* GL_HIGH_FLOAT */
+ { 14096, 0x00008DF5 }, /* GL_HIGH_INT */
+ { 14108, 0x00008000 }, /* GL_HINT_BIT */
+ { 14120, 0x00008024 }, /* GL_HISTOGRAM */
+ { 14133, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */
+ { 14157, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */
+ { 14185, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */
+ { 14208, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */
+ { 14235, 0x00008024 }, /* GL_HISTOGRAM_EXT */
+ { 14252, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */
+ { 14272, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */
+ { 14296, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */
+ { 14320, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */
+ { 14348, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ { 14376, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */
+ { 14408, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */
+ { 14430, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */
+ { 14456, 0x0000802D }, /* GL_HISTOGRAM_SINK */
+ { 14474, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */
+ { 14496, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */
+ { 14515, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */
+ { 14538, 0x0000862A }, /* GL_IDENTITY_NV */
+ { 14553, 0x00008150 }, /* GL_IGNORE_BORDER_HP */
+ { 14573, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
+ { 14609, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ { 14649, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
+ { 14683, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ { 14721, 0x00001E02 }, /* GL_INCR */
+ { 14729, 0x00008507 }, /* GL_INCR_WRAP */
+ { 14742, 0x00008507 }, /* GL_INCR_WRAP_EXT */
+ { 14759, 0x00008222 }, /* GL_INDEX */
+ { 14768, 0x00008077 }, /* GL_INDEX_ARRAY */
+ { 14783, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ { 14813, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */
+ { 14847, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */
+ { 14870, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */
+ { 14892, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */
+ { 14912, 0x00000D51 }, /* GL_INDEX_BITS */
+ { 14926, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */
+ { 14947, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */
+ { 14965, 0x00000C30 }, /* GL_INDEX_MODE */
+ { 14979, 0x00000D13 }, /* GL_INDEX_OFFSET */
+ { 14995, 0x00000D12 }, /* GL_INDEX_SHIFT */
+ { 15010, 0x00000C21 }, /* GL_INDEX_WRITEMASK */
+ { 15029, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */
+ { 15048, 0x00001404 }, /* GL_INT */
+ { 15055, 0x00008049 }, /* GL_INTENSITY */
+ { 15068, 0x0000804C }, /* GL_INTENSITY12 */
+ { 15083, 0x0000804C }, /* GL_INTENSITY12_EXT */
+ { 15102, 0x0000804D }, /* GL_INTENSITY16 */
+ { 15117, 0x0000804D }, /* GL_INTENSITY16_EXT */
+ { 15136, 0x0000804A }, /* GL_INTENSITY4 */
+ { 15150, 0x0000804A }, /* GL_INTENSITY4_EXT */
+ { 15168, 0x0000804B }, /* GL_INTENSITY8 */
+ { 15182, 0x0000804B }, /* GL_INTENSITY8_EXT */
+ { 15200, 0x00008049 }, /* GL_INTENSITY_EXT */
+ { 15217, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */
+ { 15244, 0x00008575 }, /* GL_INTERPOLATE */
+ { 15259, 0x00008575 }, /* GL_INTERPOLATE_ARB */
+ { 15278, 0x00008575 }, /* GL_INTERPOLATE_EXT */
+ { 15297, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */
+ { 15319, 0x00008B53 }, /* GL_INT_VEC2 */
+ { 15331, 0x00008B53 }, /* GL_INT_VEC2_ARB */
+ { 15347, 0x00008B54 }, /* GL_INT_VEC3 */
+ { 15359, 0x00008B54 }, /* GL_INT_VEC3_ARB */
+ { 15375, 0x00008B55 }, /* GL_INT_VEC4 */
+ { 15387, 0x00008B55 }, /* GL_INT_VEC4_ARB */
+ { 15403, 0x00000500 }, /* GL_INVALID_ENUM */
+ { 15419, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ { 15452, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */
+ { 15489, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */
+ { 15526, 0x00000502 }, /* GL_INVALID_OPERATION */
+ { 15547, 0x00000501 }, /* GL_INVALID_VALUE */
+ { 15564, 0x0000862B }, /* GL_INVERSE_NV */
+ { 15578, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */
+ { 15602, 0x0000150A }, /* GL_INVERT */
+ { 15612, 0x00001E00 }, /* GL_KEEP */
+ { 15620, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */
+ { 15646, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */
+ { 15676, 0x00000406 }, /* GL_LEFT */
+ { 15684, 0x00000203 }, /* GL_LEQUAL */
+ { 15694, 0x00000201 }, /* GL_LESS */
+ { 15702, 0x00004000 }, /* GL_LIGHT0 */
+ { 15712, 0x00004001 }, /* GL_LIGHT1 */
+ { 15722, 0x00004002 }, /* GL_LIGHT2 */
+ { 15732, 0x00004003 }, /* GL_LIGHT3 */
+ { 15742, 0x00004004 }, /* GL_LIGHT4 */
+ { 15752, 0x00004005 }, /* GL_LIGHT5 */
+ { 15762, 0x00004006 }, /* GL_LIGHT6 */
+ { 15772, 0x00004007 }, /* GL_LIGHT7 */
+ { 15782, 0x00000B50 }, /* GL_LIGHTING */
+ { 15794, 0x00000040 }, /* GL_LIGHTING_BIT */
+ { 15810, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */
+ { 15833, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ { 15862, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */
+ { 15895, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ { 15923, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */
+ { 15947, 0x00001B01 }, /* GL_LINE */
+ { 15955, 0x00002601 }, /* GL_LINEAR */
+ { 15965, 0x00001208 }, /* GL_LINEAR_ATTENUATION */
+ { 15987, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ { 16017, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ { 16048, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */
+ { 16072, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */
+ { 16097, 0x00000001 }, /* GL_LINES */
+ { 16106, 0x00000004 }, /* GL_LINE_BIT */
+ { 16118, 0x00000002 }, /* GL_LINE_LOOP */
+ { 16131, 0x00000707 }, /* GL_LINE_RESET_TOKEN */
+ { 16151, 0x00000B20 }, /* GL_LINE_SMOOTH */
+ { 16166, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */
+ { 16186, 0x00000B24 }, /* GL_LINE_STIPPLE */
+ { 16202, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */
+ { 16226, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */
+ { 16249, 0x00000003 }, /* GL_LINE_STRIP */
+ { 16263, 0x00000702 }, /* GL_LINE_TOKEN */
+ { 16277, 0x00000B21 }, /* GL_LINE_WIDTH */
+ { 16291, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */
+ { 16317, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */
+ { 16337, 0x00008B82 }, /* GL_LINK_STATUS */
+ { 16352, 0x00000B32 }, /* GL_LIST_BASE */
+ { 16365, 0x00020000 }, /* GL_LIST_BIT */
+ { 16377, 0x00000B33 }, /* GL_LIST_INDEX */
+ { 16391, 0x00000B30 }, /* GL_LIST_MODE */
+ { 16404, 0x00000101 }, /* GL_LOAD */
+ { 16412, 0x00000BF1 }, /* GL_LOGIC_OP */
+ { 16424, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */
+ { 16441, 0x00008CA1 }, /* GL_LOWER_LEFT */
+ { 16455, 0x00008DF0 }, /* GL_LOW_FLOAT */
+ { 16468, 0x00008DF3 }, /* GL_LOW_INT */
+ { 16479, 0x00001909 }, /* GL_LUMINANCE */
+ { 16492, 0x00008041 }, /* GL_LUMINANCE12 */
+ { 16507, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */
+ { 16530, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */
+ { 16557, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */
+ { 16579, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */
+ { 16605, 0x00008041 }, /* GL_LUMINANCE12_EXT */
+ { 16624, 0x00008042 }, /* GL_LUMINANCE16 */
+ { 16639, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */
+ { 16662, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */
+ { 16689, 0x00008042 }, /* GL_LUMINANCE16_EXT */
+ { 16708, 0x0000803F }, /* GL_LUMINANCE4 */
+ { 16722, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */
+ { 16743, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */
+ { 16768, 0x0000803F }, /* GL_LUMINANCE4_EXT */
+ { 16786, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */
+ { 16807, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */
+ { 16832, 0x00008040 }, /* GL_LUMINANCE8 */
+ { 16846, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */
+ { 16867, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */
+ { 16892, 0x00008040 }, /* GL_LUMINANCE8_EXT */
+ { 16910, 0x0000190A }, /* GL_LUMINANCE_ALPHA */
+ { 16929, 0x00000D90 }, /* GL_MAP1_COLOR_4 */
+ { 16945, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */
+ { 16965, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */
+ { 16987, 0x00000D91 }, /* GL_MAP1_INDEX */
+ { 17001, 0x00000D92 }, /* GL_MAP1_NORMAL */
+ { 17016, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */
+ { 17040, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */
+ { 17064, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */
+ { 17088, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */
+ { 17112, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */
+ { 17129, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */
+ { 17146, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ { 17174, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ { 17203, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ { 17232, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ { 17261, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ { 17290, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ { 17319, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ { 17348, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ { 17376, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ { 17404, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ { 17432, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ { 17460, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ { 17488, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ { 17516, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ { 17544, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ { 17572, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ { 17600, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */
+ { 17616, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */
+ { 17636, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */
+ { 17658, 0x00000DB1 }, /* GL_MAP2_INDEX */
+ { 17672, 0x00000DB2 }, /* GL_MAP2_NORMAL */
+ { 17687, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */
+ { 17711, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */
+ { 17735, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */
+ { 17759, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */
+ { 17783, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */
+ { 17800, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */
+ { 17817, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ { 17845, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ { 17874, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ { 17903, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ { 17932, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ { 17961, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ { 17990, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ { 18019, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ { 18047, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ { 18075, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ { 18103, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ { 18131, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ { 18159, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ { 18187, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */
+ { 18215, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ { 18243, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ { 18271, 0x00000D10 }, /* GL_MAP_COLOR */
+ { 18284, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */
+ { 18310, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */
+ { 18339, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */
+ { 18367, 0x00000001 }, /* GL_MAP_READ_BIT */
+ { 18383, 0x00000D11 }, /* GL_MAP_STENCIL */
+ { 18398, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */
+ { 18424, 0x00000002 }, /* GL_MAP_WRITE_BIT */
+ { 18441, 0x000088C0 }, /* GL_MATRIX0_ARB */
+ { 18456, 0x00008630 }, /* GL_MATRIX0_NV */
+ { 18470, 0x000088CA }, /* GL_MATRIX10_ARB */
+ { 18486, 0x000088CB }, /* GL_MATRIX11_ARB */
+ { 18502, 0x000088CC }, /* GL_MATRIX12_ARB */
+ { 18518, 0x000088CD }, /* GL_MATRIX13_ARB */
+ { 18534, 0x000088CE }, /* GL_MATRIX14_ARB */
+ { 18550, 0x000088CF }, /* GL_MATRIX15_ARB */
+ { 18566, 0x000088D0 }, /* GL_MATRIX16_ARB */
+ { 18582, 0x000088D1 }, /* GL_MATRIX17_ARB */
+ { 18598, 0x000088D2 }, /* GL_MATRIX18_ARB */
+ { 18614, 0x000088D3 }, /* GL_MATRIX19_ARB */
+ { 18630, 0x000088C1 }, /* GL_MATRIX1_ARB */
+ { 18645, 0x00008631 }, /* GL_MATRIX1_NV */
+ { 18659, 0x000088D4 }, /* GL_MATRIX20_ARB */
+ { 18675, 0x000088D5 }, /* GL_MATRIX21_ARB */
+ { 18691, 0x000088D6 }, /* GL_MATRIX22_ARB */
+ { 18707, 0x000088D7 }, /* GL_MATRIX23_ARB */
+ { 18723, 0x000088D8 }, /* GL_MATRIX24_ARB */
+ { 18739, 0x000088D9 }, /* GL_MATRIX25_ARB */
+ { 18755, 0x000088DA }, /* GL_MATRIX26_ARB */
+ { 18771, 0x000088DB }, /* GL_MATRIX27_ARB */
+ { 18787, 0x000088DC }, /* GL_MATRIX28_ARB */
+ { 18803, 0x000088DD }, /* GL_MATRIX29_ARB */
+ { 18819, 0x000088C2 }, /* GL_MATRIX2_ARB */
+ { 18834, 0x00008632 }, /* GL_MATRIX2_NV */
+ { 18848, 0x000088DE }, /* GL_MATRIX30_ARB */
+ { 18864, 0x000088DF }, /* GL_MATRIX31_ARB */
+ { 18880, 0x000088C3 }, /* GL_MATRIX3_ARB */
+ { 18895, 0x00008633 }, /* GL_MATRIX3_NV */
+ { 18909, 0x000088C4 }, /* GL_MATRIX4_ARB */
+ { 18924, 0x00008634 }, /* GL_MATRIX4_NV */
+ { 18938, 0x000088C5 }, /* GL_MATRIX5_ARB */
+ { 18953, 0x00008635 }, /* GL_MATRIX5_NV */
+ { 18967, 0x000088C6 }, /* GL_MATRIX6_ARB */
+ { 18982, 0x00008636 }, /* GL_MATRIX6_NV */
+ { 18996, 0x000088C7 }, /* GL_MATRIX7_ARB */
+ { 19011, 0x00008637 }, /* GL_MATRIX7_NV */
+ { 19025, 0x000088C8 }, /* GL_MATRIX8_ARB */
+ { 19040, 0x000088C9 }, /* GL_MATRIX9_ARB */
+ { 19055, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ { 19081, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ { 19122, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */
+ { 19148, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ { 19182, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */
+ { 19216, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ { 19247, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */
+ { 19278, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ { 19311, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */
+ { 19344, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ { 19375, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */
+ { 19406, 0x00000BA0 }, /* GL_MATRIX_MODE */
+ { 19421, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */
+ { 19443, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */
+ { 19465, 0x00008008 }, /* GL_MAX */
+ { 19472, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */
+ { 19495, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */
+ { 19522, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
+ { 19554, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ { 19580, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ { 19613, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ { 19639, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 19673, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */
+ { 19692, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */
+ { 19717, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */
+ { 19746, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ { 19778, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */
+ { 19814, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ { 19850, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */
+ { 19890, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */
+ { 19916, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */
+ { 19946, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */
+ { 19971, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */
+ { 20000, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ { 20029, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */
+ { 20062, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */
+ { 20095, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */
+ { 20115, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */
+ { 20139, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */
+ { 20163, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */
+ { 20187, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */
+ { 20212, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */
+ { 20230, 0x00008008 }, /* GL_MAX_EXT */
+ { 20241, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ { 20276, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */
+ { 20315, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ { 20347, 0x00000D31 }, /* GL_MAX_LIGHTS */
+ { 20361, 0x00000B31 }, /* GL_MAX_LIST_NESTING */
+ { 20381, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ { 20419, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ { 20448, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */
+ { 20472, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */
+ { 20500, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */
+ { 20528, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */
+ { 20551, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 20588, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 20624, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ { 20651, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ { 20680, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ { 20714, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */
+ { 20750, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ { 20777, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ { 20809, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ { 20845, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ { 20874, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ { 20903, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ { 20931, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ { 20969, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 21013, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 21056, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 21090, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 21129, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 21166, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 21204, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 21247, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 21290, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ { 21320, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ { 21351, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 21387, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 21423, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ { 21453, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+ { 21487, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */
+ { 21520, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */
+ { 21545, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */
+ { 21574, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */
+ { 21603, 0x00008D57 }, /* GL_MAX_SAMPLES */
+ { 21618, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */
+ { 21637, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ { 21664, 0x00008504 }, /* GL_MAX_SHININESS_NV */
+ { 21684, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */
+ { 21708, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */
+ { 21730, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */
+ { 21756, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ { 21783, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */
+ { 21814, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */
+ { 21838, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */
+ { 21866, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 21900, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */
+ { 21920, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ { 21947, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */
+ { 21968, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */
+ { 21993, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */
+ { 22018, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+ { 22053, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
+ { 22106, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
+ { 22153, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
+ { 22203, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */
+ { 22225, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */
+ { 22251, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */
+ { 22274, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */
+ { 22296, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */
+ { 22322, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ { 22356, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */
+ { 22394, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ { 22427, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */
+ { 22464, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ { 22494, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */
+ { 22518, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */
+ { 22542, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */
+ { 22563, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */
+ { 22579, 0x00008DF4 }, /* GL_MEDIUM_INT */
+ { 22593, 0x00008007 }, /* GL_MIN */
+ { 22600, 0x0000802E }, /* GL_MINMAX */
+ { 22610, 0x0000802E }, /* GL_MINMAX_EXT */
+ { 22624, 0x0000802F }, /* GL_MINMAX_FORMAT */
+ { 22641, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */
+ { 22662, 0x00008030 }, /* GL_MINMAX_SINK */
+ { 22677, 0x00008030 }, /* GL_MINMAX_SINK_EXT */
+ { 22696, 0x00008007 }, /* GL_MIN_EXT */
+ { 22707, 0x00008370 }, /* GL_MIRRORED_REPEAT */
+ { 22726, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */
+ { 22749, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */
+ { 22772, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */
+ { 22792, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */
+ { 22812, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ { 22842, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */
+ { 22870, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ { 22898, 0x00001700 }, /* GL_MODELVIEW */
+ { 22911, 0x00001700 }, /* GL_MODELVIEW0_ARB */
+ { 22929, 0x0000872A }, /* GL_MODELVIEW10_ARB */
+ { 22948, 0x0000872B }, /* GL_MODELVIEW11_ARB */
+ { 22967, 0x0000872C }, /* GL_MODELVIEW12_ARB */
+ { 22986, 0x0000872D }, /* GL_MODELVIEW13_ARB */
+ { 23005, 0x0000872E }, /* GL_MODELVIEW14_ARB */
+ { 23024, 0x0000872F }, /* GL_MODELVIEW15_ARB */
+ { 23043, 0x00008730 }, /* GL_MODELVIEW16_ARB */
+ { 23062, 0x00008731 }, /* GL_MODELVIEW17_ARB */
+ { 23081, 0x00008732 }, /* GL_MODELVIEW18_ARB */
+ { 23100, 0x00008733 }, /* GL_MODELVIEW19_ARB */
+ { 23119, 0x0000850A }, /* GL_MODELVIEW1_ARB */
+ { 23137, 0x00008734 }, /* GL_MODELVIEW20_ARB */
+ { 23156, 0x00008735 }, /* GL_MODELVIEW21_ARB */
+ { 23175, 0x00008736 }, /* GL_MODELVIEW22_ARB */
+ { 23194, 0x00008737 }, /* GL_MODELVIEW23_ARB */
+ { 23213, 0x00008738 }, /* GL_MODELVIEW24_ARB */
+ { 23232, 0x00008739 }, /* GL_MODELVIEW25_ARB */
+ { 23251, 0x0000873A }, /* GL_MODELVIEW26_ARB */
+ { 23270, 0x0000873B }, /* GL_MODELVIEW27_ARB */
+ { 23289, 0x0000873C }, /* GL_MODELVIEW28_ARB */
+ { 23308, 0x0000873D }, /* GL_MODELVIEW29_ARB */
+ { 23327, 0x00008722 }, /* GL_MODELVIEW2_ARB */
+ { 23345, 0x0000873E }, /* GL_MODELVIEW30_ARB */
+ { 23364, 0x0000873F }, /* GL_MODELVIEW31_ARB */
+ { 23383, 0x00008723 }, /* GL_MODELVIEW3_ARB */
+ { 23401, 0x00008724 }, /* GL_MODELVIEW4_ARB */
+ { 23419, 0x00008725 }, /* GL_MODELVIEW5_ARB */
+ { 23437, 0x00008726 }, /* GL_MODELVIEW6_ARB */
+ { 23455, 0x00008727 }, /* GL_MODELVIEW7_ARB */
+ { 23473, 0x00008728 }, /* GL_MODELVIEW8_ARB */
+ { 23491, 0x00008729 }, /* GL_MODELVIEW9_ARB */
+ { 23509, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */
+ { 23529, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 23571, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */
+ { 23598, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */
+ { 23623, 0x00002100 }, /* GL_MODULATE */
+ { 23635, 0x00008744 }, /* GL_MODULATE_ADD_ATI */
+ { 23655, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */
+ { 23682, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */
+ { 23707, 0x00000103 }, /* GL_MULT */
+ { 23715, 0x0000809D }, /* GL_MULTISAMPLE */
+ { 23730, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */
+ { 23750, 0x0000809D }, /* GL_MULTISAMPLE_ARB */
+ { 23769, 0x20000000 }, /* GL_MULTISAMPLE_BIT */
+ { 23788, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */
+ { 23812, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */
+ { 23835, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ { 23865, 0x00002A25 }, /* GL_N3F_V3F */
+ { 23876, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */
+ { 23896, 0x0000150E }, /* GL_NAND */
+ { 23904, 0x00002600 }, /* GL_NEAREST */
+ { 23915, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ { 23946, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ { 23978, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */
+ { 24003, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */
+ { 24029, 0x00000200 }, /* GL_NEVER */
+ { 24038, 0x00001102 }, /* GL_NICEST */
+ { 24048, 0x00000000 }, /* GL_NONE */
+ { 24056, 0x00000000 }, /* GL_NONE_OES */
+ { 24068, 0x00001505 }, /* GL_NOOP */
+ { 24076, 0x00001508 }, /* GL_NOR */
+ { 24083, 0x00000BA1 }, /* GL_NORMALIZE */
+ { 24096, 0x00008075 }, /* GL_NORMAL_ARRAY */
+ { 24112, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ { 24143, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */
+ { 24178, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */
+ { 24202, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */
+ { 24225, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */
+ { 24246, 0x00008511 }, /* GL_NORMAL_MAP */
+ { 24260, 0x00008511 }, /* GL_NORMAL_MAP_ARB */
+ { 24278, 0x00008511 }, /* GL_NORMAL_MAP_NV */
+ { 24295, 0x00008511 }, /* GL_NORMAL_MAP_OES */
+ { 24313, 0x00000205 }, /* GL_NOTEQUAL */
+ { 24325, 0x00000000 }, /* GL_NO_ERROR */
+ { 24337, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ { 24371, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
+ { 24409, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ { 24443, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
+ { 24472, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+ { 24504, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+ { 24546, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+ { 24576, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+ { 24616, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+ { 24647, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+ { 24676, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+ { 24704, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+ { 24734, 0x00002401 }, /* GL_OBJECT_LINEAR */
+ { 24751, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+ { 24777, 0x00002501 }, /* GL_OBJECT_PLANE */
+ { 24793, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+ { 24828, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+ { 24850, 0x00009112 }, /* GL_OBJECT_TYPE */
+ { 24865, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+ { 24884, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+ { 24914, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+ { 24935, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+ { 24963, 0x00000001 }, /* GL_ONE */
+ { 24970, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ { 24998, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+ { 25030, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ { 25058, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+ { 25090, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+ { 25113, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+ { 25136, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+ { 25159, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+ { 25182, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+ { 25200, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+ { 25222, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+ { 25244, 0x00008590 }, /* GL_OPERAND0_RGB */
+ { 25260, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+ { 25280, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+ { 25300, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+ { 25318, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+ { 25340, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+ { 25362, 0x00008591 }, /* GL_OPERAND1_RGB */
+ { 25378, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+ { 25398, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+ { 25418, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+ { 25436, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+ { 25458, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+ { 25480, 0x00008592 }, /* GL_OPERAND2_RGB */
+ { 25496, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+ { 25516, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+ { 25536, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+ { 25557, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+ { 25576, 0x00001507 }, /* GL_OR */
+ { 25582, 0x00000A01 }, /* GL_ORDER */
+ { 25591, 0x0000150D }, /* GL_OR_INVERTED */
+ { 25606, 0x0000150B }, /* GL_OR_REVERSE */
+ { 25620, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+ { 25637, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+ { 25655, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+ { 25676, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+ { 25696, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+ { 25714, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+ { 25733, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+ { 25753, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+ { 25773, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+ { 25791, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+ { 25810, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+ { 25835, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+ { 25859, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+ { 25880, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+ { 25902, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+ { 25924, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+ { 25949, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+ { 25973, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+ { 25994, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+ { 26016, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+ { 26038, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+ { 26060, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ { 26091, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+ { 26111, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ { 26136, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+ { 26156, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ { 26181, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+ { 26201, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ { 26226, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+ { 26246, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ { 26271, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+ { 26291, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ { 26316, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+ { 26336, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ { 26361, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+ { 26381, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ { 26406, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+ { 26426, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ { 26451, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+ { 26471, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ { 26496, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+ { 26516, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ { 26541, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+ { 26559, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
+ { 26580, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ { 26609, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+ { 26642, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+ { 26667, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
+ { 26690, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ { 26721, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+ { 26756, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+ { 26783, 0x00001B00 }, /* GL_POINT */
+ { 26792, 0x00000000 }, /* GL_POINTS */
+ { 26802, 0x00000002 }, /* GL_POINT_BIT */
+ { 26815, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+ { 26845, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+ { 26879, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+ { 26913, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+ { 26948, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ { 26977, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+ { 27010, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+ { 27043, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+ { 27077, 0x00000B11 }, /* GL_POINT_SIZE */
+ { 27091, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ { 27130, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
+ { 27154, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ { 27186, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ { 27217, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ { 27246, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+ { 27272, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+ { 27290, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+ { 27312, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+ { 27334, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+ { 27357, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+ { 27375, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+ { 27397, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+ { 27419, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+ { 27442, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+ { 27462, 0x00000B10 }, /* GL_POINT_SMOOTH */
+ { 27478, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+ { 27499, 0x00008861 }, /* GL_POINT_SPRITE */
+ { 27515, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+ { 27535, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ { 27564, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+ { 27583, 0x00008861 }, /* GL_POINT_SPRITE_OES */
+ { 27603, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+ { 27629, 0x00000701 }, /* GL_POINT_TOKEN */
+ { 27644, 0x00000009 }, /* GL_POLYGON */
+ { 27655, 0x00000008 }, /* GL_POLYGON_BIT */
+ { 27670, 0x00000B40 }, /* GL_POLYGON_MODE */
+ { 27686, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+ { 27709, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+ { 27734, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+ { 27757, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+ { 27780, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+ { 27804, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+ { 27828, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+ { 27846, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+ { 27869, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+ { 27888, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+ { 27911, 0x00000703 }, /* GL_POLYGON_TOKEN */
+ { 27928, 0x00001203 }, /* GL_POSITION */
+ { 27940, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ { 27972, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+ { 28008, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ { 28041, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+ { 28078, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ { 28109, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+ { 28144, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ { 28176, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+ { 28212, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 28245, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ { 28277, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+ { 28313, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ { 28346, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+ { 28383, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ { 28413, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+ { 28447, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ { 28478, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+ { 28513, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ { 28544, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+ { 28579, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ { 28611, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+ { 28647, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ { 28677, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+ { 28711, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ { 28742, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+ { 28777, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ { 28809, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ { 28840, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+ { 28875, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ { 28907, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+ { 28943, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+ { 28972, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+ { 29005, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+ { 29035, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+ { 29069, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ { 29108, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ { 29141, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ { 29181, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ { 29215, 0x00008578 }, /* GL_PREVIOUS */
+ { 29227, 0x00008578 }, /* GL_PREVIOUS_ARB */
+ { 29243, 0x00008578 }, /* GL_PREVIOUS_EXT */
+ { 29259, 0x00008577 }, /* GL_PRIMARY_COLOR */
+ { 29276, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+ { 29297, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+ { 29318, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
+ { 29346, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 29379, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 29411, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+ { 29434, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ { 29464, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
+ { 29493, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+ { 29516, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ { 29546, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+ { 29575, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+ { 29603, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+ { 29625, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ { 29653, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ { 29681, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+ { 29703, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+ { 29724, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 29764, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 29803, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 29833, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 29868, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 29901, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 29935, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 29974, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 30013, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+ { 30035, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+ { 30061, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+ { 30085, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+ { 30108, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+ { 30130, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+ { 30151, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+ { 30172, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+ { 30199, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 30231, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 30263, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ { 30298, 0x00001701 }, /* GL_PROJECTION */
+ { 30312, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+ { 30333, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 30376, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+ { 30402, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
+ { 30422, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
+ { 30446, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+ { 30467, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+ { 30486, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+ { 30509, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 30548, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ { 30586, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+ { 30606, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ { 30636, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+ { 30660, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+ { 30680, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ { 30710, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+ { 30734, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+ { 30754, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ { 30787, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ { 30813, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+ { 30843, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ { 30874, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+ { 30904, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
+ { 30923, 0x00002003 }, /* GL_Q */
+ { 30928, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+ { 30953, 0x00000007 }, /* GL_QUADS */
+ { 30962, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ { 31006, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
+ { 31054, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+ { 31071, 0x00000008 }, /* GL_QUAD_STRIP */
+ { 31085, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ { 31115, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
+ { 31142, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+ { 31164, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+ { 31190, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
+ { 31210, 0x00008866 }, /* GL_QUERY_RESULT */
+ { 31226, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+ { 31246, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+ { 31272, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+ { 31302, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
+ { 31319, 0x00002002 }, /* GL_R */
+ { 31324, 0x00002A10 }, /* GL_R3_G3_B2 */
+ { 31336, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
+ { 31362, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ { 31395, 0x00000C02 }, /* GL_READ_BUFFER */
+ { 31410, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
+ { 31430, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
+ { 31458, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
+ { 31490, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
+ { 31514, 0x000088B8 }, /* GL_READ_ONLY */
+ { 31527, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+ { 31544, 0x000088BA }, /* GL_READ_WRITE */
+ { 31558, 0x000088BA }, /* GL_READ_WRITE_ARB */
+ { 31576, 0x00001903 }, /* GL_RED */
+ { 31583, 0x00008016 }, /* GL_REDUCE */
+ { 31593, 0x00008016 }, /* GL_REDUCE_EXT */
+ { 31607, 0x00000D15 }, /* GL_RED_BIAS */
+ { 31619, 0x00000D52 }, /* GL_RED_BITS */
+ { 31631, 0x00000D14 }, /* GL_RED_SCALE */
+ { 31644, 0x00008512 }, /* GL_REFLECTION_MAP */
+ { 31662, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+ { 31684, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+ { 31705, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
+ { 31727, 0x00008A19 }, /* GL_RELEASED_APPLE */
+ { 31745, 0x00001C00 }, /* GL_RENDER */
+ { 31755, 0x00008D41 }, /* GL_RENDERBUFFER */
+ { 31771, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ { 31798, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
+ { 31829, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
+ { 31853, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+ { 31881, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
+ { 31909, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
+ { 31935, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
+ { 31965, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ { 31992, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
+ { 32023, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+ { 32043, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
+ { 32070, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
+ { 32101, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
+ { 32124, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+ { 32151, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
+ { 32178, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ { 32210, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+ { 32246, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ { 32282, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
+ { 32302, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
+ { 32327, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
+ { 32356, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
+ { 32380, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
+ { 32408, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ { 32437, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
+ { 32470, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
+ { 32492, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+ { 32518, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
+ { 32544, 0x00001F01 }, /* GL_RENDERER */
+ { 32556, 0x00000C40 }, /* GL_RENDER_MODE */
+ { 32571, 0x00002901 }, /* GL_REPEAT */
+ { 32581, 0x00001E01 }, /* GL_REPLACE */
+ { 32592, 0x00008062 }, /* GL_REPLACE_EXT */
+ { 32607, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+ { 32630, 0x0000803A }, /* GL_RESCALE_NORMAL */
+ { 32648, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+ { 32670, 0x00008A1B }, /* GL_RETAINED_APPLE */
+ { 32688, 0x00000102 }, /* GL_RETURN */
+ { 32698, 0x00001907 }, /* GL_RGB */
+ { 32705, 0x00008052 }, /* GL_RGB10 */
+ { 32714, 0x00008059 }, /* GL_RGB10_A2 */
+ { 32726, 0x00008059 }, /* GL_RGB10_A2_EXT */
+ { 32742, 0x00008052 }, /* GL_RGB10_EXT */
+ { 32755, 0x00008053 }, /* GL_RGB12 */
+ { 32764, 0x00008053 }, /* GL_RGB12_EXT */
+ { 32777, 0x00008054 }, /* GL_RGB16 */
+ { 32786, 0x00008054 }, /* GL_RGB16_EXT */
+ { 32799, 0x0000804E }, /* GL_RGB2_EXT */
+ { 32811, 0x0000804F }, /* GL_RGB4 */
+ { 32819, 0x0000804F }, /* GL_RGB4_EXT */
+ { 32831, 0x000083A1 }, /* GL_RGB4_S3TC */
+ { 32844, 0x00008050 }, /* GL_RGB5 */
+ { 32852, 0x00008D62 }, /* GL_RGB565 */
+ { 32862, 0x00008D62 }, /* GL_RGB565_OES */
+ { 32876, 0x00008057 }, /* GL_RGB5_A1 */
+ { 32887, 0x00008057 }, /* GL_RGB5_A1_EXT */
+ { 32902, 0x00008057 }, /* GL_RGB5_A1_OES */
+ { 32917, 0x00008050 }, /* GL_RGB5_EXT */
+ { 32929, 0x00008051 }, /* GL_RGB8 */
+ { 32937, 0x00008051 }, /* GL_RGB8_EXT */
+ { 32949, 0x00008051 }, /* GL_RGB8_OES */
+ { 32961, 0x00001908 }, /* GL_RGBA */
+ { 32969, 0x0000805A }, /* GL_RGBA12 */
+ { 32979, 0x0000805A }, /* GL_RGBA12_EXT */
+ { 32993, 0x0000805B }, /* GL_RGBA16 */
+ { 33003, 0x0000805B }, /* GL_RGBA16_EXT */
+ { 33017, 0x00008055 }, /* GL_RGBA2 */
+ { 33026, 0x00008055 }, /* GL_RGBA2_EXT */
+ { 33039, 0x00008056 }, /* GL_RGBA4 */
+ { 33048, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+ { 33067, 0x00008056 }, /* GL_RGBA4_EXT */
+ { 33080, 0x00008056 }, /* GL_RGBA4_OES */
+ { 33093, 0x000083A3 }, /* GL_RGBA4_S3TC */
+ { 33107, 0x00008058 }, /* GL_RGBA8 */
+ { 33116, 0x00008058 }, /* GL_RGBA8_EXT */
+ { 33129, 0x00008058 }, /* GL_RGBA8_OES */
+ { 33142, 0x00008F97 }, /* GL_RGBA8_SNORM */
+ { 33157, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+ { 33175, 0x00000C31 }, /* GL_RGBA_MODE */
+ { 33188, 0x000083A2 }, /* GL_RGBA_S3TC */
+ { 33201, 0x00008F93 }, /* GL_RGBA_SNORM */
+ { 33215, 0x000083A0 }, /* GL_RGB_S3TC */
+ { 33227, 0x00008573 }, /* GL_RGB_SCALE */
+ { 33240, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+ { 33257, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+ { 33274, 0x00000407 }, /* GL_RIGHT */
+ { 33283, 0x00002000 }, /* GL_S */
+ { 33288, 0x00008B5D }, /* GL_SAMPLER_1D */
+ { 33302, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
+ { 33323, 0x00008B5E }, /* GL_SAMPLER_2D */
+ { 33337, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
+ { 33358, 0x00008B5F }, /* GL_SAMPLER_3D */
+ { 33372, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
+ { 33390, 0x00008B60 }, /* GL_SAMPLER_CUBE */
+ { 33406, 0x000080A9 }, /* GL_SAMPLES */
+ { 33417, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+ { 33433, 0x000080A9 }, /* GL_SAMPLES_ARB */
+ { 33448, 0x00008914 }, /* GL_SAMPLES_PASSED */
+ { 33466, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+ { 33488, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ { 33516, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+ { 33548, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+ { 33571, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+ { 33598, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+ { 33616, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+ { 33639, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+ { 33661, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+ { 33680, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+ { 33703, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+ { 33729, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+ { 33759, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+ { 33784, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+ { 33813, 0x00080000 }, /* GL_SCISSOR_BIT */
+ { 33828, 0x00000C10 }, /* GL_SCISSOR_BOX */
+ { 33843, 0x00000C11 }, /* GL_SCISSOR_TEST */
+ { 33859, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+ { 33884, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ { 33924, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 33968, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ { 34001, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ { 34031, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ { 34063, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ { 34093, 0x00001C02 }, /* GL_SELECT */
+ { 34103, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+ { 34131, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+ { 34156, 0x00008012 }, /* GL_SEPARABLE_2D */
+ { 34172, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
+ { 34196, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+ { 34223, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+ { 34254, 0x0000150F }, /* GL_SET */
+ { 34261, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
+ { 34286, 0x00008DFA }, /* GL_SHADER_COMPILER */
+ { 34305, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+ { 34326, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
+ { 34350, 0x00008B4F }, /* GL_SHADER_TYPE */
+ { 34365, 0x00000B54 }, /* GL_SHADE_MODEL */
+ { 34380, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
+ { 34408, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+ { 34431, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ { 34461, 0x00001601 }, /* GL_SHININESS */
+ { 34474, 0x00001402 }, /* GL_SHORT */
+ { 34483, 0x00009119 }, /* GL_SIGNALED */
+ { 34495, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
+ { 34516, 0x000081F9 }, /* GL_SINGLE_COLOR */
+ { 34532, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+ { 34552, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+ { 34571, 0x00008C46 }, /* GL_SLUMINANCE */
+ { 34585, 0x00008C47 }, /* GL_SLUMINANCE8 */
+ { 34600, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
+ { 34622, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
+ { 34642, 0x00001D01 }, /* GL_SMOOTH */
+ { 34652, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+ { 34685, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+ { 34712, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+ { 34745, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+ { 34772, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+ { 34789, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+ { 34810, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+ { 34831, 0x00008580 }, /* GL_SOURCE0_RGB */
+ { 34846, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+ { 34865, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+ { 34884, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+ { 34901, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+ { 34922, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+ { 34943, 0x00008581 }, /* GL_SOURCE1_RGB */
+ { 34958, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+ { 34977, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+ { 34996, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+ { 35013, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+ { 35034, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+ { 35055, 0x00008582 }, /* GL_SOURCE2_RGB */
+ { 35070, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+ { 35089, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+ { 35108, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+ { 35128, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+ { 35146, 0x00001202 }, /* GL_SPECULAR */
+ { 35158, 0x00002402 }, /* GL_SPHERE_MAP */
+ { 35172, 0x00001206 }, /* GL_SPOT_CUTOFF */
+ { 35187, 0x00001204 }, /* GL_SPOT_DIRECTION */
+ { 35205, 0x00001205 }, /* GL_SPOT_EXPONENT */
+ { 35222, 0x00008588 }, /* GL_SRC0_ALPHA */
+ { 35236, 0x00008580 }, /* GL_SRC0_RGB */
+ { 35248, 0x00008589 }, /* GL_SRC1_ALPHA */
+ { 35262, 0x00008581 }, /* GL_SRC1_RGB */
+ { 35274, 0x0000858A }, /* GL_SRC2_ALPHA */
+ { 35288, 0x00008582 }, /* GL_SRC2_RGB */
+ { 35300, 0x00000302 }, /* GL_SRC_ALPHA */
+ { 35313, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+ { 35335, 0x00000300 }, /* GL_SRC_COLOR */
+ { 35348, 0x00008C40 }, /* GL_SRGB */
+ { 35356, 0x00008C41 }, /* GL_SRGB8 */
+ { 35365, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
+ { 35381, 0x00008C42 }, /* GL_SRGB_ALPHA */
+ { 35395, 0x00000503 }, /* GL_STACK_OVERFLOW */
+ { 35413, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+ { 35432, 0x000088E6 }, /* GL_STATIC_COPY */
+ { 35447, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+ { 35466, 0x000088E4 }, /* GL_STATIC_DRAW */
+ { 35481, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+ { 35500, 0x000088E5 }, /* GL_STATIC_READ */
+ { 35515, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+ { 35534, 0x00001802 }, /* GL_STENCIL */
+ { 35545, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
+ { 35567, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+ { 35593, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
+ { 35619, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
+ { 35640, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
+ { 35665, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
+ { 35686, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
+ { 35711, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ { 35743, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
+ { 35779, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ { 35811, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
+ { 35847, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
+ { 35867, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
+ { 35894, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
+ { 35920, 0x00000D57 }, /* GL_STENCIL_BITS */
+ { 35936, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+ { 35958, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+ { 35981, 0x00000B94 }, /* GL_STENCIL_FAIL */
+ { 35997, 0x00000B92 }, /* GL_STENCIL_FUNC */
+ { 36013, 0x00001901 }, /* GL_STENCIL_INDEX */
+ { 36030, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
+ { 36048, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
+ { 36067, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+ { 36090, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+ { 36112, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
+ { 36134, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
+ { 36152, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+ { 36174, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
+ { 36196, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
+ { 36214, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+ { 36236, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
+ { 36258, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+ { 36279, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ { 36306, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+ { 36333, 0x00000B97 }, /* GL_STENCIL_REF */
+ { 36348, 0x00000B90 }, /* GL_STENCIL_TEST */
+ { 36364, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ { 36393, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+ { 36415, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+ { 36436, 0x00000C33 }, /* GL_STEREO */
+ { 36446, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
+ { 36470, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
+ { 36495, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
+ { 36519, 0x000088E2 }, /* GL_STREAM_COPY */
+ { 36534, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+ { 36553, 0x000088E0 }, /* GL_STREAM_DRAW */
+ { 36568, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+ { 36587, 0x000088E1 }, /* GL_STREAM_READ */
+ { 36602, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+ { 36621, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+ { 36638, 0x000084E7 }, /* GL_SUBTRACT */
+ { 36650, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+ { 36666, 0x00009113 }, /* GL_SYNC_CONDITION */
+ { 36684, 0x00009116 }, /* GL_SYNC_FENCE */
+ { 36698, 0x00009115 }, /* GL_SYNC_FLAGS */
+ { 36712, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
+ { 36739, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ { 36769, 0x00009114 }, /* GL_SYNC_STATUS */
+ { 36784, 0x00002001 }, /* GL_T */
+ { 36789, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+ { 36804, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+ { 36823, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+ { 36839, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+ { 36854, 0x00002A27 }, /* GL_T2F_V3F */
+ { 36865, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+ { 36884, 0x00002A28 }, /* GL_T4F_V4F */
+ { 36895, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+ { 36918, 0x00001702 }, /* GL_TEXTURE */
+ { 36929, 0x000084C0 }, /* GL_TEXTURE0 */
+ { 36941, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+ { 36957, 0x000084C1 }, /* GL_TEXTURE1 */
+ { 36969, 0x000084CA }, /* GL_TEXTURE10 */
+ { 36982, 0x000084CA }, /* GL_TEXTURE10_ARB */
+ { 36999, 0x000084CB }, /* GL_TEXTURE11 */
+ { 37012, 0x000084CB }, /* GL_TEXTURE11_ARB */
+ { 37029, 0x000084CC }, /* GL_TEXTURE12 */
+ { 37042, 0x000084CC }, /* GL_TEXTURE12_ARB */
+ { 37059, 0x000084CD }, /* GL_TEXTURE13 */
+ { 37072, 0x000084CD }, /* GL_TEXTURE13_ARB */
+ { 37089, 0x000084CE }, /* GL_TEXTURE14 */
+ { 37102, 0x000084CE }, /* GL_TEXTURE14_ARB */
+ { 37119, 0x000084CF }, /* GL_TEXTURE15 */
+ { 37132, 0x000084CF }, /* GL_TEXTURE15_ARB */
+ { 37149, 0x000084D0 }, /* GL_TEXTURE16 */
+ { 37162, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+ { 37179, 0x000084D1 }, /* GL_TEXTURE17 */
+ { 37192, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+ { 37209, 0x000084D2 }, /* GL_TEXTURE18 */
+ { 37222, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+ { 37239, 0x000084D3 }, /* GL_TEXTURE19 */
+ { 37252, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+ { 37269, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+ { 37285, 0x000084C2 }, /* GL_TEXTURE2 */
+ { 37297, 0x000084D4 }, /* GL_TEXTURE20 */
+ { 37310, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+ { 37327, 0x000084D5 }, /* GL_TEXTURE21 */
+ { 37340, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+ { 37357, 0x000084D6 }, /* GL_TEXTURE22 */
+ { 37370, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+ { 37387, 0x000084D7 }, /* GL_TEXTURE23 */
+ { 37400, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+ { 37417, 0x000084D8 }, /* GL_TEXTURE24 */
+ { 37430, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+ { 37447, 0x000084D9 }, /* GL_TEXTURE25 */
+ { 37460, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+ { 37477, 0x000084DA }, /* GL_TEXTURE26 */
+ { 37490, 0x000084DA }, /* GL_TEXTURE26_ARB */
+ { 37507, 0x000084DB }, /* GL_TEXTURE27 */
+ { 37520, 0x000084DB }, /* GL_TEXTURE27_ARB */
+ { 37537, 0x000084DC }, /* GL_TEXTURE28 */
+ { 37550, 0x000084DC }, /* GL_TEXTURE28_ARB */
+ { 37567, 0x000084DD }, /* GL_TEXTURE29 */
+ { 37580, 0x000084DD }, /* GL_TEXTURE29_ARB */
+ { 37597, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+ { 37613, 0x000084C3 }, /* GL_TEXTURE3 */
+ { 37625, 0x000084DE }, /* GL_TEXTURE30 */
+ { 37638, 0x000084DE }, /* GL_TEXTURE30_ARB */
+ { 37655, 0x000084DF }, /* GL_TEXTURE31 */
+ { 37668, 0x000084DF }, /* GL_TEXTURE31_ARB */
+ { 37685, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+ { 37701, 0x000084C4 }, /* GL_TEXTURE4 */
+ { 37713, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+ { 37729, 0x000084C5 }, /* GL_TEXTURE5 */
+ { 37741, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+ { 37757, 0x000084C6 }, /* GL_TEXTURE6 */
+ { 37769, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+ { 37785, 0x000084C7 }, /* GL_TEXTURE7 */
+ { 37797, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+ { 37813, 0x000084C8 }, /* GL_TEXTURE8 */
+ { 37825, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+ { 37841, 0x000084C9 }, /* GL_TEXTURE9 */
+ { 37853, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+ { 37869, 0x00000DE0 }, /* GL_TEXTURE_1D */
+ { 37883, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
+ { 37907, 0x00000DE1 }, /* GL_TEXTURE_2D */
+ { 37921, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
+ { 37945, 0x0000806F }, /* GL_TEXTURE_3D */
+ { 37959, 0x0000806F }, /* GL_TEXTURE_3D_OES */
+ { 37977, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+ { 37999, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+ { 38025, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+ { 38047, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+ { 38069, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ { 38101, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+ { 38123, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ { 38155, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+ { 38177, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
+ { 38203, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ { 38231, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+ { 38263, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
+ { 38295, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ { 38328, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+ { 38360, 0x00040000 }, /* GL_TEXTURE_BIT */
+ { 38375, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+ { 38396, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+ { 38421, 0x00001005 }, /* GL_TEXTURE_BORDER */
+ { 38439, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+ { 38463, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ { 38494, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ { 38524, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ { 38554, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ { 38589, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ { 38620, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 38658, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ { 38685, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ { 38717, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ { 38751, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+ { 38775, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+ { 38803, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+ { 38827, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+ { 38855, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ { 38888, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+ { 38912, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+ { 38934, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+ { 38956, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+ { 38982, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+ { 39016, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ { 39049, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+ { 39086, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+ { 39114, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+ { 39146, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+ { 39169, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ { 39207, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+ { 39249, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ { 39280, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ { 39308, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ { 39338, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ { 39366, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
+ { 39391, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+ { 39411, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+ { 39435, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ { 39466, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+ { 39501, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
+ { 39536, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ { 39567, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+ { 39602, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
+ { 39637, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ { 39668, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+ { 39703, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
+ { 39738, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
+ { 39762, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ { 39793, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+ { 39828, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
+ { 39863, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ { 39894, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+ { 39929, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
+ { 39964, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ { 39995, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+ { 40030, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
+ { 40065, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ { 40094, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+ { 40111, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+ { 40133, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+ { 40159, 0x00002300 }, /* GL_TEXTURE_ENV */
+ { 40174, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+ { 40195, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+ { 40215, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+ { 40241, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
+ { 40271, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+ { 40291, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
+ { 40315, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+ { 40332, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+ { 40349, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+ { 40366, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
+ { 40389, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+ { 40406, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ { 40431, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+ { 40453, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+ { 40479, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+ { 40497, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ { 40523, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+ { 40549, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+ { 40579, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+ { 40606, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ { 40631, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+ { 40651, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+ { 40675, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ { 40702, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ { 40729, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ { 40756, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+ { 40782, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+ { 40812, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+ { 40834, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+ { 40852, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 40892, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 40922, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ { 40950, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ { 40978, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ { 41006, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+ { 41027, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+ { 41046, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+ { 41068, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+ { 41087, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+ { 41107, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ { 41137, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ { 41168, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+ { 41193, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+ { 41217, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+ { 41237, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+ { 41261, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+ { 41281, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+ { 41304, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
+ { 41328, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
+ { 41356, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ { 41386, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+ { 41411, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ { 41445, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+ { 41462, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+ { 41480, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
+ { 41502, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+ { 41520, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+ { 41538, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
+ { 41557, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
+ { 41577, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+ { 41596, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ { 41625, 0x00001000 }, /* GL_TRANSFORM_BIT */
+ { 41642, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ { 41683, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ { 41716, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ { 41754, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ { 41792, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ { 41831, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ { 41876, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ { 41911, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ { 41956, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+ { 41982, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+ { 42012, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ { 42044, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ { 42074, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+ { 42108, 0x0000862C }, /* GL_TRANSPOSE_NV */
+ { 42124, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ { 42155, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+ { 42190, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ { 42218, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+ { 42250, 0x00000004 }, /* GL_TRIANGLES */
+ { 42263, 0x00000006 }, /* GL_TRIANGLE_FAN */
+ { 42279, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+ { 42300, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+ { 42318, 0x00000001 }, /* GL_TRUE */
+ { 42326, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
+ { 42345, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+ { 42365, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+ { 42388, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+ { 42408, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+ { 42429, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+ { 42451, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+ { 42473, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+ { 42493, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+ { 42514, 0x00009118 }, /* GL_UNSIGNALED */
+ { 42528, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+ { 42545, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ { 42572, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+ { 42595, 0x00001405 }, /* GL_UNSIGNED_INT */
+ { 42611, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+ { 42638, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ { 42669, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
+ { 42690, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
+ { 42715, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+ { 42739, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
+ { 42764, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ { 42795, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
+ { 42830, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+ { 42854, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ { 42882, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
+ { 42905, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+ { 42923, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ { 42953, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
+ { 42987, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ { 43013, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ { 43043, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
+ { 43077, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ { 43103, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+ { 43127, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ { 43155, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ { 43183, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+ { 43210, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ { 43242, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+ { 43273, 0x00008CA2 }, /* GL_UPPER_LEFT */
+ { 43287, 0x00002A20 }, /* GL_V2F */
+ { 43294, 0x00002A21 }, /* GL_V3F */
+ { 43301, 0x00008B83 }, /* GL_VALIDATE_STATUS */
+ { 43320, 0x00001F00 }, /* GL_VENDOR */
+ { 43330, 0x00001F02 }, /* GL_VERSION */
+ { 43341, 0x00008074 }, /* GL_VERTEX_ARRAY */
+ { 43357, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+ { 43381, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+ { 43411, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ { 43442, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+ { 43477, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+ { 43501, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+ { 43522, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+ { 43545, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+ { 43566, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ { 43593, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ { 43621, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ { 43649, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ { 43677, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ { 43705, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ { 43733, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ { 43761, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ { 43788, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ { 43815, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ { 43842, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ { 43869, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ { 43896, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ { 43923, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ { 43950, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ { 43977, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ { 44004, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ { 44042, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+ { 44084, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ { 44115, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+ { 44150, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ { 44184, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+ { 44222, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ { 44253, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+ { 44288, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ { 44316, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+ { 44348, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ { 44378, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+ { 44412, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ { 44440, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+ { 44472, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+ { 44492, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+ { 44514, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ { 44543, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+ { 44564, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ { 44593, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+ { 44626, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+ { 44658, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ { 44685, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+ { 44716, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+ { 44746, 0x00008B31 }, /* GL_VERTEX_SHADER */
+ { 44763, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+ { 44784, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+ { 44811, 0x00000BA2 }, /* GL_VIEWPORT */
+ { 44823, 0x00000800 }, /* GL_VIEWPORT_BIT */
+ { 44839, 0x00008A1A }, /* GL_VOLATILE_APPLE */
+ { 44857, 0x0000911D }, /* GL_WAIT_FAILED */
+ { 44872, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+ { 44892, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ { 44923, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+ { 44958, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
+ { 44993, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
+ { 45013, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ { 45041, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
+ { 45069, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ { 45094, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
+ { 45119, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ { 45146, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
+ { 45173, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ { 45198, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
+ { 45223, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+ { 45247, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+ { 45266, 0x000088B9 }, /* GL_WRITE_ONLY */
+ { 45280, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+ { 45298, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
+ { 45316, 0x00001506 }, /* GL_XOR */
+ { 45323, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+ { 45342, 0x00008757 }, /* GL_YCBCR_MESA */
+ { 45356, 0x00000000 }, /* GL_ZERO */
+ { 45364, 0x00000D16 }, /* GL_ZOOM_X */
+ { 45374, 0x00000D17 }, /* GL_ZOOM_Y */
};
-static const unsigned reduced_enums[1372] =
+static const unsigned reduced_enums[1402] =
{
- 480, /* GL_FALSE */
- 704, /* GL_LINES */
- 706, /* GL_LINE_LOOP */
- 713, /* GL_LINE_STRIP */
- 1789, /* GL_TRIANGLES */
- 1792, /* GL_TRIANGLE_STRIP */
- 1790, /* GL_TRIANGLE_FAN */
- 1293, /* GL_QUADS */
- 1297, /* GL_QUAD_STRIP */
- 1177, /* GL_POLYGON */
- 1189, /* GL_POLYGON_STIPPLE_BIT */
- 1138, /* GL_PIXEL_MODE_BIT */
- 691, /* GL_LIGHTING_BIT */
- 510, /* GL_FOG_BIT */
+ 500, /* GL_FALSE */
+ 753, /* GL_LINES */
+ 755, /* GL_LINE_LOOP */
+ 762, /* GL_LINE_STRIP */
+ 1913, /* GL_TRIANGLES */
+ 1916, /* GL_TRIANGLE_STRIP */
+ 1914, /* GL_TRIANGLE_FAN */
+ 1376, /* GL_QUADS */
+ 1380, /* GL_QUAD_STRIP */
+ 1257, /* GL_POLYGON */
+ 1269, /* GL_POLYGON_STIPPLE_BIT */
+ 1212, /* GL_PIXEL_MODE_BIT */
+ 740, /* GL_LIGHTING_BIT */
+ 532, /* GL_FOG_BIT */
8, /* GL_ACCUM */
- 723, /* GL_LOAD */
- 1359, /* GL_RETURN */
- 1010, /* GL_MULT */
+ 772, /* GL_LOAD */
+ 1454, /* GL_RETURN */
+ 1080, /* GL_MULT */
23, /* GL_ADD */
- 1026, /* GL_NEVER */
- 681, /* GL_LESS */
- 470, /* GL_EQUAL */
- 680, /* GL_LEQUAL */
- 600, /* GL_GREATER */
- 1041, /* GL_NOTEQUAL */
- 599, /* GL_GEQUAL */
+ 1096, /* GL_NEVER */
+ 730, /* GL_LESS */
+ 490, /* GL_EQUAL */
+ 729, /* GL_LEQUAL */
+ 642, /* GL_GREATER */
+ 1113, /* GL_NOTEQUAL */
+ 641, /* GL_GEQUAL */
47, /* GL_ALWAYS */
- 1501, /* GL_SRC_COLOR */
- 1071, /* GL_ONE_MINUS_SRC_COLOR */
- 1499, /* GL_SRC_ALPHA */
- 1070, /* GL_ONE_MINUS_SRC_ALPHA */
- 449, /* GL_DST_ALPHA */
- 1068, /* GL_ONE_MINUS_DST_ALPHA */
- 450, /* GL_DST_COLOR */
- 1069, /* GL_ONE_MINUS_DST_COLOR */
- 1500, /* GL_SRC_ALPHA_SATURATE */
- 587, /* GL_FRONT_LEFT */
- 588, /* GL_FRONT_RIGHT */
+ 1605, /* GL_SRC_COLOR */
+ 1145, /* GL_ONE_MINUS_SRC_COLOR */
+ 1603, /* GL_SRC_ALPHA */
+ 1144, /* GL_ONE_MINUS_SRC_ALPHA */
+ 469, /* GL_DST_ALPHA */
+ 1142, /* GL_ONE_MINUS_DST_ALPHA */
+ 470, /* GL_DST_COLOR */
+ 1143, /* GL_ONE_MINUS_DST_COLOR */
+ 1604, /* GL_SRC_ALPHA_SATURATE */
+ 626, /* GL_FRONT_LEFT */
+ 627, /* GL_FRONT_RIGHT */
69, /* GL_BACK_LEFT */
70, /* GL_BACK_RIGHT */
- 584, /* GL_FRONT */
+ 623, /* GL_FRONT */
68, /* GL_BACK */
- 679, /* GL_LEFT */
- 1401, /* GL_RIGHT */
- 585, /* GL_FRONT_AND_BACK */
+ 728, /* GL_LEFT */
+ 1502, /* GL_RIGHT */
+ 624, /* GL_FRONT_AND_BACK */
63, /* GL_AUX0 */
64, /* GL_AUX1 */
65, /* GL_AUX2 */
66, /* GL_AUX3 */
- 668, /* GL_INVALID_ENUM */
- 672, /* GL_INVALID_VALUE */
- 671, /* GL_INVALID_OPERATION */
- 1506, /* GL_STACK_OVERFLOW */
- 1507, /* GL_STACK_UNDERFLOW */
- 1096, /* GL_OUT_OF_MEMORY */
- 669, /* GL_INVALID_FRAMEBUFFER_OPERATION */
+ 716, /* GL_INVALID_ENUM */
+ 721, /* GL_INVALID_VALUE */
+ 720, /* GL_INVALID_OPERATION */
+ 1610, /* GL_STACK_OVERFLOW */
+ 1611, /* GL_STACK_UNDERFLOW */
+ 1170, /* GL_OUT_OF_MEMORY */
+ 717, /* GL_INVALID_FRAMEBUFFER_OPERATION */
0, /* GL_2D */
2, /* GL_3D */
3, /* GL_3D_COLOR */
4, /* GL_3D_COLOR_TEXTURE */
6, /* GL_4D_COLOR_TEXTURE */
- 1116, /* GL_PASS_THROUGH_TOKEN */
- 1176, /* GL_POINT_TOKEN */
- 714, /* GL_LINE_TOKEN */
- 1190, /* GL_POLYGON_TOKEN */
- 74, /* GL_BITMAP_TOKEN */
- 448, /* GL_DRAW_PIXEL_TOKEN */
- 302, /* GL_COPY_PIXEL_TOKEN */
- 707, /* GL_LINE_RESET_TOKEN */
- 473, /* GL_EXP */
- 474, /* GL_EXP2 */
- 338, /* GL_CW */
- 126, /* GL_CCW */
- 147, /* GL_COEFF */
- 1093, /* GL_ORDER */
- 385, /* GL_DOMAIN */
- 312, /* GL_CURRENT_COLOR */
- 315, /* GL_CURRENT_INDEX */
- 321, /* GL_CURRENT_NORMAL */
- 334, /* GL_CURRENT_TEXTURE_COORDS */
- 326, /* GL_CURRENT_RASTER_COLOR */
- 328, /* GL_CURRENT_RASTER_INDEX */
- 332, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
- 329, /* GL_CURRENT_RASTER_POSITION */
- 330, /* GL_CURRENT_RASTER_POSITION_VALID */
- 327, /* GL_CURRENT_RASTER_DISTANCE */
- 1169, /* GL_POINT_SMOOTH */
- 1158, /* GL_POINT_SIZE */
- 1168, /* GL_POINT_SIZE_RANGE */
- 1159, /* GL_POINT_SIZE_GRANULARITY */
- 708, /* GL_LINE_SMOOTH */
- 715, /* GL_LINE_WIDTH */
- 717, /* GL_LINE_WIDTH_RANGE */
- 716, /* GL_LINE_WIDTH_GRANULARITY */
- 710, /* GL_LINE_STIPPLE */
- 711, /* GL_LINE_STIPPLE_PATTERN */
- 712, /* GL_LINE_STIPPLE_REPEAT */
- 722, /* GL_LIST_MODE */
- 888, /* GL_MAX_LIST_NESTING */
- 719, /* GL_LIST_BASE */
- 721, /* GL_LIST_INDEX */
- 1179, /* GL_POLYGON_MODE */
- 1186, /* GL_POLYGON_SMOOTH */
- 1188, /* GL_POLYGON_STIPPLE */
- 459, /* GL_EDGE_FLAG */
- 305, /* GL_CULL_FACE */
- 306, /* GL_CULL_FACE_MODE */
- 586, /* GL_FRONT_FACE */
- 690, /* GL_LIGHTING */
- 695, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
- 696, /* GL_LIGHT_MODEL_TWO_SIDE */
- 692, /* GL_LIGHT_MODEL_AMBIENT */
- 1448, /* GL_SHADE_MODEL */
- 194, /* GL_COLOR_MATERIAL_FACE */
- 195, /* GL_COLOR_MATERIAL_PARAMETER */
- 193, /* GL_COLOR_MATERIAL */
- 509, /* GL_FOG */
- 531, /* GL_FOG_INDEX */
- 527, /* GL_FOG_DENSITY */
- 535, /* GL_FOG_START */
- 529, /* GL_FOG_END */
- 532, /* GL_FOG_MODE */
- 511, /* GL_FOG_COLOR */
- 371, /* GL_DEPTH_RANGE */
- 379, /* GL_DEPTH_TEST */
- 382, /* GL_DEPTH_WRITEMASK */
- 359, /* GL_DEPTH_CLEAR_VALUE */
- 370, /* GL_DEPTH_FUNC */
+ 1190, /* GL_PASS_THROUGH_TOKEN */
+ 1256, /* GL_POINT_TOKEN */
+ 763, /* GL_LINE_TOKEN */
+ 1270, /* GL_POLYGON_TOKEN */
+ 75, /* GL_BITMAP_TOKEN */
+ 468, /* GL_DRAW_PIXEL_TOKEN */
+ 315, /* GL_COPY_PIXEL_TOKEN */
+ 756, /* GL_LINE_RESET_TOKEN */
+ 493, /* GL_EXP */
+ 494, /* GL_EXP2 */
+ 352, /* GL_CW */
+ 137, /* GL_CCW */
+ 158, /* GL_COEFF */
+ 1167, /* GL_ORDER */
+ 405, /* GL_DOMAIN */
+ 325, /* GL_CURRENT_COLOR */
+ 328, /* GL_CURRENT_INDEX */
+ 334, /* GL_CURRENT_NORMAL */
+ 348, /* GL_CURRENT_TEXTURE_COORDS */
+ 340, /* GL_CURRENT_RASTER_COLOR */
+ 342, /* GL_CURRENT_RASTER_INDEX */
+ 346, /* GL_CURRENT_RASTER_TEXTURE_COORDS */
+ 343, /* GL_CURRENT_RASTER_POSITION */
+ 344, /* GL_CURRENT_RASTER_POSITION_VALID */
+ 341, /* GL_CURRENT_RASTER_DISTANCE */
+ 1248, /* GL_POINT_SMOOTH */
+ 1232, /* GL_POINT_SIZE */
+ 1247, /* GL_POINT_SIZE_RANGE */
+ 1238, /* GL_POINT_SIZE_GRANULARITY */
+ 757, /* GL_LINE_SMOOTH */
+ 764, /* GL_LINE_WIDTH */
+ 766, /* GL_LINE_WIDTH_RANGE */
+ 765, /* GL_LINE_WIDTH_GRANULARITY */
+ 759, /* GL_LINE_STIPPLE */
+ 760, /* GL_LINE_STIPPLE_PATTERN */
+ 761, /* GL_LINE_STIPPLE_REPEAT */
+ 771, /* GL_LIST_MODE */
+ 949, /* GL_MAX_LIST_NESTING */
+ 768, /* GL_LIST_BASE */
+ 770, /* GL_LIST_INDEX */
+ 1259, /* GL_POLYGON_MODE */
+ 1266, /* GL_POLYGON_SMOOTH */
+ 1268, /* GL_POLYGON_STIPPLE */
+ 479, /* GL_EDGE_FLAG */
+ 318, /* GL_CULL_FACE */
+ 319, /* GL_CULL_FACE_MODE */
+ 625, /* GL_FRONT_FACE */
+ 739, /* GL_LIGHTING */
+ 744, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
+ 745, /* GL_LIGHT_MODEL_TWO_SIDE */
+ 741, /* GL_LIGHT_MODEL_AMBIENT */
+ 1552, /* GL_SHADE_MODEL */
+ 206, /* GL_COLOR_MATERIAL_FACE */
+ 207, /* GL_COLOR_MATERIAL_PARAMETER */
+ 205, /* GL_COLOR_MATERIAL */
+ 531, /* GL_FOG */
+ 553, /* GL_FOG_INDEX */
+ 549, /* GL_FOG_DENSITY */
+ 557, /* GL_FOG_START */
+ 551, /* GL_FOG_END */
+ 554, /* GL_FOG_MODE */
+ 533, /* GL_FOG_COLOR */
+ 390, /* GL_DEPTH_RANGE */
+ 399, /* GL_DEPTH_TEST */
+ 402, /* GL_DEPTH_WRITEMASK */
+ 375, /* GL_DEPTH_CLEAR_VALUE */
+ 389, /* GL_DEPTH_FUNC */
12, /* GL_ACCUM_CLEAR_VALUE */
- 1546, /* GL_STENCIL_TEST */
- 1530, /* GL_STENCIL_CLEAR_VALUE */
- 1532, /* GL_STENCIL_FUNC */
- 1548, /* GL_STENCIL_VALUE_MASK */
- 1531, /* GL_STENCIL_FAIL */
- 1543, /* GL_STENCIL_PASS_DEPTH_FAIL */
- 1544, /* GL_STENCIL_PASS_DEPTH_PASS */
- 1545, /* GL_STENCIL_REF */
- 1549, /* GL_STENCIL_WRITEMASK */
- 856, /* GL_MATRIX_MODE */
- 1031, /* GL_NORMALIZE */
- 1885, /* GL_VIEWPORT */
- 1005, /* GL_MODELVIEW_STACK_DEPTH */
- 1270, /* GL_PROJECTION_STACK_DEPTH */
- 1756, /* GL_TEXTURE_STACK_DEPTH */
- 1003, /* GL_MODELVIEW_MATRIX */
- 1269, /* GL_PROJECTION_MATRIX */
- 1739, /* GL_TEXTURE_MATRIX */
+ 1654, /* GL_STENCIL_TEST */
+ 1635, /* GL_STENCIL_CLEAR_VALUE */
+ 1637, /* GL_STENCIL_FUNC */
+ 1656, /* GL_STENCIL_VALUE_MASK */
+ 1636, /* GL_STENCIL_FAIL */
+ 1651, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ 1652, /* GL_STENCIL_PASS_DEPTH_PASS */
+ 1653, /* GL_STENCIL_REF */
+ 1657, /* GL_STENCIL_WRITEMASK */
+ 913, /* GL_MATRIX_MODE */
+ 1102, /* GL_NORMALIZE */
+ 2014, /* GL_VIEWPORT */
+ 1075, /* GL_MODELVIEW_STACK_DEPTH */
+ 1353, /* GL_PROJECTION_STACK_DEPTH */
+ 1879, /* GL_TEXTURE_STACK_DEPTH */
+ 1072, /* GL_MODELVIEW_MATRIX */
+ 1351, /* GL_PROJECTION_MATRIX */
+ 1861, /* GL_TEXTURE_MATRIX */
61, /* GL_ATTRIB_STACK_DEPTH */
- 137, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
+ 148, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
43, /* GL_ALPHA_TEST */
44, /* GL_ALPHA_TEST_FUNC */
45, /* GL_ALPHA_TEST_REF */
- 384, /* GL_DITHER */
- 78, /* GL_BLEND_DST */
- 87, /* GL_BLEND_SRC */
- 75, /* GL_BLEND */
- 725, /* GL_LOGIC_OP_MODE */
- 641, /* GL_INDEX_LOGIC_OP */
- 192, /* GL_COLOR_LOGIC_OP */
+ 404, /* GL_DITHER */
+ 79, /* GL_BLEND_DST */
+ 93, /* GL_BLEND_SRC */
+ 76, /* GL_BLEND */
+ 774, /* GL_LOGIC_OP_MODE */
+ 688, /* GL_INDEX_LOGIC_OP */
+ 204, /* GL_COLOR_LOGIC_OP */
67, /* GL_AUX_BUFFERS */
- 395, /* GL_DRAW_BUFFER */
- 1312, /* GL_READ_BUFFER */
- 1428, /* GL_SCISSOR_BOX */
- 1429, /* GL_SCISSOR_TEST */
- 640, /* GL_INDEX_CLEAR_VALUE */
- 645, /* GL_INDEX_WRITEMASK */
- 189, /* GL_COLOR_CLEAR_VALUE */
- 231, /* GL_COLOR_WRITEMASK */
- 642, /* GL_INDEX_MODE */
- 1394, /* GL_RGBA_MODE */
- 394, /* GL_DOUBLEBUFFER */
- 1550, /* GL_STEREO */
- 1351, /* GL_RENDER_MODE */
- 1117, /* GL_PERSPECTIVE_CORRECTION_HINT */
- 1170, /* GL_POINT_SMOOTH_HINT */
- 709, /* GL_LINE_SMOOTH_HINT */
- 1187, /* GL_POLYGON_SMOOTH_HINT */
- 530, /* GL_FOG_HINT */
- 1720, /* GL_TEXTURE_GEN_S */
- 1721, /* GL_TEXTURE_GEN_T */
- 1719, /* GL_TEXTURE_GEN_R */
- 1718, /* GL_TEXTURE_GEN_Q */
- 1130, /* GL_PIXEL_MAP_I_TO_I */
- 1136, /* GL_PIXEL_MAP_S_TO_S */
- 1132, /* GL_PIXEL_MAP_I_TO_R */
- 1128, /* GL_PIXEL_MAP_I_TO_G */
- 1126, /* GL_PIXEL_MAP_I_TO_B */
- 1124, /* GL_PIXEL_MAP_I_TO_A */
- 1134, /* GL_PIXEL_MAP_R_TO_R */
- 1122, /* GL_PIXEL_MAP_G_TO_G */
- 1120, /* GL_PIXEL_MAP_B_TO_B */
- 1118, /* GL_PIXEL_MAP_A_TO_A */
- 1131, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- 1137, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- 1133, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- 1129, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- 1127, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- 1125, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- 1135, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- 1123, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- 1121, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- 1119, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- 1802, /* GL_UNPACK_SWAP_BYTES */
- 1797, /* GL_UNPACK_LSB_FIRST */
- 1798, /* GL_UNPACK_ROW_LENGTH */
- 1801, /* GL_UNPACK_SKIP_ROWS */
- 1800, /* GL_UNPACK_SKIP_PIXELS */
- 1795, /* GL_UNPACK_ALIGNMENT */
- 1105, /* GL_PACK_SWAP_BYTES */
- 1100, /* GL_PACK_LSB_FIRST */
- 1101, /* GL_PACK_ROW_LENGTH */
- 1104, /* GL_PACK_SKIP_ROWS */
- 1103, /* GL_PACK_SKIP_PIXELS */
- 1097, /* GL_PACK_ALIGNMENT */
- 803, /* GL_MAP_COLOR */
- 808, /* GL_MAP_STENCIL */
- 644, /* GL_INDEX_SHIFT */
- 643, /* GL_INDEX_OFFSET */
- 1326, /* GL_RED_SCALE */
- 1324, /* GL_RED_BIAS */
- 1904, /* GL_ZOOM_X */
- 1905, /* GL_ZOOM_Y */
- 604, /* GL_GREEN_SCALE */
- 602, /* GL_GREEN_BIAS */
- 93, /* GL_BLUE_SCALE */
- 91, /* GL_BLUE_BIAS */
+ 415, /* GL_DRAW_BUFFER */
+ 1395, /* GL_READ_BUFFER */
+ 1530, /* GL_SCISSOR_BOX */
+ 1531, /* GL_SCISSOR_TEST */
+ 687, /* GL_INDEX_CLEAR_VALUE */
+ 692, /* GL_INDEX_WRITEMASK */
+ 201, /* GL_COLOR_CLEAR_VALUE */
+ 243, /* GL_COLOR_WRITEMASK */
+ 689, /* GL_INDEX_MODE */
+ 1495, /* GL_RGBA_MODE */
+ 414, /* GL_DOUBLEBUFFER */
+ 1658, /* GL_STEREO */
+ 1446, /* GL_RENDER_MODE */
+ 1191, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ 1249, /* GL_POINT_SMOOTH_HINT */
+ 758, /* GL_LINE_SMOOTH_HINT */
+ 1267, /* GL_POLYGON_SMOOTH_HINT */
+ 552, /* GL_FOG_HINT */
+ 1841, /* GL_TEXTURE_GEN_S */
+ 1843, /* GL_TEXTURE_GEN_T */
+ 1840, /* GL_TEXTURE_GEN_R */
+ 1839, /* GL_TEXTURE_GEN_Q */
+ 1204, /* GL_PIXEL_MAP_I_TO_I */
+ 1210, /* GL_PIXEL_MAP_S_TO_S */
+ 1206, /* GL_PIXEL_MAP_I_TO_R */
+ 1202, /* GL_PIXEL_MAP_I_TO_G */
+ 1200, /* GL_PIXEL_MAP_I_TO_B */
+ 1198, /* GL_PIXEL_MAP_I_TO_A */
+ 1208, /* GL_PIXEL_MAP_R_TO_R */
+ 1196, /* GL_PIXEL_MAP_G_TO_G */
+ 1194, /* GL_PIXEL_MAP_B_TO_B */
+ 1192, /* GL_PIXEL_MAP_A_TO_A */
+ 1205, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ 1211, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ 1207, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ 1203, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ 1201, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ 1199, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ 1209, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ 1197, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ 1195, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ 1193, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ 1926, /* GL_UNPACK_SWAP_BYTES */
+ 1921, /* GL_UNPACK_LSB_FIRST */
+ 1922, /* GL_UNPACK_ROW_LENGTH */
+ 1925, /* GL_UNPACK_SKIP_ROWS */
+ 1924, /* GL_UNPACK_SKIP_PIXELS */
+ 1919, /* GL_UNPACK_ALIGNMENT */
+ 1179, /* GL_PACK_SWAP_BYTES */
+ 1174, /* GL_PACK_LSB_FIRST */
+ 1175, /* GL_PACK_ROW_LENGTH */
+ 1178, /* GL_PACK_SKIP_ROWS */
+ 1177, /* GL_PACK_SKIP_PIXELS */
+ 1171, /* GL_PACK_ALIGNMENT */
+ 854, /* GL_MAP_COLOR */
+ 859, /* GL_MAP_STENCIL */
+ 691, /* GL_INDEX_SHIFT */
+ 690, /* GL_INDEX_OFFSET */
+ 1409, /* GL_RED_SCALE */
+ 1407, /* GL_RED_BIAS */
+ 2040, /* GL_ZOOM_X */
+ 2041, /* GL_ZOOM_Y */
+ 646, /* GL_GREEN_SCALE */
+ 644, /* GL_GREEN_BIAS */
+ 101, /* GL_BLUE_SCALE */
+ 99, /* GL_BLUE_BIAS */
42, /* GL_ALPHA_SCALE */
40, /* GL_ALPHA_BIAS */
- 372, /* GL_DEPTH_SCALE */
- 352, /* GL_DEPTH_BIAS */
- 883, /* GL_MAX_EVAL_ORDER */
- 887, /* GL_MAX_LIGHTS */
- 865, /* GL_MAX_CLIP_PLANES */
- 935, /* GL_MAX_TEXTURE_SIZE */
- 893, /* GL_MAX_PIXEL_MAP_TABLE */
- 861, /* GL_MAX_ATTRIB_STACK_DEPTH */
- 890, /* GL_MAX_MODELVIEW_STACK_DEPTH */
- 891, /* GL_MAX_NAME_STACK_DEPTH */
- 919, /* GL_MAX_PROJECTION_STACK_DEPTH */
- 936, /* GL_MAX_TEXTURE_STACK_DEPTH */
- 953, /* GL_MAX_VIEWPORT_DIMS */
- 862, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- 1560, /* GL_SUBPIXEL_BITS */
- 639, /* GL_INDEX_BITS */
- 1325, /* GL_RED_BITS */
- 603, /* GL_GREEN_BITS */
- 92, /* GL_BLUE_BITS */
+ 391, /* GL_DEPTH_SCALE */
+ 368, /* GL_DEPTH_BIAS */
+ 943, /* GL_MAX_EVAL_ORDER */
+ 948, /* GL_MAX_LIGHTS */
+ 924, /* GL_MAX_CLIP_PLANES */
+ 999, /* GL_MAX_TEXTURE_SIZE */
+ 955, /* GL_MAX_PIXEL_MAP_TABLE */
+ 920, /* GL_MAX_ATTRIB_STACK_DEPTH */
+ 951, /* GL_MAX_MODELVIEW_STACK_DEPTH */
+ 952, /* GL_MAX_NAME_STACK_DEPTH */
+ 981, /* GL_MAX_PROJECTION_STACK_DEPTH */
+ 1000, /* GL_MAX_TEXTURE_STACK_DEPTH */
+ 1020, /* GL_MAX_VIEWPORT_DIMS */
+ 921, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
+ 1668, /* GL_SUBPIXEL_BITS */
+ 686, /* GL_INDEX_BITS */
+ 1408, /* GL_RED_BITS */
+ 645, /* GL_GREEN_BITS */
+ 100, /* GL_BLUE_BITS */
41, /* GL_ALPHA_BITS */
- 353, /* GL_DEPTH_BITS */
- 1528, /* GL_STENCIL_BITS */
+ 369, /* GL_DEPTH_BITS */
+ 1633, /* GL_STENCIL_BITS */
14, /* GL_ACCUM_RED_BITS */
13, /* GL_ACCUM_GREEN_BITS */
10, /* GL_ACCUM_BLUE_BITS */
9, /* GL_ACCUM_ALPHA_BITS */
- 1019, /* GL_NAME_STACK_DEPTH */
+ 1089, /* GL_NAME_STACK_DEPTH */
62, /* GL_AUTO_NORMAL */
- 749, /* GL_MAP1_COLOR_4 */
- 752, /* GL_MAP1_INDEX */
- 753, /* GL_MAP1_NORMAL */
- 754, /* GL_MAP1_TEXTURE_COORD_1 */
- 755, /* GL_MAP1_TEXTURE_COORD_2 */
- 756, /* GL_MAP1_TEXTURE_COORD_3 */
- 757, /* GL_MAP1_TEXTURE_COORD_4 */
- 758, /* GL_MAP1_VERTEX_3 */
- 759, /* GL_MAP1_VERTEX_4 */
- 776, /* GL_MAP2_COLOR_4 */
- 779, /* GL_MAP2_INDEX */
- 780, /* GL_MAP2_NORMAL */
- 781, /* GL_MAP2_TEXTURE_COORD_1 */
- 782, /* GL_MAP2_TEXTURE_COORD_2 */
- 783, /* GL_MAP2_TEXTURE_COORD_3 */
- 784, /* GL_MAP2_TEXTURE_COORD_4 */
- 785, /* GL_MAP2_VERTEX_3 */
- 786, /* GL_MAP2_VERTEX_4 */
- 750, /* GL_MAP1_GRID_DOMAIN */
- 751, /* GL_MAP1_GRID_SEGMENTS */
- 777, /* GL_MAP2_GRID_DOMAIN */
- 778, /* GL_MAP2_GRID_SEGMENTS */
- 1643, /* GL_TEXTURE_1D */
- 1645, /* GL_TEXTURE_2D */
- 483, /* GL_FEEDBACK_BUFFER_POINTER */
- 484, /* GL_FEEDBACK_BUFFER_SIZE */
- 485, /* GL_FEEDBACK_BUFFER_TYPE */
- 1438, /* GL_SELECTION_BUFFER_POINTER */
- 1439, /* GL_SELECTION_BUFFER_SIZE */
- 1762, /* GL_TEXTURE_WIDTH */
- 1725, /* GL_TEXTURE_HEIGHT */
- 1680, /* GL_TEXTURE_COMPONENTS */
- 1664, /* GL_TEXTURE_BORDER_COLOR */
- 1663, /* GL_TEXTURE_BORDER */
- 386, /* GL_DONT_CARE */
- 481, /* GL_FASTEST */
- 1027, /* GL_NICEST */
+ 800, /* GL_MAP1_COLOR_4 */
+ 803, /* GL_MAP1_INDEX */
+ 804, /* GL_MAP1_NORMAL */
+ 805, /* GL_MAP1_TEXTURE_COORD_1 */
+ 806, /* GL_MAP1_TEXTURE_COORD_2 */
+ 807, /* GL_MAP1_TEXTURE_COORD_3 */
+ 808, /* GL_MAP1_TEXTURE_COORD_4 */
+ 809, /* GL_MAP1_VERTEX_3 */
+ 810, /* GL_MAP1_VERTEX_4 */
+ 827, /* GL_MAP2_COLOR_4 */
+ 830, /* GL_MAP2_INDEX */
+ 831, /* GL_MAP2_NORMAL */
+ 832, /* GL_MAP2_TEXTURE_COORD_1 */
+ 833, /* GL_MAP2_TEXTURE_COORD_2 */
+ 834, /* GL_MAP2_TEXTURE_COORD_3 */
+ 835, /* GL_MAP2_TEXTURE_COORD_4 */
+ 836, /* GL_MAP2_VERTEX_3 */
+ 837, /* GL_MAP2_VERTEX_4 */
+ 801, /* GL_MAP1_GRID_DOMAIN */
+ 802, /* GL_MAP1_GRID_SEGMENTS */
+ 828, /* GL_MAP2_GRID_DOMAIN */
+ 829, /* GL_MAP2_GRID_SEGMENTS */
+ 1751, /* GL_TEXTURE_1D */
+ 1753, /* GL_TEXTURE_2D */
+ 503, /* GL_FEEDBACK_BUFFER_POINTER */
+ 504, /* GL_FEEDBACK_BUFFER_SIZE */
+ 505, /* GL_FEEDBACK_BUFFER_TYPE */
+ 1540, /* GL_SELECTION_BUFFER_POINTER */
+ 1541, /* GL_SELECTION_BUFFER_SIZE */
+ 1885, /* GL_TEXTURE_WIDTH */
+ 1847, /* GL_TEXTURE_HEIGHT */
+ 1791, /* GL_TEXTURE_COMPONENTS */
+ 1775, /* GL_TEXTURE_BORDER_COLOR */
+ 1774, /* GL_TEXTURE_BORDER */
+ 406, /* GL_DONT_CARE */
+ 501, /* GL_FASTEST */
+ 1097, /* GL_NICEST */
48, /* GL_AMBIENT */
- 383, /* GL_DIFFUSE */
- 1488, /* GL_SPECULAR */
- 1191, /* GL_POSITION */
- 1491, /* GL_SPOT_DIRECTION */
- 1492, /* GL_SPOT_EXPONENT */
- 1490, /* GL_SPOT_CUTOFF */
- 276, /* GL_CONSTANT_ATTENUATION */
- 699, /* GL_LINEAR_ATTENUATION */
- 1292, /* GL_QUADRATIC_ATTENUATION */
- 245, /* GL_COMPILE */
- 246, /* GL_COMPILE_AND_EXECUTE */
- 121, /* GL_BYTE */
- 1804, /* GL_UNSIGNED_BYTE */
- 1453, /* GL_SHORT */
- 1816, /* GL_UNSIGNED_SHORT */
- 647, /* GL_INT */
- 1807, /* GL_UNSIGNED_INT */
- 490, /* GL_FLOAT */
+ 403, /* GL_DIFFUSE */
+ 1592, /* GL_SPECULAR */
+ 1271, /* GL_POSITION */
+ 1595, /* GL_SPOT_DIRECTION */
+ 1596, /* GL_SPOT_EXPONENT */
+ 1594, /* GL_SPOT_CUTOFF */
+ 288, /* GL_CONSTANT_ATTENUATION */
+ 748, /* GL_LINEAR_ATTENUATION */
+ 1375, /* GL_QUADRATIC_ATTENUATION */
+ 257, /* GL_COMPILE */
+ 258, /* GL_COMPILE_AND_EXECUTE */
+ 132, /* GL_BYTE */
+ 1928, /* GL_UNSIGNED_BYTE */
+ 1557, /* GL_SHORT */
+ 1943, /* GL_UNSIGNED_SHORT */
+ 694, /* GL_INT */
+ 1931, /* GL_UNSIGNED_INT */
+ 512, /* GL_FLOAT */
1, /* GL_2_BYTES */
5, /* GL_3_BYTES */
7, /* GL_4_BYTES */
- 393, /* GL_DOUBLE */
- 605, /* GL_HALF_FLOAT */
- 133, /* GL_CLEAR */
+ 413, /* GL_DOUBLE */
+ 647, /* GL_HALF_FLOAT */
+ 509, /* GL_FIXED */
+ 144, /* GL_CLEAR */
50, /* GL_AND */
52, /* GL_AND_REVERSE */
- 300, /* GL_COPY */
+ 313, /* GL_COPY */
51, /* GL_AND_INVERTED */
- 1029, /* GL_NOOP */
- 1900, /* GL_XOR */
- 1092, /* GL_OR */
- 1030, /* GL_NOR */
- 471, /* GL_EQUIV */
- 675, /* GL_INVERT */
- 1095, /* GL_OR_REVERSE */
- 301, /* GL_COPY_INVERTED */
- 1094, /* GL_OR_INVERTED */
- 1020, /* GL_NAND */
- 1444, /* GL_SET */
- 468, /* GL_EMISSION */
- 1452, /* GL_SHININESS */
+ 1100, /* GL_NOOP */
+ 2036, /* GL_XOR */
+ 1166, /* GL_OR */
+ 1101, /* GL_NOR */
+ 491, /* GL_EQUIV */
+ 724, /* GL_INVERT */
+ 1169, /* GL_OR_REVERSE */
+ 314, /* GL_COPY_INVERTED */
+ 1168, /* GL_OR_INVERTED */
+ 1090, /* GL_NAND */
+ 1546, /* GL_SET */
+ 488, /* GL_EMISSION */
+ 1556, /* GL_SHININESS */
49, /* GL_AMBIENT_AND_DIFFUSE */
- 191, /* GL_COLOR_INDEXES */
- 970, /* GL_MODELVIEW */
- 1268, /* GL_PROJECTION */
- 1578, /* GL_TEXTURE */
- 148, /* GL_COLOR */
- 347, /* GL_DEPTH */
- 1514, /* GL_STENCIL */
- 190, /* GL_COLOR_INDEX */
- 1533, /* GL_STENCIL_INDEX */
- 360, /* GL_DEPTH_COMPONENT */
- 1321, /* GL_RED */
- 601, /* GL_GREEN */
- 90, /* GL_BLUE */
+ 203, /* GL_COLOR_INDEXES */
+ 1039, /* GL_MODELVIEW */
+ 1350, /* GL_PROJECTION */
+ 1686, /* GL_TEXTURE */
+ 159, /* GL_COLOR */
+ 361, /* GL_DEPTH */
+ 1618, /* GL_STENCIL */
+ 202, /* GL_COLOR_INDEX */
+ 1638, /* GL_STENCIL_INDEX */
+ 376, /* GL_DEPTH_COMPONENT */
+ 1404, /* GL_RED */
+ 643, /* GL_GREEN */
+ 98, /* GL_BLUE */
31, /* GL_ALPHA */
- 1360, /* GL_RGB */
- 1379, /* GL_RGBA */
- 727, /* GL_LUMINANCE */
- 748, /* GL_LUMINANCE_ALPHA */
- 73, /* GL_BITMAP */
- 1147, /* GL_POINT */
- 697, /* GL_LINE */
- 486, /* GL_FILL */
- 1331, /* GL_RENDER */
- 482, /* GL_FEEDBACK */
- 1437, /* GL_SELECT */
- 489, /* GL_FLAT */
- 1463, /* GL_SMOOTH */
- 676, /* GL_KEEP */
- 1353, /* GL_REPLACE */
- 629, /* GL_INCR */
- 343, /* GL_DECR */
- 1831, /* GL_VENDOR */
- 1350, /* GL_RENDERER */
- 1832, /* GL_VERSION */
- 475, /* GL_EXTENSIONS */
- 1402, /* GL_S */
- 1569, /* GL_T */
- 1308, /* GL_R */
- 1291, /* GL_Q */
- 1006, /* GL_MODULATE */
- 342, /* GL_DECAL */
- 1715, /* GL_TEXTURE_ENV_MODE */
- 1714, /* GL_TEXTURE_ENV_COLOR */
- 1713, /* GL_TEXTURE_ENV */
- 476, /* GL_EYE_LINEAR */
- 1053, /* GL_OBJECT_LINEAR */
- 1489, /* GL_SPHERE_MAP */
- 1717, /* GL_TEXTURE_GEN_MODE */
- 1055, /* GL_OBJECT_PLANE */
- 477, /* GL_EYE_PLANE */
- 1021, /* GL_NEAREST */
- 698, /* GL_LINEAR */
- 1025, /* GL_NEAREST_MIPMAP_NEAREST */
- 703, /* GL_LINEAR_MIPMAP_NEAREST */
- 1024, /* GL_NEAREST_MIPMAP_LINEAR */
- 702, /* GL_LINEAR_MIPMAP_LINEAR */
- 1738, /* GL_TEXTURE_MAG_FILTER */
- 1746, /* GL_TEXTURE_MIN_FILTER */
- 1764, /* GL_TEXTURE_WRAP_S */
- 1765, /* GL_TEXTURE_WRAP_T */
- 127, /* GL_CLAMP */
- 1352, /* GL_REPEAT */
- 1185, /* GL_POLYGON_OFFSET_UNITS */
- 1184, /* GL_POLYGON_OFFSET_POINT */
- 1183, /* GL_POLYGON_OFFSET_LINE */
- 1309, /* GL_R3_G3_B2 */
- 1828, /* GL_V2F */
- 1829, /* GL_V3F */
- 124, /* GL_C4UB_V2F */
- 125, /* GL_C4UB_V3F */
- 122, /* GL_C3F_V3F */
- 1018, /* GL_N3F_V3F */
- 123, /* GL_C4F_N3F_V3F */
- 1574, /* GL_T2F_V3F */
- 1576, /* GL_T4F_V4F */
- 1572, /* GL_T2F_C4UB_V3F */
- 1570, /* GL_T2F_C3F_V3F */
- 1573, /* GL_T2F_N3F_V3F */
- 1571, /* GL_T2F_C4F_N3F_V3F */
- 1575, /* GL_T4F_C4F_N3F_V4F */
- 140, /* GL_CLIP_PLANE0 */
- 141, /* GL_CLIP_PLANE1 */
- 142, /* GL_CLIP_PLANE2 */
- 143, /* GL_CLIP_PLANE3 */
- 144, /* GL_CLIP_PLANE4 */
- 145, /* GL_CLIP_PLANE5 */
- 682, /* GL_LIGHT0 */
- 683, /* GL_LIGHT1 */
- 684, /* GL_LIGHT2 */
- 685, /* GL_LIGHT3 */
- 686, /* GL_LIGHT4 */
- 687, /* GL_LIGHT5 */
- 688, /* GL_LIGHT6 */
- 689, /* GL_LIGHT7 */
- 606, /* GL_HINT_BIT */
- 278, /* GL_CONSTANT_COLOR */
- 1066, /* GL_ONE_MINUS_CONSTANT_COLOR */
- 273, /* GL_CONSTANT_ALPHA */
- 1064, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- 76, /* GL_BLEND_COLOR */
- 589, /* GL_FUNC_ADD */
- 954, /* GL_MIN */
- 858, /* GL_MAX */
- 81, /* GL_BLEND_EQUATION */
- 593, /* GL_FUNC_SUBTRACT */
- 591, /* GL_FUNC_REVERSE_SUBTRACT */
- 281, /* GL_CONVOLUTION_1D */
- 282, /* GL_CONVOLUTION_2D */
- 1440, /* GL_SEPARABLE_2D */
- 285, /* GL_CONVOLUTION_BORDER_MODE */
- 289, /* GL_CONVOLUTION_FILTER_SCALE */
- 287, /* GL_CONVOLUTION_FILTER_BIAS */
- 1322, /* GL_REDUCE */
- 291, /* GL_CONVOLUTION_FORMAT */
- 295, /* GL_CONVOLUTION_WIDTH */
- 293, /* GL_CONVOLUTION_HEIGHT */
- 874, /* GL_MAX_CONVOLUTION_WIDTH */
- 872, /* GL_MAX_CONVOLUTION_HEIGHT */
- 1224, /* GL_POST_CONVOLUTION_RED_SCALE */
- 1220, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- 1215, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- 1211, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- 1222, /* GL_POST_CONVOLUTION_RED_BIAS */
- 1218, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- 1213, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- 1209, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- 607, /* GL_HISTOGRAM */
- 1274, /* GL_PROXY_HISTOGRAM */
- 623, /* GL_HISTOGRAM_WIDTH */
- 613, /* GL_HISTOGRAM_FORMAT */
- 619, /* GL_HISTOGRAM_RED_SIZE */
- 615, /* GL_HISTOGRAM_GREEN_SIZE */
- 610, /* GL_HISTOGRAM_BLUE_SIZE */
- 608, /* GL_HISTOGRAM_ALPHA_SIZE */
- 617, /* GL_HISTOGRAM_LUMINANCE_SIZE */
- 621, /* GL_HISTOGRAM_SINK */
- 955, /* GL_MINMAX */
- 957, /* GL_MINMAX_FORMAT */
- 959, /* GL_MINMAX_SINK */
- 1577, /* GL_TABLE_TOO_LARGE_EXT */
- 1806, /* GL_UNSIGNED_BYTE_3_3_2 */
- 1818, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- 1820, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- 1813, /* GL_UNSIGNED_INT_8_8_8_8 */
- 1808, /* GL_UNSIGNED_INT_10_10_10_2 */
- 1182, /* GL_POLYGON_OFFSET_FILL */
- 1181, /* GL_POLYGON_OFFSET_FACTOR */
- 1180, /* GL_POLYGON_OFFSET_BIAS */
- 1356, /* GL_RESCALE_NORMAL */
+ 1455, /* GL_RGB */
+ 1478, /* GL_RGBA */
+ 778, /* GL_LUMINANCE */
+ 799, /* GL_LUMINANCE_ALPHA */
+ 74, /* GL_BITMAP */
+ 1221, /* GL_POINT */
+ 746, /* GL_LINE */
+ 506, /* GL_FILL */
+ 1415, /* GL_RENDER */
+ 502, /* GL_FEEDBACK */
+ 1539, /* GL_SELECT */
+ 511, /* GL_FLAT */
+ 1567, /* GL_SMOOTH */
+ 725, /* GL_KEEP */
+ 1448, /* GL_REPLACE */
+ 676, /* GL_INCR */
+ 357, /* GL_DECR */
+ 1960, /* GL_VENDOR */
+ 1445, /* GL_RENDERER */
+ 1961, /* GL_VERSION */
+ 495, /* GL_EXTENSIONS */
+ 1503, /* GL_S */
+ 1677, /* GL_T */
+ 1391, /* GL_R */
+ 1374, /* GL_Q */
+ 1076, /* GL_MODULATE */
+ 356, /* GL_DECAL */
+ 1834, /* GL_TEXTURE_ENV_MODE */
+ 1833, /* GL_TEXTURE_ENV_COLOR */
+ 1832, /* GL_TEXTURE_ENV */
+ 496, /* GL_EYE_LINEAR */
+ 1127, /* GL_OBJECT_LINEAR */
+ 1593, /* GL_SPHERE_MAP */
+ 1837, /* GL_TEXTURE_GEN_MODE */
+ 1129, /* GL_OBJECT_PLANE */
+ 497, /* GL_EYE_PLANE */
+ 1091, /* GL_NEAREST */
+ 747, /* GL_LINEAR */
+ 1095, /* GL_NEAREST_MIPMAP_NEAREST */
+ 752, /* GL_LINEAR_MIPMAP_NEAREST */
+ 1094, /* GL_NEAREST_MIPMAP_LINEAR */
+ 751, /* GL_LINEAR_MIPMAP_LINEAR */
+ 1860, /* GL_TEXTURE_MAG_FILTER */
+ 1869, /* GL_TEXTURE_MIN_FILTER */
+ 1888, /* GL_TEXTURE_WRAP_S */
+ 1889, /* GL_TEXTURE_WRAP_T */
+ 138, /* GL_CLAMP */
+ 1447, /* GL_REPEAT */
+ 1265, /* GL_POLYGON_OFFSET_UNITS */
+ 1264, /* GL_POLYGON_OFFSET_POINT */
+ 1263, /* GL_POLYGON_OFFSET_LINE */
+ 1392, /* GL_R3_G3_B2 */
+ 1957, /* GL_V2F */
+ 1958, /* GL_V3F */
+ 135, /* GL_C4UB_V2F */
+ 136, /* GL_C4UB_V3F */
+ 133, /* GL_C3F_V3F */
+ 1088, /* GL_N3F_V3F */
+ 134, /* GL_C4F_N3F_V3F */
+ 1682, /* GL_T2F_V3F */
+ 1684, /* GL_T4F_V4F */
+ 1680, /* GL_T2F_C4UB_V3F */
+ 1678, /* GL_T2F_C3F_V3F */
+ 1681, /* GL_T2F_N3F_V3F */
+ 1679, /* GL_T2F_C4F_N3F_V3F */
+ 1683, /* GL_T4F_C4F_N3F_V4F */
+ 151, /* GL_CLIP_PLANE0 */
+ 152, /* GL_CLIP_PLANE1 */
+ 153, /* GL_CLIP_PLANE2 */
+ 154, /* GL_CLIP_PLANE3 */
+ 155, /* GL_CLIP_PLANE4 */
+ 156, /* GL_CLIP_PLANE5 */
+ 731, /* GL_LIGHT0 */
+ 732, /* GL_LIGHT1 */
+ 733, /* GL_LIGHT2 */
+ 734, /* GL_LIGHT3 */
+ 735, /* GL_LIGHT4 */
+ 736, /* GL_LIGHT5 */
+ 737, /* GL_LIGHT6 */
+ 738, /* GL_LIGHT7 */
+ 651, /* GL_HINT_BIT */
+ 290, /* GL_CONSTANT_COLOR */
+ 1140, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ 285, /* GL_CONSTANT_ALPHA */
+ 1138, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ 77, /* GL_BLEND_COLOR */
+ 628, /* GL_FUNC_ADD */
+ 1023, /* GL_MIN */
+ 916, /* GL_MAX */
+ 84, /* GL_BLEND_EQUATION */
+ 634, /* GL_FUNC_SUBTRACT */
+ 631, /* GL_FUNC_REVERSE_SUBTRACT */
+ 293, /* GL_CONVOLUTION_1D */
+ 294, /* GL_CONVOLUTION_2D */
+ 1542, /* GL_SEPARABLE_2D */
+ 297, /* GL_CONVOLUTION_BORDER_MODE */
+ 301, /* GL_CONVOLUTION_FILTER_SCALE */
+ 299, /* GL_CONVOLUTION_FILTER_BIAS */
+ 1405, /* GL_REDUCE */
+ 303, /* GL_CONVOLUTION_FORMAT */
+ 307, /* GL_CONVOLUTION_WIDTH */
+ 305, /* GL_CONVOLUTION_HEIGHT */
+ 933, /* GL_MAX_CONVOLUTION_WIDTH */
+ 931, /* GL_MAX_CONVOLUTION_HEIGHT */
+ 1304, /* GL_POST_CONVOLUTION_RED_SCALE */
+ 1300, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ 1295, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ 1291, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ 1302, /* GL_POST_CONVOLUTION_RED_BIAS */
+ 1298, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ 1293, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ 1289, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ 652, /* GL_HISTOGRAM */
+ 1357, /* GL_PROXY_HISTOGRAM */
+ 668, /* GL_HISTOGRAM_WIDTH */
+ 658, /* GL_HISTOGRAM_FORMAT */
+ 664, /* GL_HISTOGRAM_RED_SIZE */
+ 660, /* GL_HISTOGRAM_GREEN_SIZE */
+ 655, /* GL_HISTOGRAM_BLUE_SIZE */
+ 653, /* GL_HISTOGRAM_ALPHA_SIZE */
+ 662, /* GL_HISTOGRAM_LUMINANCE_SIZE */
+ 666, /* GL_HISTOGRAM_SINK */
+ 1024, /* GL_MINMAX */
+ 1026, /* GL_MINMAX_FORMAT */
+ 1028, /* GL_MINMAX_SINK */
+ 1685, /* GL_TABLE_TOO_LARGE_EXT */
+ 1930, /* GL_UNSIGNED_BYTE_3_3_2 */
+ 1946, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ 1949, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ 1940, /* GL_UNSIGNED_INT_8_8_8_8 */
+ 1932, /* GL_UNSIGNED_INT_10_10_10_2 */
+ 1262, /* GL_POLYGON_OFFSET_FILL */
+ 1261, /* GL_POLYGON_OFFSET_FACTOR */
+ 1260, /* GL_POLYGON_OFFSET_BIAS */
+ 1451, /* GL_RESCALE_NORMAL */
36, /* GL_ALPHA4 */
38, /* GL_ALPHA8 */
32, /* GL_ALPHA12 */
34, /* GL_ALPHA16 */
- 738, /* GL_LUMINANCE4 */
- 744, /* GL_LUMINANCE8 */
- 728, /* GL_LUMINANCE12 */
- 734, /* GL_LUMINANCE16 */
- 739, /* GL_LUMINANCE4_ALPHA4 */
- 742, /* GL_LUMINANCE6_ALPHA2 */
- 745, /* GL_LUMINANCE8_ALPHA8 */
- 731, /* GL_LUMINANCE12_ALPHA4 */
- 729, /* GL_LUMINANCE12_ALPHA12 */
- 735, /* GL_LUMINANCE16_ALPHA16 */
- 648, /* GL_INTENSITY */
- 653, /* GL_INTENSITY4 */
- 655, /* GL_INTENSITY8 */
- 649, /* GL_INTENSITY12 */
- 651, /* GL_INTENSITY16 */
- 1369, /* GL_RGB2_EXT */
- 1370, /* GL_RGB4 */
- 1373, /* GL_RGB5 */
- 1377, /* GL_RGB8 */
- 1361, /* GL_RGB10 */
- 1365, /* GL_RGB12 */
- 1367, /* GL_RGB16 */
- 1384, /* GL_RGBA2 */
- 1386, /* GL_RGBA4 */
- 1374, /* GL_RGB5_A1 */
- 1390, /* GL_RGBA8 */
- 1362, /* GL_RGB10_A2 */
- 1380, /* GL_RGBA12 */
- 1382, /* GL_RGBA16 */
- 1753, /* GL_TEXTURE_RED_SIZE */
- 1723, /* GL_TEXTURE_GREEN_SIZE */
- 1661, /* GL_TEXTURE_BLUE_SIZE */
- 1648, /* GL_TEXTURE_ALPHA_SIZE */
- 1736, /* GL_TEXTURE_LUMINANCE_SIZE */
- 1727, /* GL_TEXTURE_INTENSITY_SIZE */
- 1354, /* GL_REPLACE_EXT */
- 1278, /* GL_PROXY_TEXTURE_1D */
- 1281, /* GL_PROXY_TEXTURE_2D */
- 1760, /* GL_TEXTURE_TOO_LARGE_EXT */
- 1748, /* GL_TEXTURE_PRIORITY */
- 1755, /* GL_TEXTURE_RESIDENT */
- 1651, /* GL_TEXTURE_BINDING_1D */
- 1653, /* GL_TEXTURE_BINDING_2D */
- 1655, /* GL_TEXTURE_BINDING_3D */
- 1102, /* GL_PACK_SKIP_IMAGES */
- 1098, /* GL_PACK_IMAGE_HEIGHT */
- 1799, /* GL_UNPACK_SKIP_IMAGES */
- 1796, /* GL_UNPACK_IMAGE_HEIGHT */
- 1647, /* GL_TEXTURE_3D */
- 1284, /* GL_PROXY_TEXTURE_3D */
- 1710, /* GL_TEXTURE_DEPTH */
- 1763, /* GL_TEXTURE_WRAP_R */
- 859, /* GL_MAX_3D_TEXTURE_SIZE */
- 1833, /* GL_VERTEX_ARRAY */
- 1032, /* GL_NORMAL_ARRAY */
- 149, /* GL_COLOR_ARRAY */
- 633, /* GL_INDEX_ARRAY */
- 1688, /* GL_TEXTURE_COORD_ARRAY */
- 460, /* GL_EDGE_FLAG_ARRAY */
- 1839, /* GL_VERTEX_ARRAY_SIZE */
- 1841, /* GL_VERTEX_ARRAY_TYPE */
- 1840, /* GL_VERTEX_ARRAY_STRIDE */
- 1037, /* GL_NORMAL_ARRAY_TYPE */
- 1036, /* GL_NORMAL_ARRAY_STRIDE */
- 153, /* GL_COLOR_ARRAY_SIZE */
- 155, /* GL_COLOR_ARRAY_TYPE */
- 154, /* GL_COLOR_ARRAY_STRIDE */
- 638, /* GL_INDEX_ARRAY_TYPE */
- 637, /* GL_INDEX_ARRAY_STRIDE */
- 1692, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- 1694, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- 1693, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- 464, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- 1838, /* GL_VERTEX_ARRAY_POINTER */
- 1035, /* GL_NORMAL_ARRAY_POINTER */
- 152, /* GL_COLOR_ARRAY_POINTER */
- 636, /* GL_INDEX_ARRAY_POINTER */
- 1691, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- 463, /* GL_EDGE_FLAG_ARRAY_POINTER */
- 1011, /* GL_MULTISAMPLE */
- 1414, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- 1416, /* GL_SAMPLE_ALPHA_TO_ONE */
- 1421, /* GL_SAMPLE_COVERAGE */
- 1418, /* GL_SAMPLE_BUFFERS */
- 1409, /* GL_SAMPLES */
- 1425, /* GL_SAMPLE_COVERAGE_VALUE */
- 1423, /* GL_SAMPLE_COVERAGE_INVERT */
- 196, /* GL_COLOR_MATRIX */
- 198, /* GL_COLOR_MATRIX_STACK_DEPTH */
- 868, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- 1207, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- 1203, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- 1198, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- 1194, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- 1205, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- 1201, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- 1196, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- 1192, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- 1671, /* GL_TEXTURE_COLOR_TABLE_SGI */
- 1285, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- 1673, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- 80, /* GL_BLEND_DST_RGB */
- 89, /* GL_BLEND_SRC_RGB */
- 79, /* GL_BLEND_DST_ALPHA */
- 88, /* GL_BLEND_SRC_ALPHA */
- 202, /* GL_COLOR_TABLE */
- 1217, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- 1200, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- 1273, /* GL_PROXY_COLOR_TABLE */
- 1277, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- 1276, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- 226, /* GL_COLOR_TABLE_SCALE */
- 206, /* GL_COLOR_TABLE_BIAS */
- 211, /* GL_COLOR_TABLE_FORMAT */
- 228, /* GL_COLOR_TABLE_WIDTH */
- 223, /* GL_COLOR_TABLE_RED_SIZE */
- 214, /* GL_COLOR_TABLE_GREEN_SIZE */
- 208, /* GL_COLOR_TABLE_BLUE_SIZE */
- 203, /* GL_COLOR_TABLE_ALPHA_SIZE */
- 220, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
- 217, /* GL_COLOR_TABLE_INTENSITY_SIZE */
+ 789, /* GL_LUMINANCE4 */
+ 795, /* GL_LUMINANCE8 */
+ 779, /* GL_LUMINANCE12 */
+ 785, /* GL_LUMINANCE16 */
+ 790, /* GL_LUMINANCE4_ALPHA4 */
+ 793, /* GL_LUMINANCE6_ALPHA2 */
+ 796, /* GL_LUMINANCE8_ALPHA8 */
+ 782, /* GL_LUMINANCE12_ALPHA4 */
+ 780, /* GL_LUMINANCE12_ALPHA12 */
+ 786, /* GL_LUMINANCE16_ALPHA16 */
+ 695, /* GL_INTENSITY */
+ 700, /* GL_INTENSITY4 */
+ 702, /* GL_INTENSITY8 */
+ 696, /* GL_INTENSITY12 */
+ 698, /* GL_INTENSITY16 */
+ 1464, /* GL_RGB2_EXT */
+ 1465, /* GL_RGB4 */
+ 1468, /* GL_RGB5 */
+ 1475, /* GL_RGB8 */
+ 1456, /* GL_RGB10 */
+ 1460, /* GL_RGB12 */
+ 1462, /* GL_RGB16 */
+ 1483, /* GL_RGBA2 */
+ 1485, /* GL_RGBA4 */
+ 1471, /* GL_RGB5_A1 */
+ 1490, /* GL_RGBA8 */
+ 1457, /* GL_RGB10_A2 */
+ 1479, /* GL_RGBA12 */
+ 1481, /* GL_RGBA16 */
+ 1876, /* GL_TEXTURE_RED_SIZE */
+ 1845, /* GL_TEXTURE_GREEN_SIZE */
+ 1772, /* GL_TEXTURE_BLUE_SIZE */
+ 1757, /* GL_TEXTURE_ALPHA_SIZE */
+ 1858, /* GL_TEXTURE_LUMINANCE_SIZE */
+ 1849, /* GL_TEXTURE_INTENSITY_SIZE */
+ 1449, /* GL_REPLACE_EXT */
+ 1361, /* GL_PROXY_TEXTURE_1D */
+ 1364, /* GL_PROXY_TEXTURE_2D */
+ 1883, /* GL_TEXTURE_TOO_LARGE_EXT */
+ 1871, /* GL_TEXTURE_PRIORITY */
+ 1878, /* GL_TEXTURE_RESIDENT */
+ 1760, /* GL_TEXTURE_BINDING_1D */
+ 1762, /* GL_TEXTURE_BINDING_2D */
+ 1764, /* GL_TEXTURE_BINDING_3D */
+ 1176, /* GL_PACK_SKIP_IMAGES */
+ 1172, /* GL_PACK_IMAGE_HEIGHT */
+ 1923, /* GL_UNPACK_SKIP_IMAGES */
+ 1920, /* GL_UNPACK_IMAGE_HEIGHT */
+ 1755, /* GL_TEXTURE_3D */
+ 1367, /* GL_PROXY_TEXTURE_3D */
+ 1829, /* GL_TEXTURE_DEPTH */
+ 1886, /* GL_TEXTURE_WRAP_R */
+ 917, /* GL_MAX_3D_TEXTURE_SIZE */
+ 1962, /* GL_VERTEX_ARRAY */
+ 1103, /* GL_NORMAL_ARRAY */
+ 160, /* GL_COLOR_ARRAY */
+ 680, /* GL_INDEX_ARRAY */
+ 1799, /* GL_TEXTURE_COORD_ARRAY */
+ 480, /* GL_EDGE_FLAG_ARRAY */
+ 1968, /* GL_VERTEX_ARRAY_SIZE */
+ 1970, /* GL_VERTEX_ARRAY_TYPE */
+ 1969, /* GL_VERTEX_ARRAY_STRIDE */
+ 1108, /* GL_NORMAL_ARRAY_TYPE */
+ 1107, /* GL_NORMAL_ARRAY_STRIDE */
+ 164, /* GL_COLOR_ARRAY_SIZE */
+ 166, /* GL_COLOR_ARRAY_TYPE */
+ 165, /* GL_COLOR_ARRAY_STRIDE */
+ 685, /* GL_INDEX_ARRAY_TYPE */
+ 684, /* GL_INDEX_ARRAY_STRIDE */
+ 1803, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ 1805, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ 1804, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ 484, /* GL_EDGE_FLAG_ARRAY_STRIDE */
+ 1967, /* GL_VERTEX_ARRAY_POINTER */
+ 1106, /* GL_NORMAL_ARRAY_POINTER */
+ 163, /* GL_COLOR_ARRAY_POINTER */
+ 683, /* GL_INDEX_ARRAY_POINTER */
+ 1802, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ 483, /* GL_EDGE_FLAG_ARRAY_POINTER */
+ 1081, /* GL_MULTISAMPLE */
+ 1516, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ 1518, /* GL_SAMPLE_ALPHA_TO_ONE */
+ 1523, /* GL_SAMPLE_COVERAGE */
+ 1520, /* GL_SAMPLE_BUFFERS */
+ 1511, /* GL_SAMPLES */
+ 1527, /* GL_SAMPLE_COVERAGE_VALUE */
+ 1525, /* GL_SAMPLE_COVERAGE_INVERT */
+ 208, /* GL_COLOR_MATRIX */
+ 210, /* GL_COLOR_MATRIX_STACK_DEPTH */
+ 927, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
+ 1287, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ 1283, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ 1278, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ 1274, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ 1285, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ 1281, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ 1276, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ 1272, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ 1782, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ 1368, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ 1784, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ 82, /* GL_BLEND_DST_RGB */
+ 96, /* GL_BLEND_SRC_RGB */
+ 80, /* GL_BLEND_DST_ALPHA */
+ 94, /* GL_BLEND_SRC_ALPHA */
+ 214, /* GL_COLOR_TABLE */
+ 1297, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ 1280, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1356, /* GL_PROXY_COLOR_TABLE */
+ 1360, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ 1359, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ 238, /* GL_COLOR_TABLE_SCALE */
+ 218, /* GL_COLOR_TABLE_BIAS */
+ 223, /* GL_COLOR_TABLE_FORMAT */
+ 240, /* GL_COLOR_TABLE_WIDTH */
+ 235, /* GL_COLOR_TABLE_RED_SIZE */
+ 226, /* GL_COLOR_TABLE_GREEN_SIZE */
+ 220, /* GL_COLOR_TABLE_BLUE_SIZE */
+ 215, /* GL_COLOR_TABLE_ALPHA_SIZE */
+ 232, /* GL_COLOR_TABLE_LUMINANCE_SIZE */
+ 229, /* GL_COLOR_TABLE_INTENSITY_SIZE */
71, /* GL_BGR */
72, /* GL_BGRA */
- 882, /* GL_MAX_ELEMENTS_VERTICES */
- 881, /* GL_MAX_ELEMENTS_INDICES */
- 1726, /* GL_TEXTURE_INDEX_SIZE_EXT */
- 146, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- 1164, /* GL_POINT_SIZE_MIN */
- 1160, /* GL_POINT_SIZE_MAX */
- 1154, /* GL_POINT_FADE_THRESHOLD_SIZE */
- 1150, /* GL_POINT_DISTANCE_ATTENUATION */
- 128, /* GL_CLAMP_TO_BORDER */
- 131, /* GL_CLAMP_TO_EDGE */
- 1747, /* GL_TEXTURE_MIN_LOD */
- 1745, /* GL_TEXTURE_MAX_LOD */
- 1650, /* GL_TEXTURE_BASE_LEVEL */
- 1744, /* GL_TEXTURE_MAX_LEVEL */
- 626, /* GL_IGNORE_BORDER_HP */
- 277, /* GL_CONSTANT_BORDER_HP */
- 1355, /* GL_REPLICATE_BORDER_HP */
- 283, /* GL_CONVOLUTION_BORDER_COLOR */
- 1061, /* GL_OCCLUSION_TEST_HP */
- 1062, /* GL_OCCLUSION_TEST_RESULT_HP */
- 700, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- 1665, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- 1667, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- 1669, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- 1670, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1668, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- 1666, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- 863, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
- 864, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1227, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- 1229, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- 1226, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- 1228, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- 1734, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- 1735, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- 1733, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- 595, /* GL_GENERATE_MIPMAP */
- 596, /* GL_GENERATE_MIPMAP_HINT */
- 533, /* GL_FOG_OFFSET_SGIX */
- 534, /* GL_FOG_OFFSET_VALUE_SGIX */
- 1679, /* GL_TEXTURE_COMPARE_SGIX */
- 1678, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- 1730, /* GL_TEXTURE_LEQUAL_R_SGIX */
- 1722, /* GL_TEXTURE_GEQUAL_R_SGIX */
- 361, /* GL_DEPTH_COMPONENT16 */
- 364, /* GL_DEPTH_COMPONENT24 */
- 367, /* GL_DEPTH_COMPONENT32 */
- 307, /* GL_CULL_VERTEX_EXT */
- 309, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
- 308, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- 1897, /* GL_WRAP_BORDER_SUN */
- 1672, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- 693, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- 1456, /* GL_SINGLE_COLOR */
- 1442, /* GL_SEPARATE_SPECULAR_COLOR */
- 1451, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- 544, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
- 545, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
- 552, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
- 547, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
- 543, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
- 542, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
- 546, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
- 553, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
- 565, /* GL_FRAMEBUFFER_DEFAULT */
- 581, /* GL_FRAMEBUFFER_UNDEFINED */
- 374, /* GL_DEPTH_STENCIL_ATTACHMENT */
- 632, /* GL_INDEX */
- 1805, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- 1821, /* GL_UNSIGNED_SHORT_5_6_5 */
- 1822, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- 1819, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- 1817, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- 1814, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- 1812, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- 1742, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- 1743, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- 1741, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- 962, /* GL_MIRRORED_REPEAT */
- 1397, /* GL_RGB_S3TC */
- 1372, /* GL_RGB4_S3TC */
- 1395, /* GL_RGBA_S3TC */
- 1389, /* GL_RGBA4_S3TC */
- 1393, /* GL_RGBA_DXT5_S3TC */
- 1387, /* GL_RGBA4_DXT5_S3TC */
- 265, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
- 260, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
- 261, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
- 262, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
- 1023, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
- 1022, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
- 701, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
- 520, /* GL_FOG_COORDINATE_SOURCE */
- 512, /* GL_FOG_COORD */
- 536, /* GL_FRAGMENT_DEPTH */
- 313, /* GL_CURRENT_FOG_COORD */
- 519, /* GL_FOG_COORDINATE_ARRAY_TYPE */
- 518, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
- 517, /* GL_FOG_COORDINATE_ARRAY_POINTER */
- 514, /* GL_FOG_COORDINATE_ARRAY */
- 200, /* GL_COLOR_SUM */
- 333, /* GL_CURRENT_SECONDARY_COLOR */
- 1434, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- 1436, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- 1435, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- 1433, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- 1430, /* GL_SECONDARY_COLOR_ARRAY */
- 331, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
+ 942, /* GL_MAX_ELEMENTS_VERTICES */
+ 941, /* GL_MAX_ELEMENTS_INDICES */
+ 1848, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ 157, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
+ 1243, /* GL_POINT_SIZE_MIN */
+ 1239, /* GL_POINT_SIZE_MAX */
+ 1228, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ 1224, /* GL_POINT_DISTANCE_ATTENUATION */
+ 139, /* GL_CLAMP_TO_BORDER */
+ 142, /* GL_CLAMP_TO_EDGE */
+ 1870, /* GL_TEXTURE_MIN_LOD */
+ 1868, /* GL_TEXTURE_MAX_LOD */
+ 1759, /* GL_TEXTURE_BASE_LEVEL */
+ 1867, /* GL_TEXTURE_MAX_LEVEL */
+ 671, /* GL_IGNORE_BORDER_HP */
+ 289, /* GL_CONSTANT_BORDER_HP */
+ 1450, /* GL_REPLICATE_BORDER_HP */
+ 295, /* GL_CONVOLUTION_BORDER_COLOR */
+ 1135, /* GL_OCCLUSION_TEST_HP */
+ 1136, /* GL_OCCLUSION_TEST_RESULT_HP */
+ 749, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
+ 1776, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ 1778, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ 1780, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ 1781, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1779, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ 1777, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ 922, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
+ 923, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 1307, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ 1309, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ 1306, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ 1308, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ 1856, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ 1857, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ 1855, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ 637, /* GL_GENERATE_MIPMAP */
+ 638, /* GL_GENERATE_MIPMAP_HINT */
+ 555, /* GL_FOG_OFFSET_SGIX */
+ 556, /* GL_FOG_OFFSET_VALUE_SGIX */
+ 1790, /* GL_TEXTURE_COMPARE_SGIX */
+ 1789, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ 1852, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ 1844, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ 377, /* GL_DEPTH_COMPONENT16 */
+ 381, /* GL_DEPTH_COMPONENT24 */
+ 385, /* GL_DEPTH_COMPONENT32 */
+ 320, /* GL_CULL_VERTEX_EXT */
+ 322, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
+ 321, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
+ 2032, /* GL_WRAP_BORDER_SUN */
+ 1783, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ 742, /* GL_LIGHT_MODEL_COLOR_CONTROL */
+ 1560, /* GL_SINGLE_COLOR */
+ 1544, /* GL_SEPARATE_SPECULAR_COLOR */
+ 1555, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ 567, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
+ 568, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
+ 577, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
+ 570, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */
+ 566, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */
+ 565, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */
+ 569, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */
+ 578, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */
+ 595, /* GL_FRAMEBUFFER_DEFAULT */
+ 619, /* GL_FRAMEBUFFER_UNDEFINED */
+ 393, /* GL_DEPTH_STENCIL_ATTACHMENT */
+ 679, /* GL_INDEX */
+ 1929, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ 1950, /* GL_UNSIGNED_SHORT_5_6_5 */
+ 1951, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ 1947, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ 1944, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ 1941, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ 1938, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ 1865, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ 1866, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ 1864, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ 1031, /* GL_MIRRORED_REPEAT */
+ 1498, /* GL_RGB_S3TC */
+ 1467, /* GL_RGB4_S3TC */
+ 1496, /* GL_RGBA_S3TC */
+ 1489, /* GL_RGBA4_S3TC */
+ 1494, /* GL_RGBA_DXT5_S3TC */
+ 1486, /* GL_RGBA4_DXT5_S3TC */
+ 277, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
+ 272, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
+ 273, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
+ 274, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */
+ 1093, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */
+ 1092, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */
+ 750, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */
+ 542, /* GL_FOG_COORDINATE_SOURCE */
+ 534, /* GL_FOG_COORD */
+ 558, /* GL_FRAGMENT_DEPTH */
+ 326, /* GL_CURRENT_FOG_COORD */
+ 541, /* GL_FOG_COORDINATE_ARRAY_TYPE */
+ 540, /* GL_FOG_COORDINATE_ARRAY_STRIDE */
+ 539, /* GL_FOG_COORDINATE_ARRAY_POINTER */
+ 536, /* GL_FOG_COORDINATE_ARRAY */
+ 212, /* GL_COLOR_SUM */
+ 347, /* GL_CURRENT_SECONDARY_COLOR */
+ 1536, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ 1538, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ 1537, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ 1535, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ 1532, /* GL_SECONDARY_COLOR_ARRAY */
+ 345, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
28, /* GL_ALIASED_POINT_SIZE_RANGE */
27, /* GL_ALIASED_LINE_WIDTH_RANGE */
- 1579, /* GL_TEXTURE0 */
- 1581, /* GL_TEXTURE1 */
- 1603, /* GL_TEXTURE2 */
- 1625, /* GL_TEXTURE3 */
- 1631, /* GL_TEXTURE4 */
- 1633, /* GL_TEXTURE5 */
- 1635, /* GL_TEXTURE6 */
- 1637, /* GL_TEXTURE7 */
- 1639, /* GL_TEXTURE8 */
- 1641, /* GL_TEXTURE9 */
- 1582, /* GL_TEXTURE10 */
- 1584, /* GL_TEXTURE11 */
- 1586, /* GL_TEXTURE12 */
- 1588, /* GL_TEXTURE13 */
- 1590, /* GL_TEXTURE14 */
- 1592, /* GL_TEXTURE15 */
- 1594, /* GL_TEXTURE16 */
- 1596, /* GL_TEXTURE17 */
- 1598, /* GL_TEXTURE18 */
- 1600, /* GL_TEXTURE19 */
- 1604, /* GL_TEXTURE20 */
- 1606, /* GL_TEXTURE21 */
- 1608, /* GL_TEXTURE22 */
- 1610, /* GL_TEXTURE23 */
- 1612, /* GL_TEXTURE24 */
- 1614, /* GL_TEXTURE25 */
- 1616, /* GL_TEXTURE26 */
- 1618, /* GL_TEXTURE27 */
- 1620, /* GL_TEXTURE28 */
- 1622, /* GL_TEXTURE29 */
- 1626, /* GL_TEXTURE30 */
- 1628, /* GL_TEXTURE31 */
+ 1687, /* GL_TEXTURE0 */
+ 1689, /* GL_TEXTURE1 */
+ 1711, /* GL_TEXTURE2 */
+ 1733, /* GL_TEXTURE3 */
+ 1739, /* GL_TEXTURE4 */
+ 1741, /* GL_TEXTURE5 */
+ 1743, /* GL_TEXTURE6 */
+ 1745, /* GL_TEXTURE7 */
+ 1747, /* GL_TEXTURE8 */
+ 1749, /* GL_TEXTURE9 */
+ 1690, /* GL_TEXTURE10 */
+ 1692, /* GL_TEXTURE11 */
+ 1694, /* GL_TEXTURE12 */
+ 1696, /* GL_TEXTURE13 */
+ 1698, /* GL_TEXTURE14 */
+ 1700, /* GL_TEXTURE15 */
+ 1702, /* GL_TEXTURE16 */
+ 1704, /* GL_TEXTURE17 */
+ 1706, /* GL_TEXTURE18 */
+ 1708, /* GL_TEXTURE19 */
+ 1712, /* GL_TEXTURE20 */
+ 1714, /* GL_TEXTURE21 */
+ 1716, /* GL_TEXTURE22 */
+ 1718, /* GL_TEXTURE23 */
+ 1720, /* GL_TEXTURE24 */
+ 1722, /* GL_TEXTURE25 */
+ 1724, /* GL_TEXTURE26 */
+ 1726, /* GL_TEXTURE27 */
+ 1728, /* GL_TEXTURE28 */
+ 1730, /* GL_TEXTURE29 */
+ 1734, /* GL_TEXTURE30 */
+ 1736, /* GL_TEXTURE31 */
18, /* GL_ACTIVE_TEXTURE */
- 134, /* GL_CLIENT_ACTIVE_TEXTURE */
- 937, /* GL_MAX_TEXTURE_UNITS */
- 1782, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- 1785, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- 1787, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- 1779, /* GL_TRANSPOSE_COLOR_MATRIX */
- 1561, /* GL_SUBTRACT */
- 922, /* GL_MAX_RENDERBUFFER_SIZE */
- 248, /* GL_COMPRESSED_ALPHA */
- 252, /* GL_COMPRESSED_LUMINANCE */
- 253, /* GL_COMPRESSED_LUMINANCE_ALPHA */
- 250, /* GL_COMPRESSED_INTENSITY */
- 256, /* GL_COMPRESSED_RGB */
- 257, /* GL_COMPRESSED_RGBA */
- 1686, /* GL_TEXTURE_COMPRESSION_HINT */
- 1751, /* GL_TEXTURE_RECTANGLE_ARB */
- 1658, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- 1288, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- 920, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
- 373, /* GL_DEPTH_STENCIL */
- 1809, /* GL_UNSIGNED_INT_24_8 */
- 933, /* GL_MAX_TEXTURE_LOD_BIAS */
- 1740, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- 934, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- 1716, /* GL_TEXTURE_FILTER_CONTROL */
- 1731, /* GL_TEXTURE_LOD_BIAS */
- 233, /* GL_COMBINE4 */
- 927, /* GL_MAX_SHININESS_NV */
- 928, /* GL_MAX_SPOT_EXPONENT_NV */
- 630, /* GL_INCR_WRAP */
- 344, /* GL_DECR_WRAP */
- 982, /* GL_MODELVIEW1_ARB */
- 1038, /* GL_NORMAL_MAP */
- 1327, /* GL_REFLECTION_MAP */
- 1695, /* GL_TEXTURE_CUBE_MAP */
- 1656, /* GL_TEXTURE_BINDING_CUBE_MAP */
- 1703, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- 1697, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- 1705, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- 1699, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- 1707, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- 1701, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- 1286, /* GL_PROXY_TEXTURE_CUBE_MAP */
- 876, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
- 1017, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- 528, /* GL_FOG_DISTANCE_MODE_NV */
- 479, /* GL_EYE_RADIAL_NV */
- 478, /* GL_EYE_PLANE_ABSOLUTE_NV */
- 232, /* GL_COMBINE */
- 239, /* GL_COMBINE_RGB */
- 234, /* GL_COMBINE_ALPHA */
- 1398, /* GL_RGB_SCALE */
+ 145, /* GL_CLIENT_ACTIVE_TEXTURE */
+ 1001, /* GL_MAX_TEXTURE_UNITS */
+ 1906, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ 1909, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ 1911, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ 1903, /* GL_TRANSPOSE_COLOR_MATRIX */
+ 1669, /* GL_SUBTRACT */
+ 984, /* GL_MAX_RENDERBUFFER_SIZE */
+ 260, /* GL_COMPRESSED_ALPHA */
+ 264, /* GL_COMPRESSED_LUMINANCE */
+ 265, /* GL_COMPRESSED_LUMINANCE_ALPHA */
+ 262, /* GL_COMPRESSED_INTENSITY */
+ 268, /* GL_COMPRESSED_RGB */
+ 269, /* GL_COMPRESSED_RGBA */
+ 1797, /* GL_TEXTURE_COMPRESSION_HINT */
+ 1874, /* GL_TEXTURE_RECTANGLE_ARB */
+ 1769, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ 1371, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ 982, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */
+ 392, /* GL_DEPTH_STENCIL */
+ 1934, /* GL_UNSIGNED_INT_24_8 */
+ 996, /* GL_MAX_TEXTURE_LOD_BIAS */
+ 1863, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ 998, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
+ 1835, /* GL_TEXTURE_FILTER_CONTROL */
+ 1853, /* GL_TEXTURE_LOD_BIAS */
+ 245, /* GL_COMBINE4 */
+ 990, /* GL_MAX_SHININESS_NV */
+ 991, /* GL_MAX_SPOT_EXPONENT_NV */
+ 677, /* GL_INCR_WRAP */
+ 358, /* GL_DECR_WRAP */
+ 1051, /* GL_MODELVIEW1_ARB */
+ 1109, /* GL_NORMAL_MAP */
+ 1410, /* GL_REFLECTION_MAP */
+ 1807, /* GL_TEXTURE_CUBE_MAP */
+ 1766, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ 1819, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ 1809, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ 1822, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ 1812, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ 1825, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ 1815, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ 1369, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ 935, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
+ 1087, /* GL_MULTISAMPLE_FILTER_HINT_NV */
+ 550, /* GL_FOG_DISTANCE_MODE_NV */
+ 499, /* GL_EYE_RADIAL_NV */
+ 498, /* GL_EYE_PLANE_ABSOLUTE_NV */
+ 244, /* GL_COMBINE */
+ 251, /* GL_COMBINE_RGB */
+ 246, /* GL_COMBINE_ALPHA */
+ 1499, /* GL_RGB_SCALE */
24, /* GL_ADD_SIGNED */
- 659, /* GL_INTERPOLATE */
- 272, /* GL_CONSTANT */
- 1233, /* GL_PRIMARY_COLOR */
- 1230, /* GL_PREVIOUS */
- 1471, /* GL_SOURCE0_RGB */
- 1477, /* GL_SOURCE1_RGB */
- 1483, /* GL_SOURCE2_RGB */
- 1487, /* GL_SOURCE3_RGB_NV */
- 1468, /* GL_SOURCE0_ALPHA */
- 1474, /* GL_SOURCE1_ALPHA */
- 1480, /* GL_SOURCE2_ALPHA */
- 1486, /* GL_SOURCE3_ALPHA_NV */
- 1075, /* GL_OPERAND0_RGB */
- 1081, /* GL_OPERAND1_RGB */
- 1087, /* GL_OPERAND2_RGB */
- 1091, /* GL_OPERAND3_RGB_NV */
- 1072, /* GL_OPERAND0_ALPHA */
- 1078, /* GL_OPERAND1_ALPHA */
- 1084, /* GL_OPERAND2_ALPHA */
- 1090, /* GL_OPERAND3_ALPHA_NV */
- 109, /* GL_BUFFER_OBJECT_APPLE */
- 1834, /* GL_VERTEX_ARRAY_BINDING */
- 1749, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- 1750, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- 1901, /* GL_YCBCR_422_APPLE */
- 1823, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- 1825, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- 1759, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- 1552, /* GL_STORAGE_PRIVATE_APPLE */
- 1551, /* GL_STORAGE_CACHED_APPLE */
- 1553, /* GL_STORAGE_SHARED_APPLE */
- 1458, /* GL_SLICE_ACCUM_SUN */
- 1296, /* GL_QUAD_MESH_SUN */
- 1791, /* GL_TRIANGLE_MESH_SUN */
- 1873, /* GL_VERTEX_PROGRAM_ARB */
- 1884, /* GL_VERTEX_STATE_PROGRAM_NV */
- 1860, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- 1866, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- 1868, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- 1870, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- 335, /* GL_CURRENT_VERTEX_ATTRIB */
- 1247, /* GL_PROGRAM_LENGTH_ARB */
- 1261, /* GL_PROGRAM_STRING_ARB */
- 1004, /* GL_MODELVIEW_PROJECTION_NV */
- 625, /* GL_IDENTITY_NV */
- 673, /* GL_INVERSE_NV */
- 1784, /* GL_TRANSPOSE_NV */
- 674, /* GL_INVERSE_TRANSPOSE_NV */
- 906, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
- 905, /* GL_MAX_PROGRAM_MATRICES_ARB */
- 812, /* GL_MATRIX0_NV */
- 824, /* GL_MATRIX1_NV */
- 836, /* GL_MATRIX2_NV */
- 840, /* GL_MATRIX3_NV */
- 842, /* GL_MATRIX4_NV */
- 844, /* GL_MATRIX5_NV */
- 846, /* GL_MATRIX6_NV */
- 848, /* GL_MATRIX7_NV */
- 319, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
- 316, /* GL_CURRENT_MATRIX_ARB */
- 1876, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- 1879, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- 1259, /* GL_PROGRAM_PARAMETER_NV */
- 1864, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- 1263, /* GL_PROGRAM_TARGET_NV */
- 1260, /* GL_PROGRAM_RESIDENT_NV */
- 1768, /* GL_TRACK_MATRIX_NV */
- 1769, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- 1874, /* GL_VERTEX_PROGRAM_BINDING_NV */
- 1241, /* GL_PROGRAM_ERROR_POSITION_ARB */
- 357, /* GL_DEPTH_CLAMP */
- 1842, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- 1849, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- 1850, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- 1851, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- 1852, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- 1853, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- 1854, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- 1855, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- 1856, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- 1857, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- 1843, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- 1844, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- 1845, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- 1846, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- 1847, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- 1848, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- 760, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
- 767, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
- 768, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
- 769, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
- 770, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
- 771, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
- 772, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
- 773, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
- 774, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
- 775, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
- 761, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
- 762, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
- 763, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
- 764, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
- 765, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
- 766, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
- 787, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
- 794, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
- 795, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
- 796, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
- 797, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
- 798, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
- 799, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- 1240, /* GL_PROGRAM_BINDING_ARB */
- 801, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
- 802, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
- 788, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
- 789, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
- 790, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
- 791, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
- 792, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
- 793, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- 1684, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- 1681, /* GL_TEXTURE_COMPRESSED */
- 1043, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
- 270, /* GL_COMPRESSED_TEXTURE_FORMATS */
- 952, /* GL_MAX_VERTEX_UNITS_ARB */
+ 706, /* GL_INTERPOLATE */
+ 284, /* GL_CONSTANT */
+ 1313, /* GL_PRIMARY_COLOR */
+ 1310, /* GL_PREVIOUS */
+ 1575, /* GL_SOURCE0_RGB */
+ 1581, /* GL_SOURCE1_RGB */
+ 1587, /* GL_SOURCE2_RGB */
+ 1591, /* GL_SOURCE3_RGB_NV */
+ 1572, /* GL_SOURCE0_ALPHA */
+ 1578, /* GL_SOURCE1_ALPHA */
+ 1584, /* GL_SOURCE2_ALPHA */
+ 1590, /* GL_SOURCE3_ALPHA_NV */
+ 1149, /* GL_OPERAND0_RGB */
+ 1155, /* GL_OPERAND1_RGB */
+ 1161, /* GL_OPERAND2_RGB */
+ 1165, /* GL_OPERAND3_RGB_NV */
+ 1146, /* GL_OPERAND0_ALPHA */
+ 1152, /* GL_OPERAND1_ALPHA */
+ 1158, /* GL_OPERAND2_ALPHA */
+ 1164, /* GL_OPERAND3_ALPHA_NV */
+ 120, /* GL_BUFFER_OBJECT_APPLE */
+ 1963, /* GL_VERTEX_ARRAY_BINDING */
+ 1872, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ 1873, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ 2037, /* GL_YCBCR_422_APPLE */
+ 1952, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ 1954, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ 1882, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ 1660, /* GL_STORAGE_PRIVATE_APPLE */
+ 1659, /* GL_STORAGE_CACHED_APPLE */
+ 1661, /* GL_STORAGE_SHARED_APPLE */
+ 1562, /* GL_SLICE_ACCUM_SUN */
+ 1379, /* GL_QUAD_MESH_SUN */
+ 1915, /* GL_TRIANGLE_MESH_SUN */
+ 2002, /* GL_VERTEX_PROGRAM_ARB */
+ 2013, /* GL_VERTEX_STATE_PROGRAM_NV */
+ 1989, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ 1995, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ 1997, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ 1999, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ 349, /* GL_CURRENT_VERTEX_ATTRIB */
+ 1329, /* GL_PROGRAM_LENGTH_ARB */
+ 1343, /* GL_PROGRAM_STRING_ARB */
+ 1074, /* GL_MODELVIEW_PROJECTION_NV */
+ 670, /* GL_IDENTITY_NV */
+ 722, /* GL_INVERSE_NV */
+ 1908, /* GL_TRANSPOSE_NV */
+ 723, /* GL_INVERSE_TRANSPOSE_NV */
+ 968, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
+ 967, /* GL_MAX_PROGRAM_MATRICES_ARB */
+ 863, /* GL_MATRIX0_NV */
+ 875, /* GL_MATRIX1_NV */
+ 887, /* GL_MATRIX2_NV */
+ 891, /* GL_MATRIX3_NV */
+ 893, /* GL_MATRIX4_NV */
+ 895, /* GL_MATRIX5_NV */
+ 897, /* GL_MATRIX6_NV */
+ 899, /* GL_MATRIX7_NV */
+ 332, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
+ 329, /* GL_CURRENT_MATRIX_ARB */
+ 2005, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ 2008, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ 1341, /* GL_PROGRAM_PARAMETER_NV */
+ 1993, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ 1345, /* GL_PROGRAM_TARGET_NV */
+ 1342, /* GL_PROGRAM_RESIDENT_NV */
+ 1892, /* GL_TRACK_MATRIX_NV */
+ 1893, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ 2003, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ 1323, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ 373, /* GL_DEPTH_CLAMP */
+ 1971, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ 1978, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ 1979, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ 1980, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ 1981, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ 1982, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ 1983, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ 1984, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ 1985, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ 1986, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ 1972, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ 1973, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ 1974, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ 1975, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ 1976, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ 1977, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ 811, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
+ 818, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
+ 819, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
+ 820, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */
+ 821, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */
+ 822, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */
+ 823, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */
+ 824, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */
+ 825, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */
+ 826, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */
+ 812, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */
+ 813, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */
+ 814, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */
+ 815, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */
+ 816, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */
+ 817, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */
+ 838, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */
+ 845, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */
+ 846, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */
+ 847, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */
+ 848, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
+ 849, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
+ 850, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
+ 1322, /* GL_PROGRAM_BINDING_ARB */
+ 852, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
+ 853, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
+ 839, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
+ 840, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */
+ 841, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */
+ 842, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
+ 843, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
+ 844, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
+ 1795, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ 1792, /* GL_TEXTURE_COMPRESSED */
+ 1115, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
+ 282, /* GL_COMPRESSED_TEXTURE_FORMATS */
+ 1018, /* GL_MAX_VERTEX_UNITS_ARB */
22, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- 1896, /* GL_WEIGHT_SUM_UNITY_ARB */
- 1872, /* GL_VERTEX_BLEND_ARB */
- 337, /* GL_CURRENT_WEIGHT_ARB */
- 1895, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- 1894, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- 1893, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- 1892, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- 1889, /* GL_WEIGHT_ARRAY_ARB */
- 387, /* GL_DOT3_RGB */
- 388, /* GL_DOT3_RGBA */
- 264, /* GL_COMPRESSED_RGB_FXT1_3DFX */
- 259, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
- 1012, /* GL_MULTISAMPLE_3DFX */
- 1419, /* GL_SAMPLE_BUFFERS_3DFX */
- 1410, /* GL_SAMPLES_3DFX */
- 993, /* GL_MODELVIEW2_ARB */
- 996, /* GL_MODELVIEW3_ARB */
- 997, /* GL_MODELVIEW4_ARB */
- 998, /* GL_MODELVIEW5_ARB */
- 999, /* GL_MODELVIEW6_ARB */
- 1000, /* GL_MODELVIEW7_ARB */
- 1001, /* GL_MODELVIEW8_ARB */
- 1002, /* GL_MODELVIEW9_ARB */
- 972, /* GL_MODELVIEW10_ARB */
- 973, /* GL_MODELVIEW11_ARB */
- 974, /* GL_MODELVIEW12_ARB */
- 975, /* GL_MODELVIEW13_ARB */
- 976, /* GL_MODELVIEW14_ARB */
- 977, /* GL_MODELVIEW15_ARB */
- 978, /* GL_MODELVIEW16_ARB */
- 979, /* GL_MODELVIEW17_ARB */
- 980, /* GL_MODELVIEW18_ARB */
- 981, /* GL_MODELVIEW19_ARB */
- 983, /* GL_MODELVIEW20_ARB */
- 984, /* GL_MODELVIEW21_ARB */
- 985, /* GL_MODELVIEW22_ARB */
- 986, /* GL_MODELVIEW23_ARB */
- 987, /* GL_MODELVIEW24_ARB */
- 988, /* GL_MODELVIEW25_ARB */
- 989, /* GL_MODELVIEW26_ARB */
- 990, /* GL_MODELVIEW27_ARB */
- 991, /* GL_MODELVIEW28_ARB */
- 992, /* GL_MODELVIEW29_ARB */
- 994, /* GL_MODELVIEW30_ARB */
- 995, /* GL_MODELVIEW31_ARB */
- 392, /* GL_DOT3_RGB_EXT */
- 390, /* GL_DOT3_RGBA_EXT */
- 966, /* GL_MIRROR_CLAMP_EXT */
- 969, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
- 1007, /* GL_MODULATE_ADD_ATI */
- 1008, /* GL_MODULATE_SIGNED_ADD_ATI */
- 1009, /* GL_MODULATE_SUBTRACT_ATI */
- 1902, /* GL_YCBCR_MESA */
- 1099, /* GL_PACK_INVERT_MESA */
- 340, /* GL_DEBUG_OBJECT_MESA */
- 341, /* GL_DEBUG_PRINT_MESA */
- 339, /* GL_DEBUG_ASSERT_MESA */
- 111, /* GL_BUFFER_SIZE */
- 113, /* GL_BUFFER_USAGE */
- 117, /* GL_BUMP_ROT_MATRIX_ATI */
- 118, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
- 116, /* GL_BUMP_NUM_TEX_UNITS_ATI */
- 120, /* GL_BUMP_TEX_UNITS_ATI */
- 452, /* GL_DUDV_ATI */
- 451, /* GL_DU8DV8_ATI */
- 115, /* GL_BUMP_ENVMAP_ATI */
- 119, /* GL_BUMP_TARGET_ATI */
- 1519, /* GL_STENCIL_BACK_FUNC */
- 1517, /* GL_STENCIL_BACK_FAIL */
- 1521, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- 1523, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- 537, /* GL_FRAGMENT_PROGRAM_ARB */
- 1238, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1266, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1265, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1250, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1256, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1255, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 895, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 918, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 917, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
- 908, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 914, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 913, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 878, /* GL_MAX_DRAW_BUFFERS */
- 396, /* GL_DRAW_BUFFER0 */
- 399, /* GL_DRAW_BUFFER1 */
- 420, /* GL_DRAW_BUFFER2 */
- 423, /* GL_DRAW_BUFFER3 */
- 426, /* GL_DRAW_BUFFER4 */
- 429, /* GL_DRAW_BUFFER5 */
- 432, /* GL_DRAW_BUFFER6 */
- 435, /* GL_DRAW_BUFFER7 */
- 438, /* GL_DRAW_BUFFER8 */
- 441, /* GL_DRAW_BUFFER9 */
- 400, /* GL_DRAW_BUFFER10 */
- 403, /* GL_DRAW_BUFFER11 */
- 406, /* GL_DRAW_BUFFER12 */
- 409, /* GL_DRAW_BUFFER13 */
- 412, /* GL_DRAW_BUFFER14 */
- 415, /* GL_DRAW_BUFFER15 */
- 82, /* GL_BLEND_EQUATION_ALPHA */
- 857, /* GL_MATRIX_PALETTE_ARB */
- 889, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
- 892, /* GL_MAX_PALETTE_MATRICES_ARB */
- 322, /* GL_CURRENT_PALETTE_MATRIX_ARB */
- 851, /* GL_MATRIX_INDEX_ARRAY_ARB */
- 317, /* GL_CURRENT_MATRIX_INDEX_ARB */
- 853, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
- 855, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
- 854, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
- 852, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- 1711, /* GL_TEXTURE_DEPTH_SIZE */
- 380, /* GL_DEPTH_TEXTURE_MODE */
- 1676, /* GL_TEXTURE_COMPARE_MODE */
- 1674, /* GL_TEXTURE_COMPARE_FUNC */
- 243, /* GL_COMPARE_R_TO_TEXTURE */
- 1171, /* GL_POINT_SPRITE */
- 297, /* GL_COORD_REPLACE */
- 1175, /* GL_POINT_SPRITE_R_MODE_NV */
- 1300, /* GL_QUERY_COUNTER_BITS */
- 324, /* GL_CURRENT_QUERY */
- 1303, /* GL_QUERY_RESULT */
- 1305, /* GL_QUERY_RESULT_AVAILABLE */
- 946, /* GL_MAX_VERTEX_ATTRIBS */
- 1862, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- 378, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
- 377, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
- 929, /* GL_MAX_TEXTURE_COORDS */
- 931, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- 1243, /* GL_PROGRAM_ERROR_STRING_ARB */
- 1245, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- 1244, /* GL_PROGRAM_FORMAT_ARB */
- 1761, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- 355, /* GL_DEPTH_BOUNDS_TEST_EXT */
- 354, /* GL_DEPTH_BOUNDS_EXT */
+ 2031, /* GL_WEIGHT_SUM_UNITY_ARB */
+ 2001, /* GL_VERTEX_BLEND_ARB */
+ 351, /* GL_CURRENT_WEIGHT_ARB */
+ 2029, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ 2027, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ 2025, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ 2023, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ 2018, /* GL_WEIGHT_ARRAY_ARB */
+ 407, /* GL_DOT3_RGB */
+ 408, /* GL_DOT3_RGBA */
+ 276, /* GL_COMPRESSED_RGB_FXT1_3DFX */
+ 271, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
+ 1082, /* GL_MULTISAMPLE_3DFX */
+ 1521, /* GL_SAMPLE_BUFFERS_3DFX */
+ 1512, /* GL_SAMPLES_3DFX */
+ 1062, /* GL_MODELVIEW2_ARB */
+ 1065, /* GL_MODELVIEW3_ARB */
+ 1066, /* GL_MODELVIEW4_ARB */
+ 1067, /* GL_MODELVIEW5_ARB */
+ 1068, /* GL_MODELVIEW6_ARB */
+ 1069, /* GL_MODELVIEW7_ARB */
+ 1070, /* GL_MODELVIEW8_ARB */
+ 1071, /* GL_MODELVIEW9_ARB */
+ 1041, /* GL_MODELVIEW10_ARB */
+ 1042, /* GL_MODELVIEW11_ARB */
+ 1043, /* GL_MODELVIEW12_ARB */
+ 1044, /* GL_MODELVIEW13_ARB */
+ 1045, /* GL_MODELVIEW14_ARB */
+ 1046, /* GL_MODELVIEW15_ARB */
+ 1047, /* GL_MODELVIEW16_ARB */
+ 1048, /* GL_MODELVIEW17_ARB */
+ 1049, /* GL_MODELVIEW18_ARB */
+ 1050, /* GL_MODELVIEW19_ARB */
+ 1052, /* GL_MODELVIEW20_ARB */
+ 1053, /* GL_MODELVIEW21_ARB */
+ 1054, /* GL_MODELVIEW22_ARB */
+ 1055, /* GL_MODELVIEW23_ARB */
+ 1056, /* GL_MODELVIEW24_ARB */
+ 1057, /* GL_MODELVIEW25_ARB */
+ 1058, /* GL_MODELVIEW26_ARB */
+ 1059, /* GL_MODELVIEW27_ARB */
+ 1060, /* GL_MODELVIEW28_ARB */
+ 1061, /* GL_MODELVIEW29_ARB */
+ 1063, /* GL_MODELVIEW30_ARB */
+ 1064, /* GL_MODELVIEW31_ARB */
+ 412, /* GL_DOT3_RGB_EXT */
+ 410, /* GL_DOT3_RGBA_EXT */
+ 1035, /* GL_MIRROR_CLAMP_EXT */
+ 1038, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
+ 1077, /* GL_MODULATE_ADD_ATI */
+ 1078, /* GL_MODULATE_SIGNED_ADD_ATI */
+ 1079, /* GL_MODULATE_SUBTRACT_ATI */
+ 2038, /* GL_YCBCR_MESA */
+ 1173, /* GL_PACK_INVERT_MESA */
+ 354, /* GL_DEBUG_OBJECT_MESA */
+ 355, /* GL_DEBUG_PRINT_MESA */
+ 353, /* GL_DEBUG_ASSERT_MESA */
+ 122, /* GL_BUFFER_SIZE */
+ 124, /* GL_BUFFER_USAGE */
+ 128, /* GL_BUMP_ROT_MATRIX_ATI */
+ 129, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */
+ 127, /* GL_BUMP_NUM_TEX_UNITS_ATI */
+ 131, /* GL_BUMP_TEX_UNITS_ATI */
+ 472, /* GL_DUDV_ATI */
+ 471, /* GL_DU8DV8_ATI */
+ 126, /* GL_BUMP_ENVMAP_ATI */
+ 130, /* GL_BUMP_TARGET_ATI */
+ 1117, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ 1320, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ 1624, /* GL_STENCIL_BACK_FUNC */
+ 1622, /* GL_STENCIL_BACK_FAIL */
+ 1626, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ 1628, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ 559, /* GL_FRAGMENT_PROGRAM_ARB */
+ 1318, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1348, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1347, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1332, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1338, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1337, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 957, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 980, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 979, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 970, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 976, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 975, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 938, /* GL_MAX_DRAW_BUFFERS */
+ 416, /* GL_DRAW_BUFFER0 */
+ 419, /* GL_DRAW_BUFFER1 */
+ 440, /* GL_DRAW_BUFFER2 */
+ 443, /* GL_DRAW_BUFFER3 */
+ 446, /* GL_DRAW_BUFFER4 */
+ 449, /* GL_DRAW_BUFFER5 */
+ 452, /* GL_DRAW_BUFFER6 */
+ 455, /* GL_DRAW_BUFFER7 */
+ 458, /* GL_DRAW_BUFFER8 */
+ 461, /* GL_DRAW_BUFFER9 */
+ 420, /* GL_DRAW_BUFFER10 */
+ 423, /* GL_DRAW_BUFFER11 */
+ 426, /* GL_DRAW_BUFFER12 */
+ 429, /* GL_DRAW_BUFFER13 */
+ 432, /* GL_DRAW_BUFFER14 */
+ 435, /* GL_DRAW_BUFFER15 */
+ 85, /* GL_BLEND_EQUATION_ALPHA */
+ 914, /* GL_MATRIX_PALETTE_ARB */
+ 950, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */
+ 953, /* GL_MAX_PALETTE_MATRICES_ARB */
+ 335, /* GL_CURRENT_PALETTE_MATRIX_ARB */
+ 902, /* GL_MATRIX_INDEX_ARRAY_ARB */
+ 330, /* GL_CURRENT_MATRIX_INDEX_ARB */
+ 907, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */
+ 911, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
+ 909, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
+ 905, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
+ 1830, /* GL_TEXTURE_DEPTH_SIZE */
+ 400, /* GL_DEPTH_TEXTURE_MODE */
+ 1787, /* GL_TEXTURE_COMPARE_MODE */
+ 1785, /* GL_TEXTURE_COMPARE_FUNC */
+ 255, /* GL_COMPARE_R_TO_TEXTURE */
+ 1250, /* GL_POINT_SPRITE */
+ 309, /* GL_COORD_REPLACE */
+ 1255, /* GL_POINT_SPRITE_R_MODE_NV */
+ 1383, /* GL_QUERY_COUNTER_BITS */
+ 338, /* GL_CURRENT_QUERY */
+ 1386, /* GL_QUERY_RESULT */
+ 1388, /* GL_QUERY_RESULT_AVAILABLE */
+ 1011, /* GL_MAX_VERTEX_ATTRIBS */
+ 1991, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ 398, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
+ 397, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
+ 992, /* GL_MAX_TEXTURE_COORDS */
+ 994, /* GL_MAX_TEXTURE_IMAGE_UNITS */
+ 1325, /* GL_PROGRAM_ERROR_STRING_ARB */
+ 1327, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ 1326, /* GL_PROGRAM_FORMAT_ARB */
+ 1884, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ 371, /* GL_DEPTH_BOUNDS_TEST_EXT */
+ 370, /* GL_DEPTH_BOUNDS_EXT */
53, /* GL_ARRAY_BUFFER */
- 465, /* GL_ELEMENT_ARRAY_BUFFER */
+ 485, /* GL_ELEMENT_ARRAY_BUFFER */
54, /* GL_ARRAY_BUFFER_BINDING */
- 466, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- 1836, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- 1033, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
- 150, /* GL_COLOR_ARRAY_BUFFER_BINDING */
- 634, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- 1689, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- 461, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- 1431, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- 515, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- 1890, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- 1858, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- 1246, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- 901, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- 1252, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 910, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1264, /* GL_PROGRAM_TEMPORARIES_ARB */
- 916, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- 1254, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 912, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1258, /* GL_PROGRAM_PARAMETERS_ARB */
- 915, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- 1253, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- 911, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1239, /* GL_PROGRAM_ATTRIBS_ARB */
- 896, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- 1251, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- 909, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1237, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- 894, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1249, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 907, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- 902, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
- 898, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- 1267, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- 1781, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- 1317, /* GL_READ_ONLY */
- 1898, /* GL_WRITE_ONLY */
- 1319, /* GL_READ_WRITE */
- 102, /* GL_BUFFER_ACCESS */
- 105, /* GL_BUFFER_MAPPED */
- 107, /* GL_BUFFER_MAP_POINTER */
- 1767, /* GL_TIME_ELAPSED_EXT */
- 811, /* GL_MATRIX0_ARB */
- 823, /* GL_MATRIX1_ARB */
- 835, /* GL_MATRIX2_ARB */
- 839, /* GL_MATRIX3_ARB */
- 841, /* GL_MATRIX4_ARB */
- 843, /* GL_MATRIX5_ARB */
- 845, /* GL_MATRIX6_ARB */
- 847, /* GL_MATRIX7_ARB */
- 849, /* GL_MATRIX8_ARB */
- 850, /* GL_MATRIX9_ARB */
- 813, /* GL_MATRIX10_ARB */
- 814, /* GL_MATRIX11_ARB */
- 815, /* GL_MATRIX12_ARB */
- 816, /* GL_MATRIX13_ARB */
- 817, /* GL_MATRIX14_ARB */
- 818, /* GL_MATRIX15_ARB */
- 819, /* GL_MATRIX16_ARB */
- 820, /* GL_MATRIX17_ARB */
- 821, /* GL_MATRIX18_ARB */
- 822, /* GL_MATRIX19_ARB */
- 825, /* GL_MATRIX20_ARB */
- 826, /* GL_MATRIX21_ARB */
- 827, /* GL_MATRIX22_ARB */
- 828, /* GL_MATRIX23_ARB */
- 829, /* GL_MATRIX24_ARB */
- 830, /* GL_MATRIX25_ARB */
- 831, /* GL_MATRIX26_ARB */
- 832, /* GL_MATRIX27_ARB */
- 833, /* GL_MATRIX28_ARB */
- 834, /* GL_MATRIX29_ARB */
- 837, /* GL_MATRIX30_ARB */
- 838, /* GL_MATRIX31_ARB */
- 1556, /* GL_STREAM_DRAW */
- 1558, /* GL_STREAM_READ */
- 1554, /* GL_STREAM_COPY */
- 1510, /* GL_STATIC_DRAW */
- 1512, /* GL_STATIC_READ */
- 1508, /* GL_STATIC_COPY */
- 455, /* GL_DYNAMIC_DRAW */
- 457, /* GL_DYNAMIC_READ */
- 453, /* GL_DYNAMIC_COPY */
- 1139, /* GL_PIXEL_PACK_BUFFER */
- 1143, /* GL_PIXEL_UNPACK_BUFFER */
- 1140, /* GL_PIXEL_PACK_BUFFER_BINDING */
- 1144, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- 348, /* GL_DEPTH24_STENCIL8 */
- 1757, /* GL_TEXTURE_STENCIL_SIZE */
- 1709, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- 897, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
- 900, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
- 904, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
- 903, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- 860, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
- 1547, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ 486, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
+ 1965, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ 1104, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
+ 161, /* GL_COLOR_ARRAY_BUFFER_BINDING */
+ 681, /* GL_INDEX_ARRAY_BUFFER_BINDING */
+ 1800, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ 481, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
+ 1533, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ 537, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
+ 2019, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ 1987, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ 1328, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ 963, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
+ 1334, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 972, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1346, /* GL_PROGRAM_TEMPORARIES_ARB */
+ 978, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
+ 1336, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 974, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1340, /* GL_PROGRAM_PARAMETERS_ARB */
+ 977, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
+ 1335, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 973, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1319, /* GL_PROGRAM_ATTRIBS_ARB */
+ 958, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
+ 1333, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 971, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1317, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 956, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1331, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 969, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 964, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
+ 960, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
+ 1349, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ 1905, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ 1400, /* GL_READ_ONLY */
+ 2033, /* GL_WRITE_ONLY */
+ 1402, /* GL_READ_WRITE */
+ 110, /* GL_BUFFER_ACCESS */
+ 114, /* GL_BUFFER_MAPPED */
+ 117, /* GL_BUFFER_MAP_POINTER */
+ 1891, /* GL_TIME_ELAPSED_EXT */
+ 862, /* GL_MATRIX0_ARB */
+ 874, /* GL_MATRIX1_ARB */
+ 886, /* GL_MATRIX2_ARB */
+ 890, /* GL_MATRIX3_ARB */
+ 892, /* GL_MATRIX4_ARB */
+ 894, /* GL_MATRIX5_ARB */
+ 896, /* GL_MATRIX6_ARB */
+ 898, /* GL_MATRIX7_ARB */
+ 900, /* GL_MATRIX8_ARB */
+ 901, /* GL_MATRIX9_ARB */
+ 864, /* GL_MATRIX10_ARB */
+ 865, /* GL_MATRIX11_ARB */
+ 866, /* GL_MATRIX12_ARB */
+ 867, /* GL_MATRIX13_ARB */
+ 868, /* GL_MATRIX14_ARB */
+ 869, /* GL_MATRIX15_ARB */
+ 870, /* GL_MATRIX16_ARB */
+ 871, /* GL_MATRIX17_ARB */
+ 872, /* GL_MATRIX18_ARB */
+ 873, /* GL_MATRIX19_ARB */
+ 876, /* GL_MATRIX20_ARB */
+ 877, /* GL_MATRIX21_ARB */
+ 878, /* GL_MATRIX22_ARB */
+ 879, /* GL_MATRIX23_ARB */
+ 880, /* GL_MATRIX24_ARB */
+ 881, /* GL_MATRIX25_ARB */
+ 882, /* GL_MATRIX26_ARB */
+ 883, /* GL_MATRIX27_ARB */
+ 884, /* GL_MATRIX28_ARB */
+ 885, /* GL_MATRIX29_ARB */
+ 888, /* GL_MATRIX30_ARB */
+ 889, /* GL_MATRIX31_ARB */
+ 1664, /* GL_STREAM_DRAW */
+ 1666, /* GL_STREAM_READ */
+ 1662, /* GL_STREAM_COPY */
+ 1614, /* GL_STATIC_DRAW */
+ 1616, /* GL_STATIC_READ */
+ 1612, /* GL_STATIC_COPY */
+ 475, /* GL_DYNAMIC_DRAW */
+ 477, /* GL_DYNAMIC_READ */
+ 473, /* GL_DYNAMIC_COPY */
+ 1213, /* GL_PIXEL_PACK_BUFFER */
+ 1217, /* GL_PIXEL_UNPACK_BUFFER */
+ 1214, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ 1218, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ 362, /* GL_DEPTH24_STENCIL8 */
+ 1880, /* GL_TEXTURE_STENCIL_SIZE */
+ 1828, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ 959, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
+ 962, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
+ 966, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
+ 965, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
+ 919, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */
+ 1655, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
17, /* GL_ACTIVE_STENCIL_FACE_EXT */
- 967, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- 1412, /* GL_SAMPLES_PASSED */
- 110, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
- 104, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- 1330, /* GL_RELEASED_APPLE */
- 1887, /* GL_VOLATILE_APPLE */
- 1358, /* GL_RETAINED_APPLE */
- 1794, /* GL_UNDEFINED_APPLE */
- 1290, /* GL_PURGEABLE_APPLE */
- 538, /* GL_FRAGMENT_SHADER */
- 1882, /* GL_VERTEX_SHADER */
- 1257, /* GL_PROGRAM_OBJECT_ARB */
- 1445, /* GL_SHADER_OBJECT_ARB */
- 885, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
- 950, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
- 944, /* GL_MAX_VARYING_FLOATS */
- 948, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
- 870, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- 1059, /* GL_OBJECT_TYPE_ARB */
- 1447, /* GL_SHADER_TYPE */
- 503, /* GL_FLOAT_VEC2 */
- 505, /* GL_FLOAT_VEC3 */
- 507, /* GL_FLOAT_VEC4 */
- 662, /* GL_INT_VEC2 */
- 664, /* GL_INT_VEC3 */
- 666, /* GL_INT_VEC4 */
- 94, /* GL_BOOL */
- 96, /* GL_BOOL_VEC2 */
- 98, /* GL_BOOL_VEC3 */
- 100, /* GL_BOOL_VEC4 */
- 491, /* GL_FLOAT_MAT2 */
- 495, /* GL_FLOAT_MAT3 */
- 499, /* GL_FLOAT_MAT4 */
- 1403, /* GL_SAMPLER_1D */
- 1405, /* GL_SAMPLER_2D */
- 1407, /* GL_SAMPLER_3D */
- 1408, /* GL_SAMPLER_CUBE */
- 1404, /* GL_SAMPLER_1D_SHADOW */
- 1406, /* GL_SAMPLER_2D_SHADOW */
- 493, /* GL_FLOAT_MAT2x3 */
- 494, /* GL_FLOAT_MAT2x4 */
- 497, /* GL_FLOAT_MAT3x2 */
- 498, /* GL_FLOAT_MAT3x4 */
- 501, /* GL_FLOAT_MAT4x2 */
- 502, /* GL_FLOAT_MAT4x3 */
- 346, /* GL_DELETE_STATUS */
- 247, /* GL_COMPILE_STATUS */
- 718, /* GL_LINK_STATUS */
- 1830, /* GL_VALIDATE_STATUS */
- 646, /* GL_INFO_LOG_LENGTH */
+ 1036, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
+ 1514, /* GL_SAMPLES_PASSED */
+ 1237, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ 1236, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ 1235, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ 1073, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1352, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1862, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 121, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
+ 113, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
+ 1414, /* GL_RELEASED_APPLE */
+ 2016, /* GL_VOLATILE_APPLE */
+ 1453, /* GL_RETAINED_APPLE */
+ 1918, /* GL_UNDEFINED_APPLE */
+ 1373, /* GL_PURGEABLE_APPLE */
+ 560, /* GL_FRAGMENT_SHADER */
+ 2011, /* GL_VERTEX_SHADER */
+ 1339, /* GL_PROGRAM_OBJECT_ARB */
+ 1549, /* GL_SHADER_OBJECT_ARB */
+ 945, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
+ 1015, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
+ 1008, /* GL_MAX_VARYING_FLOATS */
+ 1013, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
+ 929, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
+ 1133, /* GL_OBJECT_TYPE_ARB */
+ 1551, /* GL_SHADER_TYPE */
+ 525, /* GL_FLOAT_VEC2 */
+ 527, /* GL_FLOAT_VEC3 */
+ 529, /* GL_FLOAT_VEC4 */
+ 710, /* GL_INT_VEC2 */
+ 712, /* GL_INT_VEC3 */
+ 714, /* GL_INT_VEC4 */
+ 102, /* GL_BOOL */
+ 104, /* GL_BOOL_VEC2 */
+ 106, /* GL_BOOL_VEC3 */
+ 108, /* GL_BOOL_VEC4 */
+ 513, /* GL_FLOAT_MAT2 */
+ 517, /* GL_FLOAT_MAT3 */
+ 521, /* GL_FLOAT_MAT4 */
+ 1504, /* GL_SAMPLER_1D */
+ 1506, /* GL_SAMPLER_2D */
+ 1508, /* GL_SAMPLER_3D */
+ 1510, /* GL_SAMPLER_CUBE */
+ 1505, /* GL_SAMPLER_1D_SHADOW */
+ 1507, /* GL_SAMPLER_2D_SHADOW */
+ 515, /* GL_FLOAT_MAT2x3 */
+ 516, /* GL_FLOAT_MAT2x4 */
+ 519, /* GL_FLOAT_MAT3x2 */
+ 520, /* GL_FLOAT_MAT3x4 */
+ 523, /* GL_FLOAT_MAT4x2 */
+ 524, /* GL_FLOAT_MAT4x3 */
+ 360, /* GL_DELETE_STATUS */
+ 259, /* GL_COMPILE_STATUS */
+ 767, /* GL_LINK_STATUS */
+ 1959, /* GL_VALIDATE_STATUS */
+ 693, /* GL_INFO_LOG_LENGTH */
56, /* GL_ATTACHED_SHADERS */
20, /* GL_ACTIVE_UNIFORMS */
21, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- 1446, /* GL_SHADER_SOURCE_LENGTH */
+ 1550, /* GL_SHADER_SOURCE_LENGTH */
15, /* GL_ACTIVE_ATTRIBUTES */
16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
- 540, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- 1449, /* GL_SHADING_LANGUAGE_VERSION */
- 323, /* GL_CURRENT_PROGRAM */
- 1108, /* GL_PALETTE4_RGB8_OES */
- 1110, /* GL_PALETTE4_RGBA8_OES */
- 1106, /* GL_PALETTE4_R5_G6_B5_OES */
- 1109, /* GL_PALETTE4_RGBA4_OES */
- 1107, /* GL_PALETTE4_RGB5_A1_OES */
- 1113, /* GL_PALETTE8_RGB8_OES */
- 1115, /* GL_PALETTE8_RGBA8_OES */
- 1111, /* GL_PALETTE8_R5_G6_B5_OES */
- 1114, /* GL_PALETTE8_RGBA4_OES */
- 1112, /* GL_PALETTE8_RGB5_A1_OES */
- 628, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
- 627, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
- 1815, /* GL_UNSIGNED_NORMALIZED */
- 1644, /* GL_TEXTURE_1D_ARRAY_EXT */
- 1279, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- 1646, /* GL_TEXTURE_2D_ARRAY_EXT */
- 1282, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- 1652, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- 1654, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- 1502, /* GL_SRGB */
- 1503, /* GL_SRGB8 */
- 1505, /* GL_SRGB_ALPHA */
- 1504, /* GL_SRGB8_ALPHA8 */
- 1462, /* GL_SLUMINANCE_ALPHA */
- 1461, /* GL_SLUMINANCE8_ALPHA8 */
- 1459, /* GL_SLUMINANCE */
- 1460, /* GL_SLUMINANCE8 */
- 268, /* GL_COMPRESSED_SRGB */
- 269, /* GL_COMPRESSED_SRGB_ALPHA */
- 266, /* GL_COMPRESSED_SLUMINANCE */
- 267, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- 1778, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- 1773, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- 943, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
- 1777, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- 1775, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- 1774, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- 1236, /* GL_PRIMITIVES_GENERATED_EXT */
- 1776, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- 1310, /* GL_RASTERIZER_DISCARD_EXT */
- 941, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
- 942, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
- 658, /* GL_INTERLEAVED_ATTRIBS_EXT */
- 1441, /* GL_SEPARATE_ATTRIBS_EXT */
- 1772, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- 1771, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- 1173, /* GL_POINT_SPRITE_COORD_ORIGIN */
- 726, /* GL_LOWER_LEFT */
- 1827, /* GL_UPPER_LEFT */
- 1525, /* GL_STENCIL_BACK_REF */
- 1526, /* GL_STENCIL_BACK_VALUE_MASK */
- 1527, /* GL_STENCIL_BACK_WRITEMASK */
- 445, /* GL_DRAW_FRAMEBUFFER_BINDING */
- 1334, /* GL_RENDERBUFFER_BINDING */
- 1313, /* GL_READ_FRAMEBUFFER */
- 444, /* GL_DRAW_FRAMEBUFFER */
- 1314, /* GL_READ_FRAMEBUFFER_BINDING */
- 1345, /* GL_RENDERBUFFER_SAMPLES */
- 550, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
- 548, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
- 559, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
- 555, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
- 557, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
- 563, /* GL_FRAMEBUFFER_COMPLETE */
- 567, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
- 574, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
- 572, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
- 569, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
- 573, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
- 570, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
- 578, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
- 582, /* GL_FRAMEBUFFER_UNSUPPORTED */
- 580, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
- 866, /* GL_MAX_COLOR_ATTACHMENTS */
- 156, /* GL_COLOR_ATTACHMENT0 */
- 158, /* GL_COLOR_ATTACHMENT1 */
- 172, /* GL_COLOR_ATTACHMENT2 */
- 174, /* GL_COLOR_ATTACHMENT3 */
- 176, /* GL_COLOR_ATTACHMENT4 */
- 178, /* GL_COLOR_ATTACHMENT5 */
- 180, /* GL_COLOR_ATTACHMENT6 */
- 182, /* GL_COLOR_ATTACHMENT7 */
- 184, /* GL_COLOR_ATTACHMENT8 */
- 186, /* GL_COLOR_ATTACHMENT9 */
- 159, /* GL_COLOR_ATTACHMENT10 */
- 161, /* GL_COLOR_ATTACHMENT11 */
- 163, /* GL_COLOR_ATTACHMENT12 */
- 165, /* GL_COLOR_ATTACHMENT13 */
- 167, /* GL_COLOR_ATTACHMENT14 */
- 169, /* GL_COLOR_ATTACHMENT15 */
- 350, /* GL_DEPTH_ATTACHMENT */
- 1515, /* GL_STENCIL_ATTACHMENT */
- 541, /* GL_FRAMEBUFFER */
- 1332, /* GL_RENDERBUFFER */
- 1348, /* GL_RENDERBUFFER_WIDTH */
- 1340, /* GL_RENDERBUFFER_HEIGHT */
- 1342, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- 1542, /* GL_STENCIL_INDEX_EXT */
- 1534, /* GL_STENCIL_INDEX1 */
- 1538, /* GL_STENCIL_INDEX4 */
- 1540, /* GL_STENCIL_INDEX8 */
- 1535, /* GL_STENCIL_INDEX16 */
- 1344, /* GL_RENDERBUFFER_RED_SIZE */
- 1339, /* GL_RENDERBUFFER_GREEN_SIZE */
- 1336, /* GL_RENDERBUFFER_BLUE_SIZE */
- 1333, /* GL_RENDERBUFFER_ALPHA_SIZE */
- 1337, /* GL_RENDERBUFFER_DEPTH_SIZE */
- 1347, /* GL_RENDERBUFFER_STENCIL_SIZE */
- 576, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
- 924, /* GL_MAX_SAMPLES */
- 1307, /* GL_QUERY_WAIT_NV */
- 1302, /* GL_QUERY_NO_WAIT_NV */
- 1299, /* GL_QUERY_BY_REGION_WAIT_NV */
- 1298, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- 1294, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- 487, /* GL_FIRST_VERTEX_CONVENTION */
- 677, /* GL_LAST_VERTEX_CONVENTION */
- 1271, /* GL_PROVOKING_VERTEX */
- 303, /* GL_COPY_READ_BUFFER */
- 304, /* GL_COPY_WRITE_BUFFER */
- 1396, /* GL_RGBA_SNORM */
- 1392, /* GL_RGBA8_SNORM */
- 1455, /* GL_SIGNED_NORMALIZED */
- 926, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- 1058, /* GL_OBJECT_TYPE */
- 1563, /* GL_SYNC_CONDITION */
- 1568, /* GL_SYNC_STATUS */
- 1565, /* GL_SYNC_FLAGS */
- 1564, /* GL_SYNC_FENCE */
- 1567, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- 1803, /* GL_UNSIGNALED */
- 1454, /* GL_SIGNALED */
+ 562, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
+ 1553, /* GL_SHADING_LANGUAGE_VERSION */
+ 337, /* GL_CURRENT_PROGRAM */
+ 1182, /* GL_PALETTE4_RGB8_OES */
+ 1184, /* GL_PALETTE4_RGBA8_OES */
+ 1180, /* GL_PALETTE4_R5_G6_B5_OES */
+ 1183, /* GL_PALETTE4_RGBA4_OES */
+ 1181, /* GL_PALETTE4_RGB5_A1_OES */
+ 1187, /* GL_PALETTE8_RGB8_OES */
+ 1189, /* GL_PALETTE8_RGBA8_OES */
+ 1185, /* GL_PALETTE8_R5_G6_B5_OES */
+ 1188, /* GL_PALETTE8_RGBA4_OES */
+ 1186, /* GL_PALETTE8_RGB5_A1_OES */
+ 675, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */
+ 673, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */
+ 1234, /* GL_POINT_SIZE_ARRAY_OES */
+ 1806, /* GL_TEXTURE_CROP_RECT_OES */
+ 903, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
+ 1233, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ 1942, /* GL_UNSIGNED_NORMALIZED */
+ 1752, /* GL_TEXTURE_1D_ARRAY_EXT */
+ 1362, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ 1754, /* GL_TEXTURE_2D_ARRAY_EXT */
+ 1365, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ 1761, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ 1763, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ 1606, /* GL_SRGB */
+ 1607, /* GL_SRGB8 */
+ 1609, /* GL_SRGB_ALPHA */
+ 1608, /* GL_SRGB8_ALPHA8 */
+ 1566, /* GL_SLUMINANCE_ALPHA */
+ 1565, /* GL_SLUMINANCE8_ALPHA8 */
+ 1563, /* GL_SLUMINANCE */
+ 1564, /* GL_SLUMINANCE8 */
+ 280, /* GL_COMPRESSED_SRGB */
+ 281, /* GL_COMPRESSED_SRGB_ALPHA */
+ 278, /* GL_COMPRESSED_SLUMINANCE */
+ 279, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
+ 1902, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ 1897, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ 1007, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */
+ 1901, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ 1899, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ 1898, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ 1316, /* GL_PRIMITIVES_GENERATED_EXT */
+ 1900, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ 1393, /* GL_RASTERIZER_DISCARD_EXT */
+ 1005, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */
+ 1006, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */
+ 705, /* GL_INTERLEAVED_ATTRIBS_EXT */
+ 1543, /* GL_SEPARATE_ATTRIBS_EXT */
+ 1896, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ 1895, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ 1252, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ 775, /* GL_LOWER_LEFT */
+ 1956, /* GL_UPPER_LEFT */
+ 1630, /* GL_STENCIL_BACK_REF */
+ 1631, /* GL_STENCIL_BACK_VALUE_MASK */
+ 1632, /* GL_STENCIL_BACK_WRITEMASK */
+ 465, /* GL_DRAW_FRAMEBUFFER_BINDING */
+ 1419, /* GL_RENDERBUFFER_BINDING */
+ 1396, /* GL_READ_FRAMEBUFFER */
+ 464, /* GL_DRAW_FRAMEBUFFER */
+ 1397, /* GL_READ_FRAMEBUFFER_BINDING */
+ 1438, /* GL_RENDERBUFFER_SAMPLES */
+ 574, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
+ 571, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
+ 586, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
+ 581, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */
+ 584, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */
+ 592, /* GL_FRAMEBUFFER_COMPLETE */
+ 597, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */
+ 609, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */
+ 606, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */
+ 601, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */
+ 607, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */
+ 603, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */
+ 614, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */
+ 620, /* GL_FRAMEBUFFER_UNSUPPORTED */
+ 618, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */
+ 925, /* GL_MAX_COLOR_ATTACHMENTS */
+ 167, /* GL_COLOR_ATTACHMENT0 */
+ 170, /* GL_COLOR_ATTACHMENT1 */
+ 184, /* GL_COLOR_ATTACHMENT2 */
+ 186, /* GL_COLOR_ATTACHMENT3 */
+ 188, /* GL_COLOR_ATTACHMENT4 */
+ 190, /* GL_COLOR_ATTACHMENT5 */
+ 192, /* GL_COLOR_ATTACHMENT6 */
+ 194, /* GL_COLOR_ATTACHMENT7 */
+ 196, /* GL_COLOR_ATTACHMENT8 */
+ 198, /* GL_COLOR_ATTACHMENT9 */
+ 171, /* GL_COLOR_ATTACHMENT10 */
+ 173, /* GL_COLOR_ATTACHMENT11 */
+ 175, /* GL_COLOR_ATTACHMENT12 */
+ 177, /* GL_COLOR_ATTACHMENT13 */
+ 179, /* GL_COLOR_ATTACHMENT14 */
+ 181, /* GL_COLOR_ATTACHMENT15 */
+ 365, /* GL_DEPTH_ATTACHMENT */
+ 1619, /* GL_STENCIL_ATTACHMENT */
+ 564, /* GL_FRAMEBUFFER */
+ 1416, /* GL_RENDERBUFFER */
+ 1442, /* GL_RENDERBUFFER_WIDTH */
+ 1429, /* GL_RENDERBUFFER_HEIGHT */
+ 1432, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ 1650, /* GL_STENCIL_INDEX_EXT */
+ 1639, /* GL_STENCIL_INDEX1 */
+ 1644, /* GL_STENCIL_INDEX4 */
+ 1647, /* GL_STENCIL_INDEX8 */
+ 1640, /* GL_STENCIL_INDEX16 */
+ 1436, /* GL_RENDERBUFFER_RED_SIZE */
+ 1427, /* GL_RENDERBUFFER_GREEN_SIZE */
+ 1422, /* GL_RENDERBUFFER_BLUE_SIZE */
+ 1417, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ 1424, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ 1440, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ 612, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
+ 987, /* GL_MAX_SAMPLES */
+ 1842, /* GL_TEXTURE_GEN_STR_OES */
+ 648, /* GL_HALF_FLOAT_OES */
+ 1470, /* GL_RGB565_OES */
+ 776, /* GL_LOW_FLOAT */
+ 1021, /* GL_MEDIUM_FLOAT */
+ 649, /* GL_HIGH_FLOAT */
+ 777, /* GL_LOW_INT */
+ 1022, /* GL_MEDIUM_INT */
+ 650, /* GL_HIGH_INT */
+ 1933, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ 709, /* GL_INT_10_10_10_2_OES */
+ 1547, /* GL_SHADER_BINARY_FORMATS */
+ 1118, /* GL_NUM_SHADER_BINARY_FORMATS */
+ 1548, /* GL_SHADER_COMPILER */
+ 1017, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
+ 1010, /* GL_MAX_VARYING_VECTORS */
+ 947, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
+ 1390, /* GL_QUERY_WAIT_NV */
+ 1385, /* GL_QUERY_NO_WAIT_NV */
+ 1382, /* GL_QUERY_BY_REGION_WAIT_NV */
+ 1381, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ 1377, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ 507, /* GL_FIRST_VERTEX_CONVENTION */
+ 726, /* GL_LAST_VERTEX_CONVENTION */
+ 1354, /* GL_PROVOKING_VERTEX */
+ 316, /* GL_COPY_READ_BUFFER */
+ 317, /* GL_COPY_WRITE_BUFFER */
+ 1497, /* GL_RGBA_SNORM */
+ 1493, /* GL_RGBA8_SNORM */
+ 1559, /* GL_SIGNED_NORMALIZED */
+ 989, /* GL_MAX_SERVER_WAIT_TIMEOUT */
+ 1132, /* GL_OBJECT_TYPE */
+ 1671, /* GL_SYNC_CONDITION */
+ 1676, /* GL_SYNC_STATUS */
+ 1673, /* GL_SYNC_FLAGS */
+ 1672, /* GL_SYNC_FENCE */
+ 1675, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ 1927, /* GL_UNSIGNALED */
+ 1558, /* GL_SIGNALED */
46, /* GL_ALREADY_SIGNALED */
- 1766, /* GL_TIMEOUT_EXPIRED */
- 271, /* GL_CONDITION_SATISFIED */
- 1888, /* GL_WAIT_FAILED */
- 472, /* GL_EVAL_BIT */
- 1311, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- 720, /* GL_LIST_BIT */
- 1660, /* GL_TEXTURE_BIT */
- 1427, /* GL_SCISSOR_BIT */
+ 1890, /* GL_TIMEOUT_EXPIRED */
+ 283, /* GL_CONDITION_SATISFIED */
+ 2017, /* GL_WAIT_FAILED */
+ 492, /* GL_EVAL_BIT */
+ 1394, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ 769, /* GL_LIST_BIT */
+ 1771, /* GL_TEXTURE_BIT */
+ 1529, /* GL_SCISSOR_BIT */
29, /* GL_ALL_ATTRIB_BITS */
- 1014, /* GL_MULTISAMPLE_BIT */
+ 1084, /* GL_MULTISAMPLE_BIT */
30, /* GL_ALL_CLIENT_ATTRIB_BITS */
};
@@ -5279,7 +5581,7 @@ const char *_mesa_lookup_enum_by_nr( int nr )
}
else {
/* this is not re-entrant safe, no big deal here */
- sprintf(token_tmp, "0x%x", nr);
+ _mesa_snprintf(token_tmp, sizeof(token_tmp), "0x%x", nr);
return token_tmp;
}
}
diff --git a/src/mesa/es/main/es_generator.py b/src/mesa/main/es_generator.py
index f736792deca..8f08a3a6f92 100644
--- a/src/mesa/es/main/es_generator.py
+++ b/src/mesa/main/es_generator.py
@@ -103,11 +103,13 @@ VersionSpecificValues = {
'description' : 'GLES1.1 functions',
'header' : 'GLES/gl.h',
'extheader' : 'GLES/glext.h',
+ 'shortname' : 'es1'
},
'GLES2.0': {
'description' : 'GLES2.0 functions',
'header' : 'GLES2/gl2.h',
'extheader' : 'GLES2/gl2ext.h',
+ 'shortname' : 'es2'
}
}
@@ -164,6 +166,7 @@ if not VersionSpecificValues.has_key(version):
# Grab the version-specific items we need to use
versionHeader = VersionSpecificValues[version]['header']
versionExtHeader = VersionSpecificValues[version]['extheader']
+shortname = VersionSpecificValues[version]['shortname']
# If we get to here, we're good to go. The "version" parameter
# directs GetDispatchedFunctions to only allow functions from
@@ -206,11 +209,39 @@ extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
#include "main/compiler.h"
#include "main/api_exec.h"
+#include "main/remap.h"
-#include "main/dispatch.h"
+#ifdef IN_DRI_DRIVER
+#define _GLAPI_USE_REMAP_TABLE
+#endif
+
+#include "es/glapi/glapi-%s/glapi/glapitable.h"
+#include "es/glapi/glapi-%s/glapi/glapioffsets.h"
+#include "es/glapi/glapi-%s/glapi/glapidispatch.h"
+
+#if FEATURE_remap_table
+
+#define need_MESA_remap_table
+
+#include "es/glapi/glapi-%s/main/remap_helper.h"
+
+void
+_mesa_init_remap_table_%s(void)
+{
+ _mesa_do_init_remap_table(_mesa_function_pool,
+ driDispatchRemapTable_size,
+ MESA_remap_table_functions);
+}
+
+void
+_mesa_map_static_functions_%s(void)
+{
+}
+
+#endif
typedef void (*_glapi_proc)(void); /* generic function pointer */
-"""
+""" % (shortname, shortname, shortname, shortname, shortname, shortname);
# Finally we get to the all-important functions
print """/*************************************************************
@@ -262,6 +293,7 @@ for funcName in keys:
passthroughFuncName = ""
passthroughDeclarationString = ""
passthroughCallString = ""
+ prefixOverride = None
variables = []
conversionCodeOutgoing = []
conversionCodeIncoming = []
@@ -280,6 +312,9 @@ for funcName in keys:
funcPrefix = "_es_"
aliasprefix = apiutil.AliasPrefix(funcName)
alias = apiutil.ConversionFunction(funcName)
+ prefixOverride = apiutil.FunctionPrefix(funcName)
+ if prefixOverride != "_mesa_":
+ aliasprefix = apiutil.FunctionPrefix(funcName)
if not alias:
# There may still be a Mesa alias for the function
if apiutil.Alias(funcName):
@@ -667,9 +702,17 @@ for funcName in keys:
# end for each function
-print "void"
-print "_mesa_init_exec_table(struct _glapi_table *exec)"
-print "{"
+print """
+struct _glapi_table *
+_mesa_create_exec_table_%s(void)
+{
+ struct _glapi_table *exec;
+ exec = _mesa_alloc_dispatch_table(sizeof *exec);
+ if (exec == NULL)
+ return NULL;
+
+""" % shortname
+
for func in keys:
prefix = "_es_" if func not in allSpecials else "_check_"
for spec in apiutil.Categories(func):
@@ -682,4 +725,6 @@ for func in keys:
suffix = ext[0].split("_")[0]
entry += suffix
print " SET_%s(exec, %s%s);" % (entry, prefix, entry)
+print ""
+print " return exec;"
print "}"
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 208069c1db5..4c8d4ccfa22 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -495,7 +495,6 @@ _mesa_enable_2_1_extensions(GLcontext *ctx)
}
-
/**
* Either enable or disable the named extension.
* \return GL_TRUE for success, GL_FALSE if invalid extension name
@@ -681,8 +680,8 @@ _mesa_init_extensions( GLcontext *ctx )
* Construct the GL_EXTENSIONS string. Called the first time that
* glGetString(GL_EXTENSIONS) is called.
*/
-GLubyte *
-_mesa_make_extension_string( GLcontext *ctx )
+static GLubyte *
+compute_extensions( GLcontext *ctx )
{
const char *extraExt = get_extension_override(ctx);
GLuint extStrLen = 0;
@@ -727,6 +726,206 @@ _mesa_make_extension_string( GLcontext *ctx )
return (GLubyte *) s;
}
+static size_t
+append_extension(GLubyte **str, const char *ext)
+{
+ GLubyte *s = *str;
+ size_t len = strlen(ext);
+
+ if (s) {
+ memcpy(s, ext, len);
+ s[len++] = ' ';
+ s[len] = '\0';
+
+ *str += len;
+ }
+ else {
+ len++;
+ }
+
+ return len;
+}
+
+
+static size_t
+make_extension_string_es1(const GLcontext *ctx, GLubyte *str)
+{
+ size_t len = 0;
+
+ /* Core additions */
+ len += append_extension(&str, "GL_OES_byte_coordinates");
+ len += append_extension(&str, "GL_OES_fixed_point");
+ len += append_extension(&str, "GL_OES_single_precision");
+ len += append_extension(&str, "GL_OES_matrix_get");
+
+ /* 1.1 required extensions */
+ len += append_extension(&str, "GL_OES_read_format");
+ len += append_extension(&str, "GL_OES_compressed_paletted_texture");
+ len += append_extension(&str, "GL_OES_point_size_array");
+ len += append_extension(&str, "GL_OES_point_sprite");
+
+ /* 1.1 deprecated extensions */
+ len += append_extension(&str, "GL_OES_query_matrix");
+
+#if FEATURE_OES_draw_texture
+ if (ctx->Extensions.OES_draw_texture)
+ len += append_extension(&str, "GL_OES_draw_texture");
+#endif
+
+ if (ctx->Extensions.EXT_blend_equation_separate)
+ len += append_extension(&str, "GL_OES_blend_equation_separate");
+ if (ctx->Extensions.EXT_blend_func_separate)
+ len += append_extension(&str, "GL_OES_blend_func_separate");
+ if (ctx->Extensions.EXT_blend_subtract)
+ len += append_extension(&str, "GL_OES_blend_subtract");
+
+ if (ctx->Extensions.EXT_stencil_wrap)
+ len += append_extension(&str, "GL_OES_stencil_wrap");
+
+ if (ctx->Extensions.ARB_texture_cube_map)
+ len += append_extension(&str, "GL_OES_texture_cube_map");
+ if (ctx->Extensions.ARB_texture_env_crossbar)
+ len += append_extension(&str, "GL_OES_texture_env_crossbar");
+ if (ctx->Extensions.ARB_texture_mirrored_repeat)
+ len += append_extension(&str, "GL_OES_texture_mirrored_repeat");
+
+ if (ctx->Extensions.ARB_framebuffer_object) {
+ len += append_extension(&str, "GL_OES_framebuffer_object");
+ len += append_extension(&str, "GL_OES_depth24");
+ len += append_extension(&str, "GL_OES_depth32");
+ len += append_extension(&str, "GL_OES_fbo_render_mipmap");
+ len += append_extension(&str, "GL_OES_rgb8_rgba8");
+ len += append_extension(&str, "GL_OES_stencil1");
+ len += append_extension(&str, "GL_OES_stencil4");
+ len += append_extension(&str, "GL_OES_stencil8");
+ }
+
+ if (ctx->Extensions.EXT_vertex_array)
+ len += append_extension(&str, "GL_OES_element_index_uint");
+ if (ctx->Extensions.ARB_vertex_buffer_object)
+ len += append_extension(&str, "GL_OES_mapbuffer");
+ if (ctx->Extensions.EXT_texture_filter_anisotropic)
+ len += append_extension(&str, "GL_EXT_texture_filter_anisotropic");
+
+ /* some applications check this for NPOT support */
+ if (ctx->Extensions.ARB_texture_non_power_of_two)
+ len += append_extension(&str, "GL_ARB_texture_non_power_of_two");
+
+ if (ctx->Extensions.EXT_texture_compression_s3tc)
+ len += append_extension(&str, "GL_EXT_texture_compression_dxt1");
+ if (ctx->Extensions.EXT_texture_lod_bias)
+ len += append_extension(&str, "GL_EXT_texture_lod_bias");
+ if (ctx->Extensions.EXT_blend_minmax)
+ len += append_extension(&str, "GL_EXT_blend_minmax");
+ if (ctx->Extensions.EXT_multi_draw_arrays)
+ len += append_extension(&str, "GL_EXT_multi_draw_arrays");
+
+#if FEATURE_OES_EGL_image
+ if (ctx->Extensions.OES_EGL_image)
+ len += append_extension(&str, "GL_OES_EGL_image");
+#endif
+
+ return len;
+}
+
+
+static GLubyte *
+compute_extensions_es1(const GLcontext *ctx)
+{
+ GLubyte *s;
+ unsigned int len;
+
+ len = make_extension_string_es1(ctx, NULL);
+ s = malloc(len + 1);
+ if (!s)
+ return NULL;
+ make_extension_string_es1(ctx, s);
+
+ return s;
+}
+
+static size_t
+make_extension_string_es2(const GLcontext *ctx, GLubyte *str)
+{
+ size_t len = 0;
+
+ len += append_extension(&str, "GL_OES_compressed_paletted_texture");
+
+ if (ctx->Extensions.ARB_framebuffer_object) {
+ len += append_extension(&str, "GL_OES_depth24");
+ len += append_extension(&str, "GL_OES_depth32");
+ len += append_extension(&str, "GL_OES_fbo_render_mipmap");
+ len += append_extension(&str, "GL_OES_rgb8_rgba8");
+ len += append_extension(&str, "GL_OES_stencil1");
+ len += append_extension(&str, "GL_OES_stencil4");
+ }
+
+ if (ctx->Extensions.EXT_vertex_array)
+ len += append_extension(&str, "GL_OES_element_index_uint");
+ if (ctx->Extensions.ARB_vertex_buffer_object)
+ len += append_extension(&str, "GL_OES_mapbuffer");
+
+ if (ctx->Extensions.EXT_texture3D)
+ len += append_extension(&str, "GL_OES_texture_3D");
+ if (ctx->Extensions.ARB_texture_non_power_of_two)
+ len += append_extension(&str, "GL_OES_texture_npot");
+ if (ctx->Extensions.EXT_texture_filter_anisotropic)
+ len += append_extension(&str, "GL_EXT_texture_filter_anisotropic");
+
+ len += append_extension(&str, "GL_EXT_texture_type_2_10_10_10_REV");
+ if (ctx->Extensions.ARB_depth_texture)
+ len += append_extension(&str, "GL_OES_depth_texture");
+ if (ctx->Extensions.EXT_packed_depth_stencil)
+ len += append_extension(&str, "GL_OES_packed_depth_stencil");
+ if (ctx->Extensions.ARB_fragment_shader)
+ len += append_extension(&str, "GL_OES_standard_derivatives");
+
+ if (ctx->Extensions.EXT_texture_compression_s3tc)
+ len += append_extension(&str, "GL_EXT_texture_compression_dxt1");
+ if (ctx->Extensions.EXT_blend_minmax)
+ len += append_extension(&str, "GL_EXT_blend_minmax");
+ if (ctx->Extensions.EXT_multi_draw_arrays)
+ len += append_extension(&str, "GL_EXT_multi_draw_arrays");
+
+#if FEATURE_OES_EGL_image
+ if (ctx->Extensions.OES_EGL_image)
+ len += append_extension(&str, "GL_OES_EGL_image");
+#endif
+
+ return len;
+}
+
+static GLubyte *
+compute_extensions_es2(GLcontext *ctx)
+{
+ GLubyte *s;
+ unsigned int len;
+
+ len = make_extension_string_es2(ctx, NULL);
+ s = malloc(len + 1);
+ if (!s)
+ return NULL;
+ make_extension_string_es2(ctx, s);
+
+ return s;
+}
+
+
+GLubyte *
+_mesa_make_extension_string(GLcontext *ctx)
+{
+ switch (ctx->API) {
+ case API_OPENGL:
+ return compute_extensions(ctx);
+ case API_OPENGLES2:
+ return compute_extensions_es2(ctx);
+ case API_OPENGLES:
+ return compute_extensions_es1(ctx);
+ default:
+ assert(0);
+ return NULL;
+ }
+}
/**
* Return number of enabled extensions.
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 8d442466187..201a0232464 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -1110,7 +1110,22 @@ _mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples,
renderbuffer_storage(target, internalFormat, width, height, samples);
}
+void GLAPIENTRY
+_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat,
+ GLsizei width, GLsizei height)
+{
+ switch (internalFormat) {
+ case GL_RGB565:
+ /* XXX this confuses GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ /* choose a closest format */
+ internalFormat = GL_RGB5;
+ break;
+ default:
+ break;
+ }
+ renderbuffer_storage(target, internalFormat, width, height, 0);
+}
void GLAPIENTRY
_mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params)
diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h
index 28f75dfca79..40a18f83412 100644
--- a/src/mesa/main/fbobject.h
+++ b/src/mesa/main/fbobject.h
@@ -89,6 +89,10 @@ _mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples,
GLsizei width, GLsizei height);
extern void GLAPIENTRY
+_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat,
+ GLsizei width, GLsizei height);
+
+extern void GLAPIENTRY
_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);
extern void GLAPIENTRY
diff --git a/src/mesa/main/get.h b/src/mesa/main/get.h
index cc426fc0f61..47e549e396b 100644
--- a/src/mesa/main/get.h
+++ b/src/mesa/main/get.h
@@ -71,4 +71,27 @@ _mesa_GetStringi(GLenum name, GLuint index);
extern GLenum GLAPIENTRY
_mesa_GetError( void );
+
+extern void GLAPIENTRY
+_es1_GetBooleanv( GLenum pname, GLboolean *params );
+
+extern void GLAPIENTRY
+_es1_GetFloatv( GLenum pname, GLfloat *params );
+
+extern void GLAPIENTRY
+_es1_GetIntegerv( GLenum pname, GLint *params );
+
+extern void GLAPIENTRY
+_es1_GetFixedv( GLenum pname, GLfixed *params );
+
+
+extern void GLAPIENTRY
+_es2_GetBooleanv( GLenum pname, GLboolean *params );
+
+extern void GLAPIENTRY
+_es2_GetFloatv( GLenum pname, GLfloat *params );
+
+extern void GLAPIENTRY
+_es2_GetIntegerv( GLenum pname, GLint *params );
+
#endif
diff --git a/src/mesa/es/main/get_gen.py b/src/mesa/main/get_gen_es.py
index b820157be0c..5fadfee8411 100644
--- a/src/mesa/es/main/get_gen.py
+++ b/src/mesa/main/get_gen_es.py
@@ -565,7 +565,7 @@ def ConversionFunc(fromType, toType):
return fromStr + "_TO_" + toStr
-def EmitGetFunction(stateVars, returnType):
+def EmitGetFunction(stateVars, returnType, API):
"""Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv."""
assert (returnType == GLboolean or
returnType == GLint or
@@ -575,13 +575,13 @@ def EmitGetFunction(stateVars, returnType):
strType = TypeStrings[returnType]
# Capitalize first letter of return type
if returnType == GLint:
- function = "_mesa_GetIntegerv"
+ function = "_es%d_GetIntegerv" % API
elif returnType == GLboolean:
- function = "_mesa_GetBooleanv"
+ function = "_es%d_GetBooleanv" % API
elif returnType == GLfloat:
- function = "_mesa_GetFloatv"
+ function = "_es%d_GetFloatv" % API
elif returnType == GLfixed:
- function = "_mesa_GetFixedv"
+ function = "_es%d_GetFixedv" % API
else:
abort()
@@ -773,20 +773,17 @@ static GLenum compressed_formats[] = {
#define ARRAY_SIZE(A) (sizeof(A) / sizeof(A[0]))
-void GLAPIENTRY
-_mesa_GetFixedv( GLenum pname, GLfixed *params );
-
"""
return
def EmitAll(stateVars, API):
EmitHeader()
- EmitGetFunction(stateVars, GLboolean)
- EmitGetFunction(stateVars, GLfloat)
- EmitGetFunction(stateVars, GLint)
+ EmitGetFunction(stateVars, GLboolean, API)
+ EmitGetFunction(stateVars, GLfloat, API)
+ EmitGetFunction(stateVars, GLint, API)
if API == 1:
- EmitGetFunction(stateVars, GLfixed)
+ EmitGetFunction(stateVars, GLfixed, API)
def main(args):
diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
index 51dd5f77957..e3a60fa6eb5 100644
--- a/src/mesa/main/getstring.c
+++ b/src/mesa/main/getstring.c
@@ -30,6 +30,30 @@
#include "enums.h"
#include "extensions.h"
+static const GLubyte *
+shading_laguage_version(GLcontext *ctx)
+{
+ switch (ctx->API) {
+#if FEATURE_ARB_shading_language_100
+ case API_OPENGL:
+ if (ctx->Extensions.ARB_shading_language_120)
+ return (const GLubyte *) "1.20";
+ else if (ctx->Extensions.ARB_shading_language_100)
+ return (const GLubyte *) "1.10";
+ goto error;
+#endif
+
+ case API_OPENGLES2:
+ return (const GLubyte *) "OpenGL ES GLSL ES 1.0.16";
+
+ case API_OPENGLES:
+ default:
+ error:
+ _mesa_error( ctx, GL_INVALID_ENUM, "glGetString" );
+ return (const GLubyte *) 0;
+ }
+}
+
/**
* Query string-valued state. The return value should _not_ be freed by
@@ -74,13 +98,9 @@ _mesa_GetString( GLenum name )
if (!ctx->Extensions.String)
ctx->Extensions.String = _mesa_make_extension_string(ctx);
return (const GLubyte *) ctx->Extensions.String;
-#if FEATURE_ARB_shading_language_100
- case GL_SHADING_LANGUAGE_VERSION_ARB:
- if (ctx->Extensions.ARB_shading_language_120)
- return (const GLubyte *) "1.20";
- else if (ctx->Extensions.ARB_shading_language_100)
- return (const GLubyte *) "1.10";
- goto error;
+#if FEATURE_ARB_shading_language_100 || FEATURE_ES2
+ case GL_SHADING_LANGUAGE_VERSION:
+ return shading_laguage_version(ctx);
#endif
#if FEATURE_NV_fragment_program || FEATURE_ARB_fragment_program || \
FEATURE_NV_vertex_program || FEATURE_ARB_vertex_program
@@ -93,9 +113,6 @@ _mesa_GetString( GLenum name )
}
/* FALL-THROUGH */
#endif
-#if FEATURE_ARB_shading_language_100
- error:
-#endif
default:
_mesa_error( ctx, GL_INVALID_ENUM, "glGetString" );
return (const GLubyte *) 0;
diff --git a/src/mesa/main/glheader.h b/src/mesa/main/glheader.h
index 77544c88c66..5b8e2f2d811 100644
--- a/src/mesa/main/glheader.h
+++ b/src/mesa/main/glheader.h
@@ -85,6 +85,27 @@ typedef void *GLeglImageOES;
#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741
#endif
+/* GLES 2.0 tokens */
+#ifndef GL_RGB565
+#define GL_RGB565 0x8D62
+#endif
+
+#ifndef GL_TEXTURE_GEN_STR_OES
+#define GL_TEXTURE_GEN_STR_OES 0x8D60
+#endif
+
+#ifndef GL_OES_compressed_paletted_texture
+#define GL_PALETTE4_RGB8_OES 0x8B90
+#define GL_PALETTE4_RGBA8_OES 0x8B91
+#define GL_PALETTE4_R5_G6_B5_OES 0x8B92
+#define GL_PALETTE4_RGBA4_OES 0x8B93
+#define GL_PALETTE4_RGB5_A1_OES 0x8B94
+#define GL_PALETTE8_RGB8_OES 0x8B95
+#define GL_PALETTE8_RGBA8_OES 0x8B96
+#define GL_PALETTE8_R5_G6_B5_OES 0x8B97
+#define GL_PALETTE8_RGBA4_OES 0x8B98
+#define GL_PALETTE8_RGB5_A1_OES 0x8B99
+#endif
/**
* Special, internal token
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 349d5f51e66..9640b79ea7f 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -1076,6 +1076,7 @@ typedef enum
#define T_BIT 2
#define R_BIT 4
#define Q_BIT 8
+#define STR_BITS (S_BIT | T_BIT | R_BIT)
/*@}*/
@@ -2869,6 +2870,14 @@ struct gl_dlist_state
} Current;
};
+/**
+ * Enum for the OpenGL APIs we know about and may support.
+ */
+typedef enum {
+ API_OPENGL,
+ API_OPENGLES,
+ API_OPENGLES2,
+} gl_api;
/**
* Mesa rendering context.
@@ -2887,6 +2896,7 @@ struct __GLcontextRec
/** \name API function pointer tables */
/*@{*/
+ gl_api API;
struct _glapi_table *Save; /**< Display list save functions */
struct _glapi_table *Exec; /**< Execute functions */
struct _glapi_table *CurrentDispatch; /**< == Save or Exec !! */
diff --git a/src/mesa/es/main/es_query_matrix.c b/src/mesa/main/querymatrix.c
index 82b6fe7ab9f..82b6fe7ab9f 100644
--- a/src/mesa/es/main/es_query_matrix.c
+++ b/src/mesa/main/querymatrix.c
diff --git a/src/mesa/main/remap.c b/src/mesa/main/remap.c
index bfceb43c974..2341f8488d1 100644
--- a/src/mesa/main/remap.c
+++ b/src/mesa/main/remap.c
@@ -36,25 +36,18 @@
* a dynamic entry, or the corresponding static entry, in glapi.
*/
-#include "remap.h"
-#include "imports.h"
-
-#include "main/dispatch.h"
-
+#include "mfeatures.h"
#if FEATURE_remap_table
-
-#define need_MESA_remap_table
-#include "main/remap_helper.h"
+#include "remap.h"
+#include "imports.h"
+#include "glapi/glapi.h"
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
#define MAX_ENTRY_POINTS 16
-
-/* this is global for quick access */
-int driDispatchRemapTable[driDispatchRemapTable_size];
-
+static const char *_mesa_function_pool;
/**
* Return the spec string associated with the given function index.
@@ -67,10 +60,7 @@ int driDispatchRemapTable[driDispatchRemapTable_size];
const char *
_mesa_get_function_spec(GLint func_index)
{
- if (func_index < ARRAY_SIZE(_mesa_function_pool))
- return _mesa_function_pool + func_index;
- else
- return NULL;
+ return _mesa_function_pool + func_index;
}
@@ -162,32 +152,14 @@ _mesa_map_function_array(const struct gl_function_remap *func_array)
/**
- * Map the functions which are already static.
- *
- * When a extension function are incorporated into the ABI, the
- * extension suffix is usually stripped. Mapping such functions
- * makes sure the alternative names are available.
- *
- * Note that functions mapped by _mesa_init_remap_table() are
- * excluded.
- */
-void
-_mesa_map_static_functions(void)
-{
- /* Remap static functions which have alternative names and are in the ABI.
- * This is to be on the safe side. glapi should have defined those names.
- */
- _mesa_map_function_array(MESA_alt_functions);
-}
-
-
-/**
* Initialize the remap table. This is called in one_time_init().
* The remap table needs to be initialized before calling the
* CALL/GET/SET macros defined in main/dispatch.h.
*/
void
-_mesa_init_remap_table(void)
+_mesa_do_init_remap_table(const char *pool,
+ int size,
+ const struct gl_function_pool_remap *remap)
{
static GLboolean initialized = GL_FALSE;
GLint i;
@@ -195,15 +167,16 @@ _mesa_init_remap_table(void)
if (initialized)
return;
initialized = GL_TRUE;
+ _mesa_function_pool = pool;
/* initialize the remap table */
- for (i = 0; i < ARRAY_SIZE(driDispatchRemapTable); i++) {
+ for (i = 0; i < size; i++) {
GLint offset;
const char *spec;
/* sanity check */
- ASSERT(i == MESA_remap_table_functions[i].remap_index);
- spec = _mesa_function_pool + MESA_remap_table_functions[i].pool_index;
+ ASSERT(i == remap[i].remap_index);
+ spec = _mesa_function_pool + remap[i].pool_index;
offset = _mesa_map_function_spec(spec);
/* store the dispatch offset in the remap table */
diff --git a/src/mesa/main/remap.h b/src/mesa/main/remap.h
index d080188d89f..7afdee36f5b 100644
--- a/src/mesa/main/remap.h
+++ b/src/mesa/main/remap.h
@@ -28,9 +28,17 @@
#define REMAP_H
-#include "main/mtypes.h"
+#include "main/mfeatures.h"
-struct gl_function_remap;
+struct gl_function_pool_remap {
+ int pool_index;
+ int remap_index;
+};
+
+struct gl_function_remap {
+ int func_index;
+ int dispatch_offset; /* for sanity check */
+};
#if FEATURE_remap_table
@@ -39,9 +47,9 @@ extern int
driDispatchRemapTable[];
extern const char *
-_mesa_get_function_spec(GLint func_index);
+_mesa_get_function_spec(int func_index);
-extern GLint
+extern int
_mesa_map_function_spec(const char *spec);
extern void
@@ -51,17 +59,34 @@ extern void
_mesa_map_static_functions(void);
extern void
+_mesa_map_static_functions_es1(void);
+
+extern void
+_mesa_map_static_functions_es2(void);
+
+extern void
+_mesa_do_init_remap_table(const char *pool,
+ int size,
+ const struct gl_function_pool_remap *remap);
+
+extern void
_mesa_init_remap_table(void);
+extern void
+_mesa_init_remap_table_es1(void);
+
+extern void
+_mesa_init_remap_table_es2(void);
+
#else /* FEATURE_remap_table */
static INLINE const char *
-_mesa_get_function_spec(GLint func_index)
+_mesa_get_function_spec(int func_index)
{
return NULL;
}
-static INLINE GLint
+static INLINE int
_mesa_map_function_spec(const char *spec)
{
return -1;
@@ -77,11 +102,39 @@ _mesa_map_static_functions(void)
{
}
+
+static INLINE void
+_mesa_map_static_functions_es1(void)
+{
+}
+
+static INLINE void
+_mesa_map_static_functions_es2(void)
+{
+}
+
+static INLINE void
+_mesa_do_init_remap_table(const char *pool,
+ int size,
+ const struct gl_function_pool_remap *remap)
+{
+}
+
static INLINE void
_mesa_init_remap_table(void)
{
}
+static INLINE void
+_mesa_init_remap_table_es1(void)
+{
+}
+
+static INLINE void
+_mesa_init_remap_table_es2(void)
+{
+}
+
#endif /* FEATURE_remap_table */
diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h
index 52edf67b545..2df11a454df 100644
--- a/src/mesa/main/remap_helper.h
+++ b/src/mesa/main/remap_helper.h
@@ -26,11 +26,7 @@
*/
#include "main/dispatch.h"
-
-struct gl_function_remap {
- GLint func_index;
- GLint dispatch_offset; /* for sanity check */
-};
+#include "main/remap.h"
/* this is internal to remap.c */
#ifdef need_MESA_remap_table
@@ -4427,10 +4423,7 @@ static const char _mesa_function_pool[] =
;
/* these functions need to be remapped */
-static const struct {
- GLint pool_index;
- GLint remap_index;
-} MESA_remap_table_functions[] = {
+static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 1461, AttachShader_remap_index },
{ 8848, CreateProgram_remap_index },
{ 20883, CreateShader_remap_index },
diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c
index f382680b443..863f878fea8 100644
--- a/src/mesa/main/shaders.c
+++ b/src/mesa/main/shaders.c
@@ -485,7 +485,7 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count,
checksum = _mesa_str_checksum(source);
- sprintf(filename, "newshader_%d", checksum);
+ _mesa_snprintf(filename, sizeof(filename), "newshader_%d", checksum);
newSource = _mesa_read_shader(filename);
if (newSource) {
@@ -739,3 +739,31 @@ _mesa_ValidateProgramARB(GLhandleARB program)
ctx->Driver.ValidateProgram(ctx, program);
}
+#ifdef FEATURE_ES2
+
+void GLAPIENTRY
+_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype,
+ GLint* range, GLint* precision)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__);
+}
+
+
+void GLAPIENTRY
+_mesa_ReleaseShaderCompiler(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__);
+}
+
+
+void GLAPIENTRY
+_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,
+ const void* binary, GLint length)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__);
+}
+
+#endif
diff --git a/src/mesa/main/shaders.h b/src/mesa/main/shaders.h
index 17339ccf623..6ab6d6bfeaf 100644
--- a/src/mesa/main/shaders.h
+++ b/src/mesa/main/shaders.h
@@ -232,5 +232,16 @@ extern void GLAPIENTRY
_mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
const GLfloat *value);
+/* GLES 2.0 */
+extern void GLAPIENTRY
+_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype,
+ GLint* range, GLint* precision);
+
+extern void GLAPIENTRY
+_mesa_ReleaseShaderCompiler(void);
+
+extern void GLAPIENTRY
+_mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,
+ const void* binary, GLint length);
#endif /* SHADERS_H */
diff --git a/src/mesa/main/texgen.c b/src/mesa/main/texgen.c
index e70ea30290f..108ea4cd42c 100644
--- a/src/mesa/main/texgen.c
+++ b/src/mesa/main/texgen.c
@@ -192,6 +192,38 @@ _mesa_TexGend(GLenum coord, GLenum pname, GLdouble param )
_mesa_TexGenfv( coord, pname, p );
}
+#if FEATURE_ES1
+
+void GLAPIENTRY
+_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ _mesa_GetTexGenfv(GL_S, pname, params);
+}
+
+
+void GLAPIENTRY
+_es_TexGenf(GLenum coord, GLenum pname, GLfloat param)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ /* set S, T, and R at the same time */
+ _mesa_TexGenf(GL_S, pname, param);
+ _mesa_TexGenf(GL_T, pname, param);
+ _mesa_TexGenf(GL_R, pname, param);
+}
+
+
+void GLAPIENTRY
+_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
+{
+ ASSERT(coord == GL_TEXTURE_GEN_STR_OES);
+ /* set S, T, and R at the same time */
+ _mesa_TexGenfv(GL_S, pname, params);
+ _mesa_TexGenfv(GL_T, pname, params);
+ _mesa_TexGenfv(GL_R, pname, params);
+}
+
+#endif
static void GLAPIENTRY
_mesa_TexGendv(GLenum coord, GLenum pname, const GLdouble *params )
diff --git a/src/mesa/main/texgen.h b/src/mesa/main/texgen.h
index eb4626033a6..397d89e630f 100644
--- a/src/mesa/main/texgen.h
+++ b/src/mesa/main/texgen.h
@@ -52,6 +52,17 @@ _mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params );
extern void
_mesa_init_texgen_dispatch(struct _glapi_table *disp);
+
+extern void GLAPIENTRY
+_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params);
+
+extern void GLAPIENTRY
+_es_TexGenf(GLenum coord, GLenum pname, GLfloat param);
+
+extern void GLAPIENTRY
+_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params);
+
+
#else /* FEATURE_texgen */
#define _MESA_INIT_TEXGEN_FUNCTIONS(driver, impl) do { } while (0)
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index e0c5cf9c375..0b55097bd69 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -46,6 +46,7 @@
#include "texfetch.h"
#include "teximage.h"
#include "texstate.h"
+#include "texpal.h"
#include "mtypes.h"
@@ -1279,8 +1280,8 @@ texture_error_check( GLcontext *ctx, GLenum target,
if (type != GL_UNSIGNED_SHORT_8_8_MESA &&
type != GL_UNSIGNED_SHORT_8_8_REV_MESA) {
char message[100];
- sprintf(message,
- "glTexImage%d(format/type YCBCR mismatch", dimensions);
+ _mesa_snprintf(message, sizeof(message),
+ "glTexImage%d(format/type YCBCR mismatch", dimensions);
_mesa_error(ctx, GL_INVALID_ENUM, message);
return GL_TRUE; /* error */
}
@@ -1295,9 +1296,9 @@ texture_error_check( GLcontext *ctx, GLenum target,
if (border != 0) {
if (!isProxy) {
char message[100];
- sprintf(message,
- "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
- dimensions, border);
+ _mesa_snprintf(message, sizeof(message),
+ "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
+ dimensions, border);
_mesa_error(ctx, GL_INVALID_VALUE, message);
}
return GL_TRUE;
@@ -3380,7 +3381,6 @@ _mesa_CompressedTexImage1DARB(GLenum target, GLint level,
}
}
-
void GLAPIENTRY
_mesa_CompressedTexImage2DARB(GLenum target, GLint level,
GLenum internalFormat, GLsizei width,
@@ -3396,6 +3396,24 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level,
_mesa_lookup_enum_by_nr(internalFormat),
width, height, border, imageSize, data);
+#if FEATURE_ES
+ switch (internalFormat) {
+ case GL_PALETTE4_RGB8_OES:
+ case GL_PALETTE4_RGBA8_OES:
+ case GL_PALETTE4_R5_G6_B5_OES:
+ case GL_PALETTE4_RGBA4_OES:
+ case GL_PALETTE4_RGB5_A1_OES:
+ case GL_PALETTE8_RGB8_OES:
+ case GL_PALETTE8_RGBA8_OES:
+ case GL_PALETTE8_R5_G6_B5_OES:
+ case GL_PALETTE8_RGBA4_OES:
+ case GL_PALETTE8_RGB5_A1_OES:
+ _mesa_cpal_compressed_teximage2d(target, level, internalFormat,
+ width, height, imageSize, data);
+ return;
+ }
+#endif
+
if (target == GL_TEXTURE_2D ||
(ctx->Extensions.ARB_texture_cube_map &&
target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB &&
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 2753b55c36a..de37e340393 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -416,7 +416,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
*/
if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) {
char s[100];
- sprintf(s, "base level = %d is invalid", baseLevel);
+ _mesa_snprintf(s, sizeof(s), "base level = %d is invalid", baseLevel);
incomplete(t, s);
t->_Complete = GL_FALSE;
return;
@@ -425,7 +425,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
/* Always need the base level image */
if (!t->Image[0][baseLevel]) {
char s[100];
- sprintf(s, "Image[baseLevel=%d] == NULL", baseLevel);
+ _mesa_snprintf(s, sizeof(s), "Image[baseLevel=%d] == NULL", baseLevel);
incomplete(t, s);
t->_Complete = GL_FALSE;
return;
diff --git a/src/mesa/es/main/es_cpaltex.c b/src/mesa/main/texpal.c
index 0c497774ff8..a25e7aa4ff8 100644
--- a/src/mesa/es/main/es_cpaltex.c
+++ b/src/mesa/main/texpal.c
@@ -15,21 +15,16 @@
*/
-#include "GLES/gl.h"
-#include "GLES/glext.h"
+#include "glheader.h"
+#include "compiler.h" /* for ASSERT */
+#include "context.h"
+#include "mtypes.h"
+#include "imports.h"
+#include "pixelstore.h"
+#include "teximage.h"
+#include "texpal.h"
-#include "main/compiler.h" /* for ASSERT */
-
-
-void GL_APIENTRY _es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-
-void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params);
-void GL_APIENTRY _mesa_PixelStorei(GLenum pname, GLint param);
-void GL_APIENTRY _mesa_TexImage2D(GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
-void GL_APIENTRY _mesa_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
-
-void *_mesa_get_current_context(void);
-void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
+#if FEATURE_ES
static const struct cpal_format_info {
@@ -141,15 +136,17 @@ cpal_get_info(GLint level, GLenum internalFormat,
* Convert a call to glCompressedTexImage2D() where internalFormat is a
* compressed palette format into a regular GLubyte/RGBA glTexImage2D() call.
*/
-static void
-cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
- GLsizei width, GLsizei height, GLsizei imageSize,
- const void *palette)
+void
+_mesa_cpal_compressed_teximage2d(GLenum target, GLint level,
+ GLenum internalFormat,
+ GLsizei width, GLsizei height,
+ GLsizei imageSize, const void *palette)
{
const struct cpal_format_info *info;
GLint lvl, num_levels;
const GLubyte *indices;
GLint saved_align, align;
+ GET_CURRENT_CONTEXT(ctx);
info = cpal_get_info(level, internalFormat, width, height, imageSize);
if (!info)
@@ -162,7 +159,7 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
/* first image follows the palette */
indices = (const GLubyte *) palette + info->palette_size * info->size;
- _mesa_GetIntegerv(GL_UNPACK_ALIGNMENT, &saved_align);
+ saved_align = ctx->Unpack.Alignment;
align = saved_align;
for (lvl = 0; lvl < num_levels; lvl++) {
@@ -204,28 +201,4 @@ cpal_compressed_teximage2d(GLenum target, GLint level, GLenum internalFormat,
_mesa_PixelStorei(GL_UNPACK_ALIGNMENT, saved_align);
}
-
-void GL_APIENTRY
-_es_CompressedTexImage2DARB(GLenum target, GLint level, GLenum internalFormat,
- GLsizei width, GLsizei height, GLint border,
- GLsizei imageSize, const GLvoid *data)
-{
- switch (internalFormat) {
- case GL_PALETTE4_RGB8_OES:
- case GL_PALETTE4_RGBA8_OES:
- case GL_PALETTE4_R5_G6_B5_OES:
- case GL_PALETTE4_RGBA4_OES:
- case GL_PALETTE4_RGB5_A1_OES:
- case GL_PALETTE8_RGB8_OES:
- case GL_PALETTE8_RGBA8_OES:
- case GL_PALETTE8_R5_G6_B5_OES:
- case GL_PALETTE8_RGBA4_OES:
- case GL_PALETTE8_RGB5_A1_OES:
- cpal_compressed_teximage2d(target, level, internalFormat,
- width, height, imageSize, data);
- break;
- default:
- _mesa_CompressedTexImage2DARB(target, level, internalFormat,
- width, height, border, imageSize, data);
- }
-}
+#endif
diff --git a/src/mesa/main/texpal.h b/src/mesa/main/texpal.h
new file mode 100644
index 00000000000..eeff5a9e24c
--- /dev/null
+++ b/src/mesa/main/texpal.h
@@ -0,0 +1,38 @@
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.8
+ *
+ * Copyright (C) 1999-2010 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef TEXPAL_H
+#define TEXPAL_H
+
+
+#include "main/glheader.h"
+extern void
+_mesa_cpal_compressed_teximage2d(GLenum target, GLint level,
+ GLenum internalFormat,
+ GLsizei width, GLsizei height,
+ GLsizei imageSize, const void *palette);
+
+
+#endif /* TEXPAL_H */
diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c
index a39b6806501..dea3019d0bc 100644
--- a/src/mesa/main/version.c
+++ b/src/mesa/main/version.c
@@ -32,8 +32,11 @@
* Return major and minor version numbers.
*/
static void
-compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor)
+compute_version(GLcontext *ctx)
{
+ GLuint major, minor;
+ static const int max = 100;
+
const GLboolean ver_1_3 = (ctx->Extensions.ARB_multisample &&
ctx->Extensions.ARB_multitexture &&
ctx->Extensions.ARB_texture_border_clamp &&
@@ -85,31 +88,111 @@ compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor)
ctx->Extensions.EXT_pixel_buffer_object &&
ctx->Extensions.EXT_texture_sRGB);
if (ver_2_1) {
- *major = 2;
- *minor = 1;
+ major = 2;
+ minor = 1;
}
else if (ver_2_0) {
- *major = 2;
- *minor = 0;
+ major = 2;
+ minor = 0;
}
else if (ver_1_5) {
- *major = 1;
- *minor = 5;
+ major = 1;
+ minor = 5;
}
else if (ver_1_4) {
- *major = 1;
- *minor = 4;
+ major = 1;
+ minor = 4;
}
else if (ver_1_3) {
- *major = 1;
- *minor = 3;
+ major = 1;
+ minor = 3;
}
else {
- *major = 1;
- *minor = 2;
+ major = 1;
+ minor = 2;
+ }
+
+ ctx->VersionMajor = major;
+ ctx->VersionMinor = minor;
+ ctx->VersionString = (char *) malloc(max);
+ if (ctx->VersionString) {
+ _mesa_snprintf(ctx->VersionString, max,
+ "%u.%u Mesa " MESA_VERSION_STRING,
+ ctx->VersionMajor, ctx->VersionMinor);
}
}
+static void
+compute_version_es1(GLcontext *ctx)
+{
+ static const int max = 100;
+
+ /* OpenGL ES 1.0 is derived from OpenGL 1.3 */
+ const GLboolean ver_1_0 = (ctx->Extensions.ARB_multisample &&
+ ctx->Extensions.ARB_multitexture &&
+ ctx->Extensions.ARB_texture_compression &&
+ ctx->Extensions.EXT_texture_env_add &&
+ ctx->Extensions.ARB_texture_env_combine &&
+ ctx->Extensions.ARB_texture_env_dot3);
+ /* OpenGL ES 1.1 is derived from OpenGL 1.5 */
+ const GLboolean ver_1_1 = (ver_1_0 &&
+ ctx->Extensions.EXT_point_parameters &&
+ ctx->Extensions.SGIS_generate_mipmap &&
+ ctx->Extensions.ARB_vertex_buffer_object);
+
+ if (ver_1_1) {
+ ctx->VersionMajor = 1;
+ ctx->VersionMinor = 1;
+ } else if (ver_1_0) {
+ ctx->VersionMajor = 1;
+ ctx->VersionMinor = 0;
+ } else {
+ _mesa_problem(ctx, "Incomplete OpenGL ES 1.0 support.");
+ }
+
+ ctx->VersionString = (char *) malloc(max);
+ if (ctx->VersionString) {
+ _mesa_snprintf(ctx->VersionString, max,
+ "OpenGL ES-CM 1.%d Mesa " MESA_VERSION_STRING,
+ ctx->VersionMinor);
+ }
+}
+
+static void
+compute_version_es2(GLcontext *ctx)
+{
+ static const int max = 100;
+
+ /* OpenGL ES 2.0 is derived from OpenGL 2.0 */
+ const GLboolean ver_2_0 = (ctx->Extensions.ARB_multisample &&
+ ctx->Extensions.ARB_multitexture &&
+ ctx->Extensions.ARB_texture_compression &&
+ ctx->Extensions.ARB_texture_cube_map &&
+ ctx->Extensions.ARB_texture_mirrored_repeat &&
+ ctx->Extensions.EXT_blend_color &&
+ ctx->Extensions.EXT_blend_func_separate &&
+ ctx->Extensions.EXT_blend_minmax &&
+ ctx->Extensions.EXT_blend_subtract &&
+ ctx->Extensions.EXT_stencil_wrap &&
+ ctx->Extensions.ARB_vertex_buffer_object &&
+ ctx->Extensions.ARB_shader_objects &&
+ ctx->Extensions.ARB_vertex_shader &&
+ ctx->Extensions.ARB_fragment_shader &&
+ ctx->Extensions.ARB_texture_non_power_of_two &&
+ ctx->Extensions.EXT_blend_equation_separate);
+ if (ver_2_0) {
+ ctx->VersionMajor = 2;
+ ctx->VersionMinor = 0;
+ } else {
+ _mesa_problem(ctx, "Incomplete OpenGL ES 2.0 support.");
+ }
+
+ ctx->VersionString = (char *) malloc(max);
+ if (ctx->VersionString) {
+ _mesa_snprintf(ctx->VersionString, max,
+ "OpenGL ES 2.0 Mesa " MESA_VERSION_STRING);
+ }
+}
/**
* Set the context's VersionMajor, VersionMinor, VersionString fields.
@@ -118,13 +201,16 @@ compute_version(const GLcontext *ctx, GLuint *major, GLuint *minor)
void
_mesa_compute_version(GLcontext *ctx)
{
- static const int max = 100;
-
- compute_version(ctx, &ctx->VersionMajor, &ctx->VersionMinor);
-
- ctx->VersionString = (char *) malloc(max);
- if (ctx->VersionString) {
- _mesa_snprintf(ctx->VersionString, max, "%u.%u Mesa " MESA_VERSION_STRING,
- ctx->VersionMajor, ctx->VersionMinor);
+ switch (ctx->API) {
+ case API_OPENGL:
+ compute_version(ctx);
+ break;
+ case API_OPENGLES:
+ compute_version_es1(ctx);
+ break;
+ case API_OPENGLES2:
+ compute_version_es2(ctx);
+ break;
}
+
}
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index fa79632c18b..4b876a460c2 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -1560,7 +1560,7 @@ _slang_gen_function_call(slang_assemble_ctx *A, slang_function *fun,
char name[200];
prevFuncEndLabel = A->curFuncEndLabel;
- sprintf(name, "__endOfFunc_%s_", (char *) fun->header.a_name);
+ _mesa_snprintf(name, sizeof(name), "__endOfFunc_%s_", (char *) fun->header.a_name);
A->curFuncEndLabel = _slang_label_new(name);
assert(A->curFuncEndLabel);
@@ -4187,11 +4187,10 @@ _slang_gen_variable(slang_assemble_ctx * A, slang_operation *oper)
slang_atom name = oper->var ? oper->var->a_name : oper->a_id;
slang_variable *var = _slang_variable_locate(oper->locals, name, GL_TRUE);
slang_ir_node *n;
- if (!var) {
+ if (!var || !var->declared) {
slang_info_log_error(A->log, "undefined variable '%s'", (char *) name);
return NULL;
}
- assert(var->declared);
n = new_var(A, var);
return n;
}
diff --git a/src/mesa/shader/slang/slang_compile_variable.h b/src/mesa/shader/slang/slang_compile_variable.h
index b4585599f24..5c9d248b354 100644
--- a/src/mesa/shader/slang/slang_compile_variable.h
+++ b/src/mesa/shader/slang/slang_compile_variable.h
@@ -41,7 +41,7 @@ typedef struct slang_variable_
GLuint size; /**< Variable's size in bytes */
GLboolean is_global;
GLboolean isTemp; /**< a named temporary (__resultTmp) */
- GLboolean declared; /**< for debug */
+ GLboolean declared; /**< has the var been declared? */
struct slang_ir_storage_ *store; /**< Storage for this var */
} slang_variable;
diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c
index 7c0ea0c1148..974c4a31315 100644
--- a/src/mesa/shader/slang/slang_emit.c
+++ b/src/mesa/shader/slang/slang_emit.c
@@ -652,30 +652,30 @@ storage_annotation(const slang_ir_node *n, const struct gl_program *prog)
if (st->Index >= 0) {
const GLfloat *val = prog->Parameters->ParameterValues[st->Index];
if (st->Swizzle == SWIZZLE_NOOP)
- sprintf(s, "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]);
+ _mesa_snprintf(s, sizeof(s), "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]);
else {
- sprintf(s, "%g", val[GET_SWZ(st->Swizzle, 0)]);
+ _mesa_snprintf(s, sizeof(s), "%g", val[GET_SWZ(st->Swizzle, 0)]);
}
}
break;
case PROGRAM_TEMPORARY:
if (n->Var)
- sprintf(s, "%s", (char *) n->Var->a_name);
+ _mesa_snprintf(s, sizeof(s), "%s", (char *) n->Var->a_name);
else
- sprintf(s, "t[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "t[%d]", st->Index);
break;
case PROGRAM_STATE_VAR:
case PROGRAM_UNIFORM:
- sprintf(s, "%s", prog->Parameters->Parameters[st->Index].Name);
+ _mesa_snprintf(s, sizeof(s), "%s", prog->Parameters->Parameters[st->Index].Name);
break;
case PROGRAM_VARYING:
- sprintf(s, "%s", prog->Varying->Parameters[st->Index].Name);
+ _mesa_snprintf(s, sizeof(s), "%s", prog->Varying->Parameters[st->Index].Name);
break;
case PROGRAM_INPUT:
- sprintf(s, "input[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "input[%d]", st->Index);
break;
case PROGRAM_OUTPUT:
- sprintf(s, "output[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "output[%d]", st->Index);
break;
default:
s[0] = 0;
@@ -752,9 +752,8 @@ instruction_annotation(gl_inst_opcode opcode, char *dstAnnot,
}
s = (char *) malloc(len);
- sprintf(s, "%s = %s %s %s %s", dstAnnot,
- srcAnnot0, operator, srcAnnot1, srcAnnot2);
- assert(strlen(s) < len);
+ _mesa_snprintf(s, len, "%s = %s %s %s %s", dstAnnot,
+ srcAnnot0, operator, srcAnnot1, srcAnnot2);
free(dstAnnot);
free(srcAnnot0);
@@ -2274,11 +2273,11 @@ emit_var_decl(slang_emit_info *emitInfo, slang_ir_node *n)
if (emitInfo->EmitComments) {
/* emit NOP with comment describing the variable's storage location */
char s[1000];
- sprintf(s, "TEMP[%d]%s = variable %s (size %d)",
- n->Store->Index,
- _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE),
- (n->Var ? (char *) n->Var->a_name : "anonymous"),
- n->Store->Size);
+ _mesa_snprintf(s, sizeof(s), "TEMP[%d]%s = variable %s (size %d)",
+ n->Store->Index,
+ _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE),
+ (n->Var ? (char *) n->Var->a_name : "anonymous"),
+ n->Store->Size);
emit_comment(emitInfo, s);
}
return NULL;
diff --git a/src/mesa/shader/slang/slang_ir.c b/src/mesa/shader/slang/slang_ir.c
index 62603503dd9..c223004b22b 100644
--- a/src/mesa/shader/slang/slang_ir.c
+++ b/src/mesa/shader/slang/slang_ir.c
@@ -340,13 +340,13 @@ storage_string(const slang_ir_storage *st)
assert(Elements(files) == PROGRAM_FILE_MAX);
#if 0
if (st->Size == 1)
- sprintf(s, "%s[%d]", files[st->File], st->Index);
+ _mesa_snprintf(s, "%s[%d]", files[st->File], st->Index);
else
- sprintf(s, "%s[%d..%d]", files[st->File], st->Index,
- st->Index + st->Size - 1);
+ _mesa_snprintf(s, "%s[%d..%d]", files[st->File], st->Index,
+ st->Index + st->Size - 1);
#endif
assert(st->File < (GLint) (sizeof(files) / sizeof(files[0])));
- sprintf(s, "%s[%d]", files[st->File], st->Index);
+ _mesa_snprintf(s, sizeof(s), "%s[%d]", files[st->File], st->Index);
return s;
}
diff --git a/src/mesa/shader/slang/slang_label.c b/src/mesa/shader/slang/slang_label.c
index 225612a9369..8e3a8ebc1aa 100644
--- a/src/mesa/shader/slang/slang_label.c
+++ b/src/mesa/shader/slang/slang_label.c
@@ -37,7 +37,7 @@ _slang_label_new_unique(const char *name)
free(l);
return NULL;
}
- sprintf(l->Name, "%s_%d", name, id);
+ _mesa_snprintf(l->Name, strlen(name) + 10, "%s_%d", name, id);
id++;
l->Location = -1;
}
diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
index 47bc9339716..b16778f8ad4 100644
--- a/src/mesa/shader/slang/slang_link.c
+++ b/src/mesa/shader/slang/slang_link.c
@@ -370,8 +370,9 @@ link_uniform_vars(GLcontext *ctx,
GLuint newSampNum = *numSamplers;
if (newSampNum >= ctx->Const.MaxTextureImageUnits) {
char s[100];
- sprintf(s, "Too many texture samplers (%u, max is %u)",
- newSampNum, ctx->Const.MaxTextureImageUnits);
+ _mesa_snprintf(s, sizeof(s),
+ "Too many texture samplers (%u, max is %u)",
+ newSampNum, ctx->Const.MaxTextureImageUnits);
link_error(shProg, s);
return GL_FALSE;
}
diff --git a/src/mesa/shader/slang/slang_print.c b/src/mesa/shader/slang/slang_print.c
index 3c75523c42f..6b34f395fdf 100644
--- a/src/mesa/shader/slang/slang_print.c
+++ b/src/mesa/shader/slang/slang_print.c
@@ -813,7 +813,7 @@ static const char *
slang_fq_type_string(const slang_fully_specified_type *t)
{
static char str[1000];
- sprintf(str, "%s %s", slang_type_qual_string(t->qualifier),
+ _mesa_snprintf(str, sizeof(str), "%s %s", slang_type_qual_string(t->qualifier),
slang_type_string(t->specifier.type));
return str;
}
@@ -832,9 +832,9 @@ static char *
slang_var_string(const slang_variable *v)
{
static char str[1000];
- sprintf(str, "%s : %s",
- (char *) v->a_name,
- slang_fq_type_string(&v->type));
+ _mesa_snprintf(str, sizeof(str), "%s : %s",
+ (char *) v->a_name,
+ slang_fq_type_string(&v->type));
return str;
}
#endif
diff --git a/src/mesa/shader/slang/slang_utility.c b/src/mesa/shader/slang/slang_utility.c
index e77404f6928..c1d57409a43 100644
--- a/src/mesa/shader/slang/slang_utility.c
+++ b/src/mesa/shader/slang/slang_utility.c
@@ -120,7 +120,7 @@ slang_string_pushi (slang_string *self, GLint i)
{
char buffer[12];
- sprintf (buffer, "%d", i);
+ _mesa_snprintf (buffer, sizeof(buffer), "%d", i);
slang_string_pushs (self, buffer, strlen (buffer));
}
diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak
index d9ebb51a6d2..be859e43256 100644
--- a/src/mesa/sources.mak
+++ b/src/mesa/sources.mak
@@ -1,5 +1,13 @@
### Lists of source files, included by Makefiles
+ES1_SOURCES = \
+ main/api_exec_es1.c \
+ main/get_es1.c
+
+ES2_SOURCES = \
+ main/api_exec_es2.c \
+ main/get_es2.c
+
MAIN_SOURCES = \
main/api_arrayelt.c \
main/api_exec.c \
@@ -25,6 +33,7 @@ MAIN_SOURCES = \
main/dlist.c \
main/dlopen.c \
main/drawpix.c \
+ main/drawtex.c \
main/enable.c \
main/enums.c \
main/eval.c \
@@ -54,6 +63,7 @@ MAIN_SOURCES = \
main/points.c \
main/polygon.c \
main/queryobj.c \
+ main/querymatrix.c \
main/rastpos.c \
main/rbadaptors.c \
main/readpix.c \
@@ -76,6 +86,7 @@ MAIN_SOURCES = \
main/texgetimage.c \
main/teximage.c \
main/texobj.c \
+ main/texpal.c \
main/texparam.c \
main/texrender.c \
main/texstate.c \
@@ -84,7 +95,8 @@ MAIN_SOURCES = \
main/varray.c \
main/version.c \
main/viewport.c \
- main/vtxfmt.c
+ main/vtxfmt.c \
+ $(ES_SOURCES)
GLAPI_SOURCES = \
glapi/glapi.c \
@@ -199,6 +211,7 @@ STATETRACKER_SOURCES = \
state_tracker/st_cb_condrender.c \
state_tracker/st_cb_flush.c \
state_tracker/st_cb_drawpixels.c \
+ state_tracker/st_cb_drawtex.c \
state_tracker/st_cb_eglimage.c \
state_tracker/st_cb_fbo.c \
state_tracker/st_cb_feedback.c \
diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
index a8262a5e1aa..92fe72d4df6 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -194,9 +194,12 @@ update_samplers(struct st_context *st)
sampler->normalized_coords = 1;
sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias;
- sampler->min_lod = MAX2(0.0f, texobj->MinLod);
- sampler->max_lod = MIN2(texobj->MaxLevel - texobj->BaseLevel,
- texobj->MaxLod);
+
+ sampler->min_lod = texobj->BaseLevel + texobj->MinLod;
+ if (sampler->min_lod < texobj->BaseLevel)
+ sampler->min_lod = texobj->BaseLevel;
+
+ sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel, texobj->MaxLod);
if (sampler->max_lod < sampler->min_lod) {
/* The GL spec doesn't seem to specify what to do in this case.
* Swap the values.
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index f4294ac1e6f..d403b7db1e5 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -62,7 +62,7 @@ update_textures(struct st_context *st)
if (samplersUsed & (1 << su)) {
struct gl_texture_object *texObj;
struct st_texture_object *stObj;
- GLboolean flush, retval;
+ GLboolean retval;
GLuint texUnit;
if (fprog->Base.SamplersUsed & (1 << su))
@@ -77,7 +77,7 @@ update_textures(struct st_context *st)
}
stObj = st_texture_object(texObj);
- retval = st_finalize_texture(st->ctx, st->pipe, texObj, &flush);
+ retval = st_finalize_texture(st->ctx, st->pipe, texObj);
if (!retval) {
/* out of mem */
continue;
@@ -88,15 +88,6 @@ update_textures(struct st_context *st)
sampler_view = st_get_texture_sampler_view(stObj, pipe);
}
- /*
- if (pt) {
- printf("%s su=%u non-null\n", __FUNCTION__, su);
- }
- else {
- printf("%s su=%u null\n", __FUNCTION__, su);
- }
- */
-
pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view);
}
@@ -138,19 +129,16 @@ finalize_textures(struct st_context *st)
const GLuint texUnit = fprog->Base.SamplerUnits[su];
struct gl_texture_object *texObj
= st->ctx->Texture.Unit[texUnit]._Current;
- struct st_texture_object *stObj = st_texture_object(texObj);
if (texObj) {
- GLboolean flush, retval;
+ GLboolean retval;
- retval = st_finalize_texture(st->ctx, st->pipe, texObj, &flush);
+ retval = st_finalize_texture(st->ctx, st->pipe, texObj);
if (!retval) {
/* out of mem */
st->missing_textures = GL_TRUE;
continue;
}
-
- stObj->teximage_realloc = TRUE;
}
}
}
diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.c b/src/mesa/state_tracker/st_cb_drawtex.c
index 6d387d5ccf1..6d387d5ccf1 100644
--- a/src/mesa/es/state_tracker/st_cb_drawtex.c
+++ b/src/mesa/state_tracker/st_cb_drawtex.c
diff --git a/src/mesa/es/state_tracker/st_cb_drawtex.h b/src/mesa/state_tracker/st_cb_drawtex.h
index 7b0da702798..7b0da702798 100644
--- a/src/mesa/es/state_tracker/st_cb_drawtex.h
+++ b/src/mesa/state_tracker/st_cb_drawtex.h
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index e5c956d561d..c02121fbd1a 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -321,15 +321,13 @@ st_render_texture(GLcontext *ctx,
struct pipe_resource *pt = st_get_texobj_resource(att->Texture);
struct st_texture_object *stObj;
const struct gl_texture_image *texImage;
- GLint pt_level;
/* When would this fail? Perhaps assert? */
if (!pt)
return;
- /* The first gallium texture level = Mesa BaseLevel */
- pt_level = MAX2(0, (GLint) att->TextureLevel - att->Texture->BaseLevel);
- texImage = att->Texture->Image[att->CubeMapFace][pt_level];
+ /* get pointer to texture image we're rendeing to */
+ texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
/* create new renderbuffer which wraps the texture image */
rb = st_new_renderbuffer(ctx, 0);
@@ -350,7 +348,7 @@ st_render_texture(GLcontext *ctx,
/* point renderbuffer at texobject */
strb->rtt = stObj;
- strb->rtt_level = pt_level;
+ strb->rtt_level = att->TextureLevel;
strb->rtt_face = att->CubeMapFace;
strb->rtt_slice = att->Zoffset;
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 3457214ca4c..ed8eb2929a6 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -27,9 +27,6 @@
#include "main/mfeatures.h"
#include "main/bufferobj.h"
-#if FEATURE_convolve
-#include "main/convolve.h"
-#endif
#include "main/enums.h"
#include "main/fbobject.h"
#include "main/formats.h"
@@ -231,93 +228,114 @@ default_bindings(struct st_context *st, enum pipe_format format)
}
+/** Return number of image dimensions (1, 2 or 3) for a texture target. */
+static GLuint
+get_texture_dims(GLenum target)
+{
+ switch (target) {
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_1D_ARRAY_EXT:
+ return 1;
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ case GL_TEXTURE_RECTANGLE_NV:
+ case GL_TEXTURE_2D_ARRAY_EXT:
+ return 2;
+ case GL_TEXTURE_3D:
+ return 3;
+ default:
+ assert(0 && "invalid texture target in get_texture_dims()");
+ return 1;
+ }
+}
+
+
/**
- * Allocate a pipe_resource object for the given st_texture_object using
- * the given st_texture_image to guess the mipmap size/levels.
- *
- * [comments...]
- * Otherwise, store it in memory if (Border != 0) or (any dimension ==
- * 1).
- *
- * Otherwise, if max_level >= level >= min_level, create texture with
- * space for images from min_level down to max_level.
+ * Try to allocate a pipe_resource object for the given st_texture_object.
*
- * Otherwise, create texture with space for images from (level 0)..(1x1).
- * Consider pruning this texture at a validation if the saving is worth it.
+ * We use the given st_texture_image as a clue to determine the size of the
+ * mipmap image at level=0.
*/
static void
guess_and_alloc_texture(struct st_context *st,
struct st_texture_object *stObj,
const struct st_texture_image *stImage)
{
- GLuint firstLevel;
- GLuint lastLevel;
- GLuint width = stImage->base.Width2; /* size w/out border */
- GLuint height = stImage->base.Height2;
- GLuint depth = stImage->base.Depth2;
- GLuint i, bindings;
+ const GLuint dims = get_texture_dims(stObj->base.Target);
+ GLuint level, lastLevel, width, height, depth;
+ GLuint bindings;
enum pipe_format fmt;
DBG("%s\n", __FUNCTION__);
assert(!stObj->pt);
- if (stObj->pt &&
- (GLint) stImage->level > stObj->base.BaseLevel &&
- (stImage->base.Width == 1 ||
- (stObj->base.Target != GL_TEXTURE_1D &&
- stImage->base.Height == 1) ||
- (stObj->base.Target == GL_TEXTURE_3D &&
- stImage->base.Depth == 1)))
- return;
-
- /* If this image disrespects BaseLevel, allocate from level zero.
- * Usually BaseLevel == 0, so it's unlikely to happen.
- */
- if ((GLint) stImage->level < stObj->base.BaseLevel)
- firstLevel = 0;
- else
- firstLevel = stObj->base.BaseLevel;
+ level = stImage->level;
+ width = stImage->base.Width2; /* size w/out border */
+ height = stImage->base.Height2;
+ depth = stImage->base.Depth2;
+ assert(width > 0);
+ assert(height > 0);
+ assert(depth > 0);
- /* Figure out image dimensions at start level.
+ /* Depending on the image's size, we can't always make a guess here.
*/
- for (i = stImage->level; i > firstLevel; i--) {
+ if (level > 0) {
+ if ( (dims >= 1 && width == 1) ||
+ (dims >= 2 && height == 1) ||
+ (dims >= 3 && depth == 1) ) {
+ /* we can't determine the image size at level=0 */
+ stObj->width0 = stObj->height0 = stObj->depth0 = 0;
+ return;
+ }
+ }
+
+ /* grow the image size until we hit level = 0 */
+ while (level > 0) {
if (width != 1)
width <<= 1;
if (height != 1)
height <<= 1;
if (depth != 1)
depth <<= 1;
- }
+ level--;
+ }
- if (width == 0 || height == 0 || depth == 0) {
- /* no texture needed */
- return;
- }
+ assert(level == 0);
+
+ /* At this point, (width x height x depth) is the expected size of
+ * the level=0 mipmap image.
+ */
- /* Guess a reasonable value for lastLevel. This is probably going
- * to be wrong fairly often and might mean that we have to look at
- * resizable buffers, or require that buffers implement lazy
- * pagetable arrangements.
+ /* Guess a reasonable value for lastLevel. With OpenGL we have no
+ * idea how many mipmap levels will be in a texture until we start
+ * to render with it. Make an educated guess here but be prepared
+ * to re-allocating a texture buffer with space for more (or fewer)
+ * mipmap levels later.
*/
if ((stObj->base.MinFilter == GL_NEAREST ||
stObj->base.MinFilter == GL_LINEAR ||
stImage->base._BaseFormat == GL_DEPTH_COMPONENT ||
stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) &&
!stObj->base.GenerateMipmap &&
- stImage->level == firstLevel) {
+ stImage->level == 0) {
/* only alloc space for a single mipmap level */
- lastLevel = firstLevel;
+ lastLevel = 0;
}
else {
/* alloc space for a full mipmap */
GLuint l2width = util_logbase2(width);
GLuint l2height = util_logbase2(height);
GLuint l2depth = util_logbase2(depth);
- lastLevel = firstLevel + MAX2(MAX2(l2width, l2height), l2depth);
+ lastLevel = MAX2(MAX2(l2width, l2height), l2depth);
}
+ /* Save the level=0 dimensions */
+ stObj->width0 = width;
+ stObj->height0 = height;
+ stObj->depth0 = depth;
+
fmt = st_mesa_format_to_pipe_format(stImage->base.TexFormat);
bindings = default_bindings(st, fmt);
@@ -507,8 +525,6 @@ st_TexImage(GLcontext * ctx,
struct pipe_screen *screen = st->pipe->screen;
struct st_texture_object *stObj = st_texture_object(texObj);
struct st_texture_image *stImage = st_texture_image(texImage);
- GLint postConvWidth, postConvHeight;
- GLint texelBytes, sizeInBytes;
GLuint dstRowStride = 0;
struct gl_pixelstore_attrib unpackNB;
enum pipe_transfer_usage transfer_usage = 0;
@@ -516,6 +532,12 @@ st_TexImage(GLcontext * ctx,
DBG("%s target %s level %d %dx%dx%d border %d\n", __FUNCTION__,
_mesa_lookup_enum_by_nr(target), level, width, height, depth, border);
+ /* The Mesa/Gallium state tracker does not implement the imaging extensions
+ * such as convolution.
+ */
+ assert(!ctx->Extensions.ARB_imaging);
+ assert(!ctx->Extensions.EXT_convolution);
+
/* switch to "normal" */
if (stObj->surface_based) {
_mesa_clear_texture_object(ctx, texObj);
@@ -532,39 +554,17 @@ st_TexImage(GLcontext * ctx,
texImage->Border = 0;
border = 0;
}
-
- postConvWidth = width;
- postConvHeight = height;
+ else {
+ assert(texImage->Width == width);
+ assert(texImage->Height == height);
+ assert(texImage->Depth == depth);
+ }
stImage->face = _mesa_tex_target_to_face(target);
stImage->level = level;
-#if FEATURE_convolve
- if (ctx->_ImageTransferState & IMAGE_CONVOLUTION_BIT) {
- _mesa_adjust_image_for_convolution(ctx, dims, &postConvWidth,
- &postConvHeight);
- }
-#endif
-
_mesa_set_fetch_functions(texImage, dims);
- if (_mesa_is_format_compressed(texImage->TexFormat)) {
- /* must be a compressed format */
- texelBytes = 0;
- }
- else {
- texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
-
- /* Minimum pitch of 32 bytes */
- if (postConvWidth * texelBytes < 32) {
- postConvWidth = 32 / texelBytes;
- texImage->RowStride = postConvWidth;
- }
-
- /* we'll set RowStride elsewhere when the texture is a "mapped" state */
- /*assert(texImage->RowStride == postConvWidth);*/
- }
-
/* Release the reference to a potentially orphaned buffer.
* Release any old malloced memory.
*/
@@ -581,15 +581,13 @@ st_TexImage(GLcontext * ctx,
* mipmap. If so, free the old mipmap.
*/
if (stObj->pt) {
- if (stObj->teximage_realloc ||
- level > (GLint) stObj->pt->last_level ||
+ if (level > (GLint) stObj->pt->last_level ||
!st_texture_match_image(stObj->pt, &stImage->base,
stImage->face, stImage->level)) {
DBG("release it\n");
pipe_resource_reference(&stObj->pt, NULL);
assert(!stObj->pt);
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- stObj->teximage_realloc = FALSE;
}
}
@@ -615,9 +613,13 @@ st_TexImage(GLcontext * ctx,
assert(!stImage->pt);
+ /* Check if this texture image can live inside the texture object's buffer.
+ * If so, store the image there. Otherwise the image will temporarily live
+ * in its own buffer.
+ */
if (stObj->pt &&
st_texture_match_image(stObj->pt, &stImage->base,
- stImage->face, stImage->level)) {
+ stImage->face, stImage->level)) {
pipe_resource_reference(&stImage->pt, stObj->pt);
assert(stImage->pt);
@@ -626,9 +628,11 @@ st_TexImage(GLcontext * ctx,
if (!stImage->pt)
DBG("XXX: Image did not fit into texture - storing in local memory!\n");
- /* st_CopyTexImage calls this function with pixels == NULL, with
- * the expectation that the texture will be set up but nothing
- * more will be done. This is where those calls return:
+ /* Pixel data may come from regular user memory or a PBO. For the later,
+ * do bounds checking and map the PBO to read pixels data from it.
+ *
+ * XXX we should try to use a GPU-accelerated path to copy the image data
+ * from the PBO to the texture.
*/
if (compressed_src) {
pixels = _mesa_validate_pbo_compressed_teximage(ctx, imageSize, pixels,
@@ -641,10 +645,6 @@ st_TexImage(GLcontext * ctx,
pixels, unpack, "glTexImage");
}
- /* Note: we can't check for pixels==NULL until after we've allocated
- * memory for the texture.
- */
-
/* See if we can do texture compression with a blit/render.
*/
if (!compressed_src &&
@@ -663,7 +663,12 @@ st_TexImage(GLcontext * ctx,
}
}
+ /*
+ * Prepare to store the texture data. Either map the gallium texture buffer
+ * memory or malloc space for it.
+ */
if (stImage->pt) {
+ /* Store the image in the gallium texture memory buffer */
if (format == GL_DEPTH_COMPONENT &&
util_format_is_depth_and_stencil(stImage->pt->format))
transfer_usage = PIPE_TRANSFER_READ_WRITE;
@@ -671,28 +676,17 @@ st_TexImage(GLcontext * ctx,
transfer_usage = PIPE_TRANSFER_WRITE;
texImage->Data = st_texture_image_map(st, stImage, 0,
- transfer_usage, 0, 0,
- stImage->base.Width,
- stImage->base.Height);
+ transfer_usage, 0, 0, width, height);
if(stImage->transfer)
dstRowStride = stImage->transfer->stride;
}
else {
/* Allocate regular memory and store the image there temporarily. */
- if (_mesa_is_format_compressed(texImage->TexFormat)) {
- sizeInBytes = _mesa_format_image_size(texImage->TexFormat,
- texImage->Width,
- texImage->Height,
- texImage->Depth);
- dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
- assert(dims != 3);
- }
- else {
- dstRowStride = postConvWidth * texelBytes;
- sizeInBytes = depth * dstRowStride * postConvHeight;
- }
+ GLuint imageSize = _mesa_format_image_size(texImage->TexFormat,
+ width, height, depth);
+ dstRowStride = _mesa_format_row_stride(texImage->TexFormat, width);
- texImage->Data = _mesa_align_malloc(sizeInBytes, 16);
+ texImage->Data = _mesa_align_malloc(imageSize, 16);
}
if (!texImage->Data) {
@@ -700,33 +694,33 @@ st_TexImage(GLcontext * ctx,
return;
}
- if (!pixels)
+ if (!pixels) {
+ /* We've allocated texture memory, but have no pixel data - all done. */
goto done;
+ }
DBG("Upload image %dx%dx%d row_len %x pitch %x\n",
- width, height, depth, width * texelBytes, dstRowStride);
+ width, height, depth, width, dstRowStride);
- /* Copy data. Would like to know when it's ok for us to eg. use
- * the blitter to copy. Or, use the hardware to do the format
- * conversion and copy:
+ /* Copy user texture image into the texture buffer.
*/
if (compressed_src) {
- const GLuint srcImageStride = _mesa_format_row_stride(texImage->TexFormat, width);
- if(dstRowStride == srcImageStride)
+ const GLuint srcRowStride =
+ _mesa_format_row_stride(texImage->TexFormat, width);
+ if (dstRowStride == srcRowStride) {
memcpy(texImage->Data, pixels, imageSize);
- else
- {
+ }
+ else {
char *dst = texImage->Data;
const char *src = pixels;
GLuint i, bw, bh, lines;
_mesa_get_format_block_size(texImage->TexFormat, &bw, &bh);
lines = (height + bh - 1) / bh;
- for(i = 0; i < lines; ++i)
- {
- memcpy(dst, src, srcImageStride);
+ for (i = 0; i < lines; ++i) {
+ memcpy(dst, src, srcRowStride);
dst += dstRowStride;
- src += srcImageStride;
+ src += srcRowStride;
}
}
}
@@ -755,8 +749,7 @@ st_TexImage(GLcontext * ctx,
/* map next slice of 3D texture */
texImage->Data = st_texture_image_map(st, stImage, i + 1,
transfer_usage, 0, 0,
- stImage->base.Width,
- stImage->base.Height);
+ width, height);
src += srcImageStride;
}
}
@@ -1757,12 +1750,26 @@ st_CopyTexSubImage3D(GLcontext * ctx, GLenum target, GLint level,
}
+/**
+ * Copy image data from stImage into the texture object 'stObj' at level
+ * 'dstLevel'.
+ */
static void
copy_image_data_to_texture(struct st_context *st,
struct st_texture_object *stObj,
GLuint dstLevel,
struct st_texture_image *stImage)
{
+ /* debug checks */
+ {
+ const struct gl_texture_image *dstImage =
+ stObj->base.Image[stImage->face][stImage->level];
+ assert(dstImage);
+ assert(dstImage->Width == stImage->base.Width);
+ assert(dstImage->Height == stImage->base.Height);
+ assert(dstImage->Depth == stImage->base.Depth);
+ }
+
if (stImage->pt) {
/* Copy potentially with the blitter:
*/
@@ -1805,16 +1812,14 @@ copy_image_data_to_texture(struct st_context *st,
GLboolean
st_finalize_texture(GLcontext *ctx,
struct pipe_context *pipe,
- struct gl_texture_object *tObj,
- GLboolean *needFlush)
+ struct gl_texture_object *tObj)
{
struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(tObj);
const GLuint nr_faces = (stObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- GLuint blockSize, face;
+ GLuint face;
struct st_texture_image *firstImage;
-
- *needFlush = GL_FALSE;
+ enum pipe_format firstImageFormat;
if (stObj->base._Complete) {
/* The texture is complete and we know exactly how many mipmap levels
@@ -1827,10 +1832,11 @@ st_finalize_texture(GLcontext *ctx,
stObj->base.MinFilter == GL_NEAREST)
stObj->lastLevel = stObj->base.BaseLevel;
else
- stObj->lastLevel = stObj->base._MaxLevel - stObj->base.BaseLevel;
+ stObj->lastLevel = stObj->base._MaxLevel;
}
firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
+ assert(firstImage);
/* If both firstImage and stObj point to a texture which can contain
* all active images, favour firstImage. Note that because of the
@@ -1844,22 +1850,23 @@ st_finalize_texture(GLcontext *ctx,
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
}
- /* bytes per pixel block (blocks are usually 1x1) */
- blockSize = _mesa_get_format_bytes(firstImage->base.TexFormat);
+ /* Find gallium format for the Mesa texture */
+ firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
/* If we already have a gallium texture, check that it matches the texture
* object's format, target, size, num_levels, etc.
*/
if (stObj->pt) {
- const enum pipe_format fmt =
- st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
if (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) ||
- stObj->pt->format != fmt ||
+ stObj->pt->format != firstImageFormat ||
stObj->pt->last_level < stObj->lastLevel ||
- stObj->pt->width0 != firstImage->base.Width2 ||
- stObj->pt->height0 != firstImage->base.Height2 ||
- stObj->pt->depth0 != firstImage->base.Depth2)
+ stObj->pt->width0 != stObj->width0 ||
+ stObj->pt->height0 != stObj->height0 ||
+ stObj->pt->depth0 != stObj->depth0)
{
+ /* The gallium texture does not match the Mesa texture so delete the
+ * gallium texture now. We'll make a new one below.
+ */
pipe_resource_reference(&stObj->pt, NULL);
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
st->dirty.st |= ST_NEW_FRAMEBUFFER;
@@ -1869,17 +1876,15 @@ st_finalize_texture(GLcontext *ctx,
/* May need to create a new gallium texture:
*/
if (!stObj->pt) {
- const enum pipe_format fmt =
- st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
- GLuint bindings = default_bindings(st, fmt);
+ GLuint bindings = default_bindings(st, firstImageFormat);
stObj->pt = st_texture_create(st,
gl_target_to_pipe(stObj->base.Target),
- fmt,
+ firstImageFormat,
stObj->lastLevel,
- firstImage->base.Width2,
- firstImage->base.Height2,
- firstImage->base.Depth2,
+ stObj->width0,
+ stObj->height0,
+ stObj->depth0,
bindings);
if (!stObj->pt) {
@@ -1894,13 +1899,12 @@ st_finalize_texture(GLcontext *ctx,
GLuint level;
for (level = 0; level <= stObj->lastLevel; level++) {
struct st_texture_image *stImage =
- st_texture_image(stObj->base.Image[face][stObj->base.BaseLevel + level]);
+ st_texture_image(stObj->base.Image[face][level]);
/* Need to import images in main memory or held in other textures.
*/
if (stImage && stObj->pt != stImage->pt) {
copy_image_data_to_texture(st, stObj, level, stImage);
- *needFlush = GL_TRUE;
}
}
}
diff --git a/src/mesa/state_tracker/st_cb_texture.h b/src/mesa/state_tracker/st_cb_texture.h
index f1fe0339cdd..1cd9fc3a50f 100644
--- a/src/mesa/state_tracker/st_cb_texture.h
+++ b/src/mesa/state_tracker/st_cb_texture.h
@@ -33,8 +33,7 @@
extern GLboolean
st_finalize_texture(GLcontext *ctx,
struct pipe_context *pipe,
- struct gl_texture_object *tObj,
- GLboolean *needFlush);
+ struct gl_texture_object *tObj);
extern struct gl_texture_object *
diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 5fcb6b9dcf9..e8a3926e6db 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -64,6 +64,7 @@
#include "pipe/p_context.h"
#include "util/u_inlines.h"
#include "util/u_rect.h"
+#include "util/u_surface.h"
#include "draw/draw_context.h"
#include "cso_cache/cso_context.h"
@@ -199,7 +200,16 @@ struct st_context *st_create_context(struct pipe_context *pipe,
memset(&funcs, 0, sizeof(funcs));
st_init_driver_functions(&funcs);
- ctx = _mesa_create_context(visual, shareCtx, &funcs, NULL);
+#if FEATURE_GL
+ ctx = _mesa_create_context_for_api(API_OPENGL,
+ visual, shareCtx, &funcs, NULL);
+#elif FEATURE_ES1
+ ctx = _mesa_create_context_for_api(API_OPENGLES,
+ visual, shareCtx, &funcs, NULL);
+#elif FEATURE_ES2
+ ctx = _mesa_create_context_for_api(API_OPENGLES2,
+ visual, shareCtx, &funcs, NULL);
+#endif
/* XXX: need a capability bit in gallium to query if the pipe
* driver prefers DP4 or MUL/MAD for vertex transformation.
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index b8b75c7de62..6b1d51b3f44 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -311,7 +311,6 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
* mipmap levels we need to generate. So allocate a new texture.
*/
struct pipe_resource *oldTex = stObj->pt;
- GLboolean needFlush;
/* create new texture with space for more levels */
stObj->pt = st_texture_create(st,
@@ -331,7 +330,7 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
/* This will copy the old texture's base image into the new texture
* which we just allocated.
*/
- st_finalize_texture(ctx, st->pipe, texObj, &needFlush);
+ st_finalize_texture(ctx, st->pipe, texObj);
/* release the old tex (will likely be freed too) */
pipe_resource_reference(&oldTex, NULL);
@@ -342,10 +341,10 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
assert(lastLevel <= pt->last_level);
- /* Recall that the Mesa BaseLevel image is stored in the gallium
- * texture's level[0] position. So pass baseLevel=0 here.
+ /* Try to generate the mipmap by rendering/texturing. If that fails,
+ * use the software fallback.
*/
- if (!st_render_mipmap(st, target, stObj, 0, lastLevel)) {
+ if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) {
fallback_generate_mipmap(ctx, target, texObj);
}
diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c
index 1b52e77b7d9..6a42789b824 100644
--- a/src/mesa/state_tracker/st_texture.c
+++ b/src/mesa/state_tracker/st_texture.c
@@ -45,24 +45,6 @@
#define DBG if(0) printf
-#if 0
-static GLenum
-target_to_target(GLenum target)
-{
- switch (target) {
- case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB:
- case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB:
- case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB:
- case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB:
- return GL_TEXTURE_CUBE_MAP_ARB;
- default:
- return target;
- }
-}
-#endif
-
/**
* Allocate a new pipe_resource object
@@ -143,10 +125,12 @@ st_texture_match_image(const struct pipe_resource *pt,
/**
- * Map a teximage in a mipmap texture.
- * \param row_stride returns row stride in bytes
- * \param image_stride returns image stride in bytes (for 3D textures).
- * \return address of mapping
+ * Map a texture image and return the address for a particular 2D face/slice/
+ * layer. The stImage indicates the cube face and mipmap level. The slice
+ * of the 3D texture is passed in 'zoffset'.
+ * \param usage one of the PIPE_TRANSFER_x values
+ * \param x, y, w, h the region of interest of the 2D image.
+ * \return address of mapping or NULL if any error
*/
GLubyte *
st_texture_image_map(struct st_context *st, struct st_texture_image *stImage,
@@ -269,6 +253,9 @@ st_texture_image_copy(struct pipe_context *pipe,
struct pipe_surface *dst_surface;
GLuint i;
+ assert(src->width0 == dst->width0);
+ assert(src->height0 == dst->height0);
+
for (i = 0; i < depth; i++) {
GLuint srcLevel;
diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h
index d0298817ded..447f091db1f 100644
--- a/src/mesa/state_tracker/st_texture.h
+++ b/src/mesa/state_tracker/st_texture.h
@@ -38,6 +38,9 @@
struct pipe_resource;
+/**
+ * Subclass of gl_texure_image.
+ */
struct st_texture_image
{
struct gl_texture_image base;
@@ -57,7 +60,9 @@ struct st_texture_image
};
-
+/**
+ * Subclass of gl_texure_object.
+ */
struct st_texture_object
{
struct gl_texture_object base; /* The "parent" object */
@@ -66,6 +71,9 @@ struct st_texture_object
*/
GLuint lastLevel;
+ /** The size of the level=0 mipmap image */
+ GLuint width0, height0, depth0;
+
/* On validation any active images held in main memory or in other
* textures will be copied to this texture and the old storage freed.
*/
@@ -76,8 +84,6 @@ struct st_texture_object
*/
struct pipe_sampler_view *sampler_view;
- GLboolean teximage_realloc;
-
/* True if there is/was a surface bound to this texture object. It helps
* track whether the texture object is surface based or not.
*/
diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h
index 7a085f63c73..07d31f6ce36 100644
--- a/src/mesa/vbo/vbo.h
+++ b/src/mesa/vbo/vbo.h
@@ -139,6 +139,30 @@ void GLAPIENTRY
_vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params);
void GLAPIENTRY
+_vbo_Materialf(GLenum face, GLenum pname, GLfloat param);
+
+void GLAPIENTRY
_vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+void GLAPIENTRY
+_vbo_VertexAttrib1f(GLuint indx, GLfloat x);
+
+void GLAPIENTRY
+_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values);
+
+void GLAPIENTRY
+_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);
+
+void GLAPIENTRY
+_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values);
+
+void GLAPIENTRY
+_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
+
+void GLAPIENTRY
+_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values);
+
+void GLAPIENTRY
+_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values);
+
#endif
diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c
index e3be39a342e..13148fc3e22 100644
--- a/src/mesa/vbo/vbo_context.c
+++ b/src/mesa/vbo/vbo_context.c
@@ -199,7 +199,8 @@ GLboolean _vbo_CreateContext( GLcontext *ctx )
*/
vbo_exec_init( ctx );
#if FEATURE_dlist
- vbo_save_init( ctx );
+ if (ctx->API == API_OPENGL)
+ vbo_save_init( ctx );
#endif
_math_init_eval();
@@ -233,7 +234,8 @@ void _vbo_DestroyContext( GLcontext *ctx )
vbo_exec_destroy(ctx);
#if FEATURE_dlist
- vbo_save_destroy(ctx);
+ if (ctx->API == API_OPENGL)
+ vbo_save_destroy(ctx);
#endif
FREE(vbo);
ctx->swtnl_im = NULL;
diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c
index 0ccbb423831..365419d44fa 100644
--- a/src/mesa/vbo/vbo_exec_api.c
+++ b/src/mesa/vbo/vbo_exec_api.c
@@ -958,6 +958,7 @@ _vbo_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
vbo_MultiTexCoord4f(target, s, t, r, q);
}
+
void GLAPIENTRY
_vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
{
@@ -966,7 +967,63 @@ _vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params)
void GLAPIENTRY
+_vbo_Materialf(GLenum face, GLenum pname, GLfloat param)
+{
+ vbo_Materialfv(face, pname, &param);
+}
+
+
+void GLAPIENTRY
_vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
vbo_VertexAttrib4fARB(index, x, y, z, w);
}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib1f(GLuint indx, GLfloat x)
+{
+ vbo_VertexAttrib1fARB(indx, x);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values)
+{
+ vbo_VertexAttrib1fvARB(indx, values);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y)
+{
+ vbo_VertexAttrib2fARB(indx, x, y);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values)
+{
+ vbo_VertexAttrib2fvARB(indx, values);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z)
+{
+ vbo_VertexAttrib3fARB(indx, x, y, z);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values)
+{
+ vbo_VertexAttrib3fvARB(indx, values);
+}
+
+
+void GLAPIENTRY
+_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values)
+{
+ vbo_VertexAttrib4fvARB(indx, values);
+}
diff --git a/src/mesa/x86-64/xform4.S b/src/mesa/x86-64/xform4.S
index 805969127db..e52a6118c31 100644
--- a/src/mesa/x86-64/xform4.S
+++ b/src/mesa/x86-64/xform4.S
@@ -30,6 +30,7 @@
.align 16
.globl _mesa_x86_64_cpuid
+.hidden _mesa_x86_64_cpuid
_mesa_x86_64_cpuid:
pushq %rbx
movl (%rdi), %eax
@@ -46,6 +47,7 @@ _mesa_x86_64_cpuid:
.align 16
.globl _mesa_x86_64_transform_points4_general
+.hidden _mesa_x86_64_transform_points4_general
_mesa_x86_64_transform_points4_general:
/*
* rdi = dest
@@ -121,6 +123,7 @@ p4_constants:
.text
.align 16
.globl _mesa_x86_64_transform_points4_3d
+.hidden _mesa_x86_64_transform_points4_3d
/*
* this is slower than _mesa_x86_64_transform_points4_general
* because it ensures that the last matrix row (or is it column?) is 0,0,0,1
@@ -192,6 +195,7 @@ p4_3d_done:
.align 16
.globl _mesa_x86_64_transform_points4_identity
+.hidden _mesa_x86_64_transform_points4_identity
_mesa_x86_64_transform_points4_identity:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -220,6 +224,7 @@ p4_identity_done:
.align 16
.globl _mesa_3dnow_transform_points4_3d_no_rot
+.hidden _mesa_3dnow_transform_points4_3d_no_rot
_mesa_3dnow_transform_points4_3d_no_rot:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -284,6 +289,7 @@ p4_3d_no_rot_done:
.align 16
.globl _mesa_3dnow_transform_points4_perspective
+.hidden _mesa_3dnow_transform_points4_perspective
_mesa_3dnow_transform_points4_perspective:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -350,6 +356,7 @@ p4_perspective_done:
.align 16
.globl _mesa_3dnow_transform_points4_2d_no_rot
+.hidden _mesa_3dnow_transform_points4_2d_no_rot
_mesa_3dnow_transform_points4_2d_no_rot:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -405,6 +412,7 @@ p4_2d_no_rot_done:
.align 16
.globl _mesa_3dnow_transform_points4_2d
+.hidden _mesa_3dnow_transform_points4_2d
_mesa_3dnow_transform_points4_2d:
movl V4F_COUNT(%rdx), %ecx /* count */